メインコンテンツまでスキップ

6.1.1. PBES1 Encryption Operation (PBES1 暗号化操作)

6.1.1. PBES1 Encryption Operation (PBES1 暗号化操作)

PBES1 の暗号化操作は、以下のステップから構成されます。これらは、パスワード P の下でメッセージ M を暗号化して暗号文 C を生成します:

  1. セクション4で概説されているように、8オクテットのソルト S と反復回数 c を選択します。

  2. PBKDF1 鍵導出関数 (セクション 5.1) を、パスワード P、ソルト S、および反復回数 c に適用して、長さ16オクテットの導出鍵 DK を生成します:

    DK = PBKDF1 (P, S, c, 16)
  3. 導出鍵 DK を、DK の最初の8オクテットから構成される暗号化鍵 K と、次の8オクテットから構成される初期化ベクトル IV に分離します:

    K   = DK<0..7>
    IV = DK<8..15>
  4. M とパディング文字列 PS を連結してエンコードされたメッセージ EM を形成します:

    EM = M || PS

    ここで、パディング文字列 PS は、8-(||M|| mod 8) オクテットから構成され、各オクテットの値は 8-(||M|| mod 8) です。パディング文字列 PS は以下のステートメントのいずれかを満たします:

    PS = 01, if ||M|| mod 8 = 7 ;
    PS = 02 02, if ||M|| mod 8 = 6 ;
    ...
    PS = 08 08 08 08 08 08 08 08, if ||M|| mod 8 = 0.

    エンコードされたメッセージの長さ (オクテット単位) は8の倍数となり、エンコードされたメッセージからメッセージ M を明確に回復することが可能となります (このパディング規則は RFC 1423 [RFC1423] から取られています)。

  5. エンコードされたメッセージ EM を、暗号化鍵 K と初期化ベクトル IV の下で、CBC モードの基礎となるブロック暗号 (DES または RC2) で暗号化して暗号文 C を生成します。DES の場合、鍵 K はパリティビットを無視した56ビット DES 鍵の64ビットエンコーディングと見なされるべきです ([NIST46] を参照)。RC2 の場合、"effective key bits" (有効鍵ビット) は64ビットであるべきです。

  6. 暗号文 C を出力します。

ソルト S と反復回数 c は、AlgorithmIdentifier 値で復号化を実行する当事者に伝達される場合があります (Appendix A.3 を参照)。