暗号
PBKDF2
別称: Password-Based KDF 2, PKCS #5 v2.1
定義
PKCS #5 / RFC 8018 で定義されたパスワードベースの鍵導出関数で、設定可能な反復回数とソルトを用いて擬似乱数関数を繰り返し適用する。
PBKDF2(Password-Based Key Derivation Function 2)は PKCS #5 v2.1 / RFC 8018 で定義され、パスワードとソルトに対して通常 HMAC-SHA-256 や HMAC-SHA-512 などの擬似乱数関数を設定回数だけ繰り返し適用し、暗号鍵を導出します。反復による計算遅延とユーザーごとのソルトにより、事前計算テーブルや総当たり攻撃のコストが大きく増加します。PBKDF2 は WPA2、iOS/macOS、TLS、LUKS、1Password など幅広く採用され、FIPS 認証も維持していますが、CPU バウンドであるため、メモリ消費型関数と比較すると GPU/ASIC 攻撃者に有利です。新規システムでは Argon2id や scrypt が望ましく、2025 年時点で OWASP は PBKDF2-HMAC-SHA-256 で 60 万回以上の反復を推奨しています。
例
- WPA2 は SSID とパスフレーズに対し PBKDF2-HMAC-SHA-1(4096 回反復)を用いて PMK を導出する。
- 1Password や LastPass は歴史的に PBKDF2-HMAC-SHA-256 でマスターパスワードから保管庫鍵を導出してきた。
関連用語
鍵導出関数(KDF)
パスワードや共有秘密、マスター鍵などの秘密入力から、1 つまたは複数の強力な暗号鍵を導出する暗号関数。
Argon2
2015 年の Password Hashing Competition で優勝し、RFC 9106 に標準化された、メモリ消費型の最新パスワードハッシュ関数兼 KDF。
scrypt
2009 年に Colin Percival が設計し RFC 7914 で標準化された、メモリ消費型のパスワードベース KDF。パスワードハッシュや一部の暗号通貨の Proof-of-Work に利用される。
bcrypt
Blowfish 暗号の鍵スケジューリングを基にした適応的パスワードハッシュ関数で、1999 年に Provos と Mazières が設計した。
HMAC
RFC 2104 と FIPS 198-1 で定義された、暗号学的ハッシュ関数を土台とする鍵付きメッセージ認証コード(MAC)構造。
ソルト
ハッシュ計算前にパスワードへ付加する一意のランダム値で、レインボーテーブルを無効化し各ユーザーのハッシュを別物にする仕組み。