CyberGlossary

暗号

鍵導出関数(KDF)

別称: KDF, 鍵導出

定義

パスワードや共有秘密、マスター鍵などの秘密入力から、1 つまたは複数の強力な暗号鍵を導出する暗号関数。

鍵導出関数(Key Derivation Function、KDF)は、パスワード、Diffie-Hellman 共有秘密、既存のマスター鍵などの秘密素材から、固定長で暗号学的に強い鍵を 1 つ以上生成する関数です。KDF は大きく 2 種類に分かれ、パスワードベース KDF は意図的に遅くメモリ消費型に設計されています(Argon2id、scrypt、bcrypt、PBKDF2 など)。一方、高エントロピー入力向けの extract-and-expand 型 KDF として HKDF(RFC 5869)があり、TLS 1.3、Signal、WireGuard、Noise などで HMAC を用いて 1 つの共有秘密から複数のセッション鍵を導出するのに広く使われています。優れた KDF はソルトと任意のコンテキスト文字列(info)を扱い、派生鍵のドメイン分離を実現することで、異なる用途間で鍵が関連付けられたり再利用されたりするのを防ぎます。

  • TLS 1.3 はハンドシェイクとトラフィックの秘密値を HKDF-Extract+Expand で導出する。
  • Argon2id はユーザーのパスフレーズから 32 バイトの AES 鍵を導出し、暗号化された保管庫の解錠に使う。

関連用語