A.2. PBKDF2
A.2. PBKDF2
オブジェクト識別子 id-PBKDF2 は、PBKDF2 鍵導出関数 (セクション 5.2) を識別します。
id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}
AlgorithmIdentifier でこの OID に関連付けられる parameters フィールドは、PBKDF2-params 型を持つべきです:
PBKDF2-params ::= SEQUENCE {
salt CHOICE {
specified OCTET STRING,
otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}
},
iterationCount INTEGER (1..MAX),
keyLength INTEGER (1..MAX) OPTIONAL,
prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT
algid-hmacWithSHA1 }
PBKDF2-params 型のフィールドは以下の意味を持ちます:
-
salt - ソルト値またはソルト値のソースを指定します。オクテット文字列、または PBKDF2-SaltSources セット内の OID を持つアルゴリズム ID のいずれかであるべきです。これは PKCS #5 の将来のバージョンのために予約されています。
salt-source アプローチは、アルゴリズム ID 内のパラメータ、アプリケーションデータ、またはその両方の関数として、ソルト値がどのように生成されるかを示すことを意図しています。たとえば、セクション 4.1 で提案されているように、導出鍵に関する詳細情報を指定する構造のエンコーディングからソルト値が生成されることを示す可能性があります。情報の一部は、暗号化アルゴリズム ID などの他の場所で運ばれる可能性があります。ただし、そのような機能は PKCS #5 の将来のバージョンに延期されています。
このバージョンでは、アプリケーションは、specified 代替のソルト値の特定の解釈を選択することで、セクション 4.1 で言及された利点を達成できます。
PBKDF2-SaltSources ALGORITHM-IDENTIFIER ::= { ... } -
iterationCount - 反復回数を指定します。許可される最大反復回数は実装に依存します。実装プロファイルがさらに境界を制約する可能性があります。
-
keyLength - オプションのフィールドで、導出鍵の長さ (オクテット単位) です。許可される最大鍵長は実装に依存します。実装プロファイルがさらに境界を制約することが期待されます。このフィールドは便宜上提供されているだけで、鍵長は暗号的に保護されていません。与えられたソルトに対して異なる鍵長を持つ操作間の相互作用について懸念がある場合 (セクション 4.1 を参照)、ソルトは異なる鍵長を区別するべきです。
-
prf - 基礎となる疑似ランダム関数を識別します。PBKDF2-PRFs セット内の OID を持つアルゴリズム ID であるべきです。このバージョンの PKCS #5 では、id-hmacWithSHA1 (Appendix B.1.1 を参照) およびアプリケーションによって定義されたその他の OID から構成されるべきです。
PBKDF2-PRFs ALGORITHM-IDENTIFIER ::= {
{NULL IDENTIFIED BY id-hmacWithSHA1},
{NULL IDENTIFIED BY id-hmacWithSHA224},
{NULL IDENTIFIED BY id-hmacWithSHA256},
{NULL IDENTIFIED BY id-hmacWithSHA384},
{NULL IDENTIFIED BY id-hmacWithSHA512},
{NULL IDENTIFIED BY id-hmacWithSHA512-224},
{NULL IDENTIFIED BY id-hmacWithSHA512-256},
...
}
デフォルトの疑似ランダム関数は HMAC-SHA-1 です:
algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::=
{algorithm id-hmacWithSHA1, parameters NULL : NULL}