Hash
從散列輸入計算 HMAC 是個好主意嗎?
原始HMAC算法如下:
H(K XOR oppad || H(K XOR ipad || text))
如果
text
將替換為H(text)
? 會削弱HMAC算法嗎?
如果
text
將替換為H(text)
? 會削弱HMAC算法嗎?是的。它使對雜湊函式的衝突攻擊適用於 MAC,而 HMAC 通常不是這種情況。你可以找到一對 $ (m, m’) $ 該雜湊值相同,獲取其中一個的 MAC 並將其移動到另一個。
這意味著您修改後的 HMAC 構造對於散列函式將是不安全的 $ H $ 不是抗碰撞的,例如MD5。即使普通的 HMAC-MD5仍然被認為是安全的。事實上,任何具有足夠小的輸出大小而缺乏抗碰撞性的散列函式在這個修改後的 HMAC 中使用都是不安全的。
如果您使用抗衝突雜湊函式,例如 SHA-2 雜湊函式之一(特別是 SHA-256 和 SHA-512)或 SHA-3,那麼修改後的 HMAC 應該仍然是安全的。