読み方 : ピービーケーディーエフツー
PBKDF2【Password-Based Key Derivation Function 2】
概要

鍵導出関数は、パスワードなどの秘密の情報を入力値として受け取り、ハッシュ関数などを繰り返し適用して規則性のない値を生成する関数である。もとはパスワードなどから共通鍵暗号の暗号鍵を導出するための計算手法として考案されたためこのような名称になっているが、現代ではパスワードをハッシュ化して安全に保存する目的でもよく用いられる。
PBKDF2の動作は、パスワード本体、ソルト値、疑似乱数関数(PRF:Pseudo-Random Function)、反復回数、出力鍵長の5つのパラメータで制御される。パスワードとソルト値をもとに、指定の関数を反復回数だけ繰り返し適用し、指定された固定長のハッシュ値を最終的な出力値として得る。
反復回数を増やすほど計算に時間がかかり、攻撃者による高速な試行を困難にする。実用上は数千回といった回数が指定される。ソルト値はランダムに生成される毎回異なる値で、同じパスワードでも計算結果が毎回異なるようにする。複数の利用者が同じパスワードを使用していても、生成されるハッシュ値は異なるものになる。疑似乱数関数はHMAC-SHA256などを用いることが多い。
PBKDF2は前身の「PBKDF1」の改良版で、1990年代に当時の米RSAラボラトリーズ(RSA Laboratories)社が策定した「PKCS #5」標準の一部として定義された。2000年にRFC 2898として公開され、2017年にRFC 8018として改訂された。Webサービスやオペレーティングシステム(OS)のパスワード管理、ディスク暗号化ツールでの鍵生成など幅広い用途で使われている。同種の技術には「bcrypt」や「Argon2」などがある。