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

2.13. 鍵素材の生成

2.13. 鍵素材の生成​

IKE SA のコンテキストでは, 4 つの暗号アルゴリズムがネゴシエートされます: 暗号化アルゴリズム, 整合性保護アルゴリズム, Diffie-Hellman グループ, および疑似乱数関数 (PRF) です。PRF は, IKE SA および Child SA で使用されるすべての暗号アルゴリズムの鍵素材を構築するために使用されます。

各暗号化アルゴリズムおよび整合性保護アルゴリズムは固定サイズの鍵を使用し, その固定サイズの任意のランダムに選択された値が適切な鍵として機能すると仮定します。可変長鍵を受け入れるアルゴリズムの場合, 固定鍵サイズをネゴシエートされた暗号変換の一部として指定しなければなりません (MUST) (鍵長変換属性の定義についてはセクション 3.3.5 参照)。すべての値が有効な鍵ではないアルゴリズム (鍵パリティを持つ DES や 3DES など) の場合, 任意の値から鍵を派生させるアルゴリズムは, その暗号変換によって指定されなければなりません (MUST)。

ハッシュメッセージ認証コード (HMAC) に基づく整合性保護関数の場合, 固定鍵サイズは基となるハッシュ関数の出力サイズです。

PRF は任意の長さの鍵を受け入れますが, 推奨鍵サイズを持つと仮定されます。推奨鍵サイズは, SK_d, SK_pi, SK_pr の長さとして使用されなければなりません (MUST) (セクション 2.14 参照)。HMAC 構造に基づく PRF の場合, 推奨鍵サイズは基となるハッシュ関数の出力長に等しいです。その他のタイプの PRF は, その推奨鍵サイズを指定しなければなりません (MUST)。

鍵素材は常に, ネゴシエートされた PRF アルゴリズムの出力として派生されます。必要な鍵素材の量が PRF の出力サイズより大きくなる可能性があるため, PRF は反復的に使用されます。用語 "prf+" は, "prf" と呼ばれる疑似乱数関数への入力に基づいて疑似乱数ストリームを出力する関数を表します。

以下において, | は連結を示します。prf+ は次のように定義されます:

prf+ (K,S) = T1 | T2 | T3 | T4 | ...

ここで: T1 = prf (K, S | 0x01) T2 = prf (K, T1 | S | 0x02) T3 = prf (K, T2 | S | 0x03) T4 = prf (K, T3 | S | 0x04) ...

これは, 必要なすべての鍵を計算するために必要なすべての素材が prf+ から出力されるまで続きます。鍵は, 境界を考慮せずに出力文字列から取得されます (たとえば, 必要な鍵が 256 ビットの Advanced Encryption Standard (AES) 鍵と 160 ビットの HMAC 鍵であり, prf 関数が 160 ビットを生成する場合, AES 鍵は T1 および T2 の先頭から取得され, HMAC 鍵は T2 の残りと T3 の先頭から取得されます)。

各 prf 関数の末尾に連結される定数は単一のオクテットです。prf+ 関数は, prf 関数出力の 255 倍のサイズを超えては定義されません。