Hmac
懷疑HMAC可能受到的攻擊
我有一個關於 HMAC 安全性的問題:
- 如果我知道種子的值和 HMAC 的值,但我不知道密鑰,那麼我就無法進行生日攻擊,因為我無法生成真實的消息。我必須至少看到 $ 2^{\frac{n}{2}+1} $ 消息有 50% 的機率找到碰撞。
- 但是,如果我有種子、HMAC 的值和密鑰,會發生什麼?
MAC 的標準攻擊模型是,不知道密鑰的攻擊者被允許向 MAC 詢問他/她想要的任何消息,如果稍後展示不同的消息及其 MAC,其機率大大優於 $ 2^{-n} $ 是正確的。
研究生日問題告訴我們,之後 $ 2^{\frac{n}{2}+1} $ 隨機消息,兩條消息具有相同 MAC 的機率很好(優於 86%)。但是,對於理想的 MAC,這對攻擊者沒有幫助,因為在詢問兩者的 MAC 之前,他/她不知道哪些消息會發生衝突,這會使這些消息無效,因為它們有助於成功的攻擊。如果底層散列函式具有合適的屬性,我們有證據表明這適用於 HMAC;參見 Mihir Bellare,NMAC 和 HMAC 的新證明:沒有碰撞阻力的安全性,密碼學雜誌,2015 年(最初在Crypto 2006 程序中)。
使用密鑰,攻擊任何 MAC 都是微不足道的:只需計算正確的 MAC。
如果由於某種原因我們改變了攻擊模型並考慮到對手想要展示具有相同 (H)MAC 的不同消息,那麼了解密鑰會帶來雙重幫助:
- 攻擊者不再需要詢問 MAC;她/他可以計算它們,大概以更高的速率並且不會引起懷疑。
- 在 HMAC 的特定情況下,這可能允許利用底層雜湊的弱點(如果有的話) $ \operatorname H $ ; 具體來說,在了解密鑰的情況下 $ K $ , 或許可以找到 $ M $ 和 $ M’\ne M $ 和 $ \operatorname H\big((K\oplus\text{ipad})|M\big)=\operatorname H\big((K\oplus\text{ipad})|M’\big) $ , 它將遵循 $ \operatorname{HMAC-H}(K,M)=\operatorname{HMAC-H}(K,M’) $ . 那將是微不足道的 $ \operatorname H=\operatorname{MD5} $ ,並且可能為 $ \operatorname H=\operatorname{SHA-1} $ , 考慮到這些雜湊的弱點(包括允許以任何已知前綴開頭的衝突消息,對於 $ \operatorname{MD5} $ , 可行的 $ \operatorname{SHA-1} $ ).