PBKDF2
PBKDF2(Password-Based Key Derivation Function 2)はPKCS#5で標準化されたKDFであり、HMACの反復によりパスワードから鍵を導出する。パスワードハッシュと鍵導出で広く使われる。
目的
低エントロピーのパスワードから高エントロピーの鍵を導出し、反復回数によって総当たり攻撃のコストを倍増させる。
メカニズム
DK = T1 || T2 || … ここでTi = U1 ⊕ … ⊕ Uc、U1 = HMAC(P, salt || i)、Uj = HMAC(P, U_{j-1})。反復回数cは通常100000以上である。CPUハードのみで、GPU/ASICの並列化には抵抗しない。
ユースケース
- Wi-FiのWPA2/3鍵導出
- iOS/Androidのパスワードバックアップ
- 1Passwordでの鍵導出
- PKCS#12の鍵保管
例
- 入力
password, salt, c=600000Output256-bit derived keyOWASP 2023 recommends ≥ 600000
よくあるエラー
- Iteration count too low (e.g., 1000)
- Use at least 600000 (OWASP 2023)
関連用語
scrypt
scrypt は Colin Percival が設計したメモリーハードな鍵導出関数(KDF)である。大きなメモリ要求によって GPU/ASIC による並列総当たり攻撃を妨げ、パスワードハッシュや鍵導出に利用される。 用語集
Key Derivation
鍵導出(Key Derivation)は、低エントロピーのパスワードや高エントロピーのマスター鍵から暗号鍵を生成するプロセスである。KDF(PBKDF2、scrypt、Argon2 など)を使い、総当たり攻撃のコストを引き上げる。 用語集
Salt
ソルトとは、パスワードのハッシュ化時に加えるランダムな値のことで、同一パスワードでも異なるハッシュを生成させ、レインボーテーブルやパスワードの一致検出を無効化する。 用語集
HMAC
HMAC(Hash-based Message Authentication Code)はハッシュ関数と秘密鍵を組み合わせたメッセージ認証コードであり、完全性と真正性を提供する。 用語集