MAC和HMAC有什麼區別?
關於這個問題,HMAC 在 MAC 上提供的“更強的安全屬性”是什麼。我知道 MAC 需要靜脈注射,而 HMAC 不需要。我還了解到,與 HMAC 相比,MAC 可能會透露有關明文的資訊。我的理解對嗎?
MAC 和 HMAC 的其他安全屬性是什麼?
消息驗證碼 (MAC) 是與消息一起發送的一串位。MAC 取決於消息本身和密鑰。沒有人應該能夠在不知道密鑰的情況下計算 MAC。這允許共享密鑰的兩個人向每個人發送消息,而不必擔心其他人會篡改消息。(至少,如果有人篡改了消息,可以通過檢查 MAC 是否正確來檢測。)
術語“MAC”可以指比特串(也稱為“標籤”)或用於生成標籤的算法。
HMAC 是將散列函式(例如 MD5 或 SHA256)轉換為 MAC 的方法。所以 HMAC-MD5 和 HMAC-SHA256 是特定的 MAC 算法,就像 QuickSort 是特定的排序算法一樣。
還有其他構造 MAC 算法的方法;例如,CMAC 是將塊密碼轉換為 MAC 的方法(給我們 CMAC-AES、CMAC-DES、CMAC-PRINCE 等)。
一些 MAC 算法使用 IV。其他的,例如 HMAC,則沒有。
MAC算法應該具有在選擇消息攻擊下不可偽造的安全特性。假設 Alice 和 Bob 共享一個 MAC 密鑰(他們在相互發送消息時使用該密鑰),而 Eve 正在監視他們並看到他們的消息和相應的標籤。Eve 不應該能夠使用她學到的東西來偽造有效的標籤。如果 Eve 可以說服 Bob 發送特定消息,這甚至應該是正確的。
例如,假設 Eve 告訴 Bob 發送消息:
親愛的艾麗絲,
夏娃說“嗨”。
愛,鮑勃
然後 Eve 看到了相應的標籤。Eve 應該仍然無法“偽造”消息的標籤:
親愛的艾麗絲,
請給 Eve 100 美元給我。我會還給你的。
愛,鮑勃
除了在選擇消息攻擊 (UF-CMA) 下不可偽造之外,HMAC 還具有更強的偽隨機函式(PRF) 屬性。這意味著如果 Eve 不知道密鑰,那麼 Bob 的所有 HMAC 標籤看起來就像完全隨機的比特串,即使 Eve 知道甚至選擇Bob 發送的消息。這是一個更強的屬性,因為每個 PRF 都是 UF-CMA(你無法猜出一個很大的隨機數),但並非每個 UF-CMA MAC 算法都是 PRF(對於某些 MAC 算法,所有標籤都可能以 10 開頭零——看起來一點也不隨機,但在不知道密鑰的情況下,其他位仍然很難猜到)。