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

1. Introduction (はじめに)

1. Introduction (はじめに)

鍵導出関数 (key derivation function, KDF) は, 暗号システムの基本的かつ不可欠な構成要素です。その目標は, 初期鍵材料のソースから1つ以上の暗号学的に強力な秘密鍵を導出することです。

この文書は, さまざまなプロトコルやアプリケーションの構成要素として使用でき, すでに [IKEv2]、[PANA]、[EAP-AKA] を含むいくつかの IETF プロトコルで使用されている, HKDF という名前の単純な HMAC ベース [HMAC] の KDF を規定します。その目的は, 将来のプロトコルやアプリケーションでの採用を促進し, 複数の KDF メカニズムの増殖を抑制するために, この KDF を一般的な方法で文書化することです。これは既存のプロトコルを変更することを求めるものではなく, この KDF を使用する既存の仕様を変更または更新するものでもありません。

HKDF は, "抽出-そして-拡張" (extract-then-expand) パラダイムに従います。ここで, KDF は論理的に2つのモジュールで構成されます。第1段階は入力鍵材料を受け取り, そこから固定長の疑似ランダム鍵 K を"抽出" (extract) します。第2段階は鍵 K を複数の追加の疑似ランダム鍵 (KDF の出力) に"拡張" (expand) します。

多くのアプリケーションでは, 入力鍵材料は必ずしも均一に分布しているわけではなく, 攻撃者はそれについて何らかの部分的な知識を持っている可能性があります (たとえば, 鍵交換プロトコルによって計算された Diffie-Hellman 値) または, 部分的に制御している可能性さえあります (一部のエントロピー収集アプリケーションのように)。したがって, "抽出"段階の目標は, 入力鍵材料の分散している可能性のあるエントロピーを, 短いが暗号学的に強力な疑似ランダム鍵に"集中"させることです。一部のアプリケーションでは, 入力がすでに良好な疑似ランダム鍵である場合があります。これらの場合, "抽出"段階は必要なく, "拡張"部分のみを使用できます。

第2段階は, 疑似ランダム鍵を所望の長さに"拡張"します。出力鍵の数と長さは, 鍵が必要とされる特定の暗号アルゴリズムに依存します。

NIST Special Publication 800-56A [800-56A]、NIST Special Publication 800-108 [800-108]、IEEE Standard 1363a-2004 [1363a] などの既存の KDF 仕様の中には, 第2段階 (疑似ランダム鍵の拡張) のみを考慮しているか, "抽出"段階と"拡張"段階を明示的に区別していないものがあり, しばしば設計上の欠点につながっていることに注意してください。この仕様の目標は, 基礎となるハッシュ関数についての仮定を最小限に抑えながら, 幅広い KDF 要件に対応することです。"抽出-そして-拡張"パラダイムは, この目標をよくサポートしています (設計の根拠に関する詳細については, [HKDF-paper] を参照してください)。