Authentication

MAC可以用作HMAC嗎?

  • March 5, 2020

我現在正在閱讀一本資訊安全書籍,一個令人困惑的問題擺在我面前:

“你能把 MAC 用作 HMAC 嗎?也就是說,MAC 是否滿足 HMAC 所滿足的相同屬性?”

然後,本書繼續給出有關如何通過涉及密鑰 K 的給定對稱分組密碼的 CBC 模式計算 MAC 的提示,並考慮攻擊者何時知道 HMAC 和 MAC 的 K。

這是令人困惑的部分:MAC 不只是從 MAC 算法創建的程式碼,而 HMAC 是 MAC 算法的一種嗎?當 MAC 和 HMAC 非常相似(對於新手)時,我看不出這些提示中的任何一個如何適用於這個問題。

我的這個想法是對的嗎?

HMAC 是 MAC 的一種。MAC 的輸出稱為“標籤”。並非所有 MAC(算法)都是 HMAC。

對於知道密鑰的人來說,MAC 不需要是單向的或抗碰撞的。然而,HMAC 繼承了底層散列函式的單向性和抗碰撞性。

提到基於 CBC 的 MAC 作為提示,因為查找任何給定標籤值的原像值幾乎是微不足道的。這也使得碰撞攻擊變得微不足道。

“你能把 MAC 用作 HMAC 嗎?也就是說,MAC 是否滿足 HMAC 所滿足的相同屬性?”

不,只有 HMAC 是 HMAC。當然,任何常見的 MAC 都可以用作與 HMAC 相同的角色,因為 HMAC 畢竟只是一個 MAC。

但是,這裡的術語可能會令人困惑。HMAC 是一種特定的算法,但是 MAC 可以有兩種不同的含義:MAC 可以是消息身份驗證程式碼的通用術語,可以表示從分組密碼建構的 MAC。不幸的是,後者沒有專門的術語或首字母縮寫詞。

所以基本上我們剩下以下樹:

                   MAC
                 /     \   ...
               MAC       ?
             /   \      /   \ 
          CMAC   CBC-  HMAC  KMAC
                 MAC

這根本沒有意義。

最好將第二個 MAC 稱為“基於密碼的 MAC”並稱為“?” 然後是“基於雜湊的 MAC”。

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