7. HKDF- and SHA-Based HMACs (HKDFとSHAベースのHMAC)
以下は、(1) SHAベースのHMACと(2) HMACベースの抽出拡張鍵導出関数についての簡単な説明と、より完全な説明とコードへのポインタです。HKDFとHMACはどちらもHugo Krawczykによって考案されました。
7.1. SHAベースのHMAC (SHA-Based HMACs)
HMACは、[RFC2104]で説明されているように、ハッシュ関数を使用して鍵付きMAC (メッセージ認証コード Message Authentication Code) を計算する方法です。最終ハッシュを生成するために、入力テキストと混合する鍵を使用します。
また、本書で説明されているSHAアルゴリズムのいずれかに基づいてHMACを実行するためのサンプルコードが、下記の第8.3節で提供されています。[RFC2104]にあるサンプルコードは、指定されたテキストサイズの観点から書かれていました。SHAは任意のビット数の観点から定義されているため、サンプルHMACコードは、HMACへのテキスト入力が任意の数のオクテットとビットを持つことを許可するように書かれています。固定長インターフェースも提供されています。
7.2. HKDF
HKDFは特定の鍵導出関数 (Key Derivation Function, KDF) であり、つまり、KDFが1つ以上の暗号学的に強力な秘密鍵を導出する初期鍵材料の関数です。[RFC5869]で説明されているHKDFは、HMACに基づいています。
HKDFのサンプルコードは、下記の第8.4節で提供されています。