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

5.1. PBKDF1

5.1. PBKDF1

PBKDF1 は、MD2 [RFC1319]、MD5 [RFC1321]、または SHA-1 [NIST180] であるべきハッシュ関数を適用して鍵を導出します。導出鍵の長さは、ハッシュ関数出力の長さによって制限されます。これは、MD2 と MD5 では16オクテット、SHA-1 では20オクテットです。PBKDF1 は、PKCS #5 v1.5 [PKCS5_15] の鍵導出プロセスと互換性があります。

PBKDF1 は、生成される鍵が一部のアプリケーションに対して十分に大きくない可能性があるため、既存のアプリケーションとの互換性のためにのみ推奨されます。

PBKDF1 (P, S, c, dkLen)

Options (オプション):

  • Hash - 基礎となるハッシュ関数

Input (入力):

  • P - パスワード、オクテット文字列
  • S - ソルト、オクテット文字列
  • c - 反復回数、正の整数
  • dkLen - 導出鍵の意図された長さ (オクテット単位)、正の整数、MD2 または MD5 の場合は最大16、SHA-1 の場合は20

Output (出力):

  • DK - 導出鍵、dkLen オクテット文字列

Steps (手順):

  1. dkLen が MD2 と MD5 で16より大きい場合、または SHA-1 で20より大きい場合、"derived key too long" (導出鍵が長すぎます) を出力して停止します。

  2. 基礎となるハッシュ関数 Hash を c 回反復して、パスワード P とソルト S の連結に適用し、その後最初の dkLen オクテットを抽出して導出鍵 DK を生成します:

    T_1 = Hash (P || S) ,
    T_2 = Hash (T_1) ,
    ...
    T_c = Hash (T_{c-1}) ,
    DK = T_c<0..dkLen-1>
  3. 導出鍵 DK を出力します。