鍵導出の処理
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/08 06:33 UTC 版)
鍵導出関数PBKDF2は、5つの引数を持つ。 DK = PBKDF2(PRF, Password, Salt, c, dkLen) ここで、 PRF は、出力値の長さがhLen であり、2つの引数を持つ疑似乱数関数 (HMACなど) Password は、鍵導出のためのマスターパスワード Salt は、ソルト c は、ストレッチング回数 dkLen は、導出鍵のビット長 DK は、導出鍵 である。 hLen ビットのブロックTiは、次式で求められる。ただし、+は、文字列連結を意味する。 DK = T1 + T2 + ... + Tdklen/hlenTi = F(Password, Salt, c, i) 関数F は、PRFのc 回のXOR (^) の繰り返しである。 F(Password, Salt, c, i) = U1 ^ U2 ^ ... ^ Uc 最初のPRFは、Password を鍵とし、ビッグエンディアンの32ビット整数i と連結したSalt を入力値とする。ただし、i は1始まりとする。次回以降は、Password を鍵とし、前回のPRFの出力値を入力値とする。 U1 = PRF(Password, Salt + INT_32_BE(i))U2 = PRF(Password, U1)...Uc = PRF(Password, Uc-1) 例えば、WPA2では、 DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256) を用いている。 なお、PBKDF1は、PBKDF2より単純な鍵導出関数である。最初のU (PBKDF1ではTとされる) は、PRF(Password + Salt)によって生成され、次回以降は、単にPRF(Uprevious)である。導出鍵は、最終的に算出されたハッシュ値の最初のdkLen ビットとする。このため、PBKDF1の導出鍵の長さは、hLen ビット以下に制限される。
※この「鍵導出の処理」の解説は、「PBKDF2」の解説の一部です。
「鍵導出の処理」を含む「PBKDF2」の記事については、「PBKDF2」の概要を参照ください。
- 鍵導出の処理のページへのリンク