用語集

PBKDF2 とは?

PBKDF2(Password-Based Key Derivation Function 2)は RFC 8018 で定義された鍵導出アルゴリズムで、通常 HMAC-SHA-256 の擬似ランダム関数をパスワードとソルトに反復的に適用し、ブルートフォースに対して計算コストが高い導出鍵を生成します。

別名: Password-Based Key Derivation Function 2, PBKDF, RFC 8018

PBKDF2 は HMAC(Hash-based Message Authentication Code)をパスワードとランダムソルト値の組み合わせに繰り返し適用することで機能します。イテレーション数は何回この操作を実行するかを制御します。イテレーションが多いほど、鍵導出の試行ごとの CPU 時間が増え、パスワードを推測しようとする攻撃者のコストを直接増大させます。

ソルトは各鍵導出操作に固有のランダム値です。異なるソルトを使用すると同じパスワードでも異なる導出鍵が生成されるため、事前計算されたルックアップ攻撃(レインボーテーブル)を防ぎます。ソルトは秘密である必要はありません。通常、導出鍵や暗号文と共に保存されます。

PBKDF2 は 2000 年に標準化され、特に Web Crypto API を通じてブラウザで広くサポートされています。Argon2 のような新しい KDF は大量のメモリを必要とすることで GPU や ASIC 攻撃への強い耐性を提供しますが、PBKDF2 は Web Crypto API との互換性が不可欠で十分なセキュリティを提供するためにイテレーション数を高く設定できるブラウザベースのアプリケーションには依然として堅実な選択肢です。

Vaulted における PBKDF2 の使われ方

Vaulted はシークレットにパスフレーズを追加する際に、Web Crypto API を通じて PBKDF2 を使用します。実装では HMAC-SHA-256 と 16 バイトのランダムソルトで 100,000 回のイテレーションを使用します。導出された 256 ビット鍵は AES-KW ラッピング鍵として、メインの AES-256-GCM 鍵を暗号化するために使用されます。ソルトはラップされた鍵と共に URL フラグメントに含まれており、受信者がパスフレーズから同じラッピング鍵を再導出できるようにします。