PBKDF2キー導出
パスワードから安全な暗号キーを生成
PBKDF2ドキュメント
PBKDF2 (Password-Based Key Derivation Function 2) は、RFC 8018で定義された暗号標準です。反復ハッシュを通じてパスワードを安全な暗号キーに変換し、ブルートフォース攻撃を計算コスト的に高価にします。
PBKDF2は、WPA2 WiFi暗号化、iOSデータ保護、macOS FileVault、多数のエンタープライズパスワードストレージシステムなど、セキュリティプロトコルで広く採用されています。NIST承認のステータスにより、コンプライアンスが重要なアプリケーションの選択肢となっています。
PBKDF2の仕組み
PBKDF2は、疑似乱数関数 (デフォルトでHMAC-SHA256) を反復適用して導出キーを生成します:
- パスワード、ソルト、イテレーション回数、希望のキー長を入力として受け取る
- パスワードをキー、ソルト+カウンターをメッセージとしてHMACを適用
- 指定されたイテレーション回数だけHMAC操作を繰り返す
- 中間結果を連結して最終的な導出キーを生成
OWASP推奨イテレーション (2023)
Open Web Application Security Project (OWASP) は、ハッシュアルゴリズムの強度に基づいて最小イテレーションガイドラインを提供しています。これらの値は、現代のハードウェア攻撃に対する十分な保護を確保するために調整されています:
| ハッシュアルゴリズム | 最小イテレーション | 推奨 |
|---|---|---|
| PBKDF2-SHA256 | 310,000 | 600,000+ |
| PBKDF2-SHA384 | 210,000 | 500,000+ |
| PBKDF2-SHA512 | 120,000 | 210,000+ |
| PBKDF2-SHA1 | 1,300,000 | 非推奨 |
一般的なユースケース
- ユーザーパスワードからAES/ChaCha20暗号化キーを導出
- 認証システムでのパスワード保存と検証
- マスターパスワードから決定論的キーを生成 (パスワードマネージャー)
- ディスク暗号化とセキュアコンテナのキー導出
KDF比較:PBKDF2 vs Bcrypt vs Argon2
| 機能 | PBKDF2 | Bcrypt | Argon2 |
|---|---|---|---|
| 標準 | RFC 8018 | OpenBSD | RFC 9106 |
| メモリハード | いいえ | 限定的 (4KB) | はい |
| GPU耐性 | 低い | 中程度 | 高い |
| 最適なユースケース | FIPS/NISTコンプライアンス | レガシーシステム | 新しいアプリケーション |
セキュリティベストプラクティス
- 常に16バイト (128ビット) 以上の暗号学的にランダムなソルトを使用
- ソルトは導出キーと一緒に保存 - 秘密ではない
- ハードウェアの進歩に対応するため、毎年イテレーションを増加
- GPU攻撃に対するメモリハード保護が必要な新システムにはArgon2idを検討