HMACの衝突
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/08 06:33 UTC 版)
PBKDF2は、HMACを疑似乱数関数として用いるとき、導出鍵が衝突する異なるパスワードの組を容易に得ることが可能である。HMACの中で用いられるハッシュ関数のブロック長よりパスワードが長いとき、パスワードをハッシュ化したものをパスワードとして用いる。例えば、疑似乱数関数として、HMAC-SHA1を用いると、 パスワード: plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd は、 SHA1 (16進数): 65426b585154667542717027635463617226672a SHA1 (ASCII): eBkXQTfuBqp'cTcar&g* となる。よって、PBKDF2-HMAC-SHA1は、次の2つの異なるパスワード "plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd" "eBkXQTfuBqp'cTcar&g*" から、ソルトやストレッチングに関係なく、同じ鍵を導出する。例えば、 PRF: HMAC-SHA1 ソルト: A009C1A485912C6AE630D3E744240B04 ストレッチング回数: 1,000回 導出鍵の長さ: 16バイト とすると、2つの関数 PBKDF2-HMAC-SHA1("plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd", ...)PBKDF2-HMAC-SHA1("eBkXQTfuBqp'cTcar&g*", ...) は、同じ導出鍵17EB4014C8C461C300E9B61518B9A18Bを生成する。ただし、パスワードのハッシュ値を得るためには、パスワードも得る必要があるため、導出鍵の衝突は、PBKDF2やHMACの脆弱性を示唆するものではない。
※この「HMACの衝突」の解説は、「PBKDF2」の解説の一部です。
「HMACの衝突」を含む「PBKDF2」の記事については、「PBKDF2」の概要を参照ください。
- HMACの衝突のページへのリンク