Hmac

對 MD5 的原像攻擊如何破壞 HMAC-MD5 的安全性?

  • October 19, 2018

在另一個問題的答案中提到了

有可能,現在任何一天,有人可能會想辦法將它們變成原像攻擊,這會危及 HMAC-MD5 的安全性。

提醒: $ \text{HMAC-MD5}_K(x) = \text{MD5}(K \oplus opad \mathbin| \text{MD5}(K \oplus ipad \mathbin| x)) $

鑑於 HMAC 中 MD5 呼叫的輸入包括密鑰,我沒有立即看到這如何變成攻擊。有人可以澄清一下嗎?

我看不到一個假設的對 MD5 進行(第一次)原像攻擊的黑匣子如何變成對 HMAC-MD5 的攻擊,即使該黑匣子能夠毫不費力地找到已知消息中規定的未知位的可接受組合,給定雜湊;例如,如果該框返回(可能:很少,例如少於 3 個)可能的前 128 位消息,給定其餘的消息和散列。

而且我至少確信,對 HMAC-MD5 的密鑰恢復攻擊需要對 MD5 或其輪函式進行多次原像攻擊。

更新的理由:對 HMAC-MD5 的成功攻擊不能通過猜測密鑰來進行 $ K $ 的 $ k $ 對組成 HMAC 的兩個 MD5 中的任何一個使用原像攻擊的位,被隔離採取。

  • 外部 MD5 的輸出(帶有opad的那個)是已知的,但一個不知道的 $ K $ 正面臨著第一個 $ k $ 散列消息的位是未知的,以及另一個 MD5 產生的 128 位(涉及未知 $ K $ 通過至少兩輪,因此基本上是隨機的)。因此,對外部 MD5 的原像攻擊預計會返回大約 $ 2^k $ 解決方案(每個產生的組合 $ K $ 上 $ k $ 位,以及 128 位內部散列的結果)。我們必須淘汰哪些是正確的 $ K $ ,這需要大約 $ 2^{k-1} $ 涉及內部 MD5 和 $ K $ 測試,以檢查它是否與原像的最後 128 位匹配。與蠻力攻擊相比,我們幾乎沒有減少努力。為每個計算完整 HMAC-MD5 的替代策略 $ K $ 在合理的假設下,原像黑盒所建議的並不好,這些 $ K $ 是隨機的,因此有適度的重疊。
  • 內部 MD5 的輸出是未知的,因此不滿足原像攻擊的定義假設。

如果我們將 HMAC-MD5 分解為單獨的回合,我們同樣得出結論,對任何單獨進行的回合的原像攻擊都無法破壞 HMAC,因為該攻擊並不比蠻力更好,或者/並且因為該回合的輸出是未知的。


但是,如果對 MD5(或/及其輪函式)的原像攻擊是可能的,那麼我們對 HMAC-MD5 的安全論點就會消失,謹慎的做法是假裝 HMAC-MD5 被破壞了。

引用自:https://crypto.stackexchange.com/questions/44782