PBKDF2
鍵導出関数PBKDF2は、5つの引数を持つ。
ここで、
PRF は、出力値の長さがhLen であり、2つの引数を持つ疑似乱数関数 (HMACなど)
Password は、鍵導出のためのマスターパスワード
Salt は、ソルト
c は、ストレッチング回数
dkLen は、導出鍵のビット長
DK は、導出鍵
である。
hLen ビットのブロックTiは、次式で求められる。ただし、+は、文字列連結を意味する。
関数F は、PRFのc 回のXOR (^) の繰り返しである。
最初のPRFは、Password を鍵とし、ビッグエンディアンの32ビット整数i と連結したSalt を入力値とする。ただし、i は1始まりとする。次回以降は、Password を鍵とし、前回のPRFの出力値を入力値とする。
例えば、WPA2では、
を用いている。
なお、PBKDF1は、PBKDF2より単純な鍵導出関数である。最初のU (PBKDF1ではTとされる) は、PRF(Password + Salt)によって生成され、次回以降は、単にPRF(Uprevious)である。導出鍵は、最終的に算出されたハッシュ値の最初のdkLen ビットとする。このため、PBKDF1の導出鍵の長さは、hLen ビット以下に制限される。