UMAC:今天使用到什麼程度?
受到 Encrypt-then-MAC 問題的啟發。最明顯的消息身份驗證程式碼可能是HMAC或RFC 2104,它基本上是輸入的散列,帶有密鑰的 xor ……你明白了。
但是,我還發現了UMAC,它聽起來很像一個散列函式/查找表,可以通過“一些秘密過程”來選擇一個合適的散列以在 MAC 中使用。
以這種方式秘密選擇算法是否安全?UMAC 中唯一的秘密是正在使用的算法,還是它像 HMAC 那樣結合了一些已知的秘密?換句話說,它是帶有隨機 H 的 HMAC 嗎?
最後,這是在任何地方使用嗎?HMAC 有自己的 RFC,而 UMAC 似乎還沒有被很好地採用。
UMAC 在RFC 4418中有詳細描述。
當 RFC 談到“秘密選擇”時,它的真正意思是“這裡涉及到一個秘密密鑰”。UMAC 與通用散列一起工作,它可以被視為散列函式家族,以及選擇我們正在談論的散列函式的鍵。術語“雜湊函式”在這裡可能有點令人困惑,因為這與 SHA-256 完全不同。如果將這些“雜湊函式”單獨留在野外,這些“雜湊函式”將非常弱。
所以 UMAC 是這樣工作的:
- 有一個nonce只能使用一次;對於每條新消息,必須選擇一個新的 nonce 值(這非常重要)。
- 有兩個鍵 $ K_1 $ 和 $ K_2 $ . $ K_1 $ 選擇通用雜湊函式 $ h $ 在它的家庭中,而 $ K_2 $ 用於可以對塊進行操作的合適函式中;即,AES 或其他分組密碼。
- 輸入消息被處理 $ h $ ,以及的輸出 $ h $ 然後通過 XORing 加密它 $ \mathrm{AES}{K_2} $ (隨機數)。
這個想法是雜湊函式 $ h $ (由選擇 $ K_1 $ ) 仍然被最終加密“隱藏”。多虧了隨機數,並假設最終的加密是體面的,連續 MAC 化的消息不會洩露任何資訊 $ h $ 給攻擊者。即使在非常輕量級的情況下,這也是有效的 $ h $ ,比傳統的散列函式快得多。
UMAC 本身並沒有太多使用,因為它是最近才使用的,而且 nonce 是硬性要求,非常類似於分組密碼的 IV 管理。HMAC 更容易,因為它更難出錯。然而,當與加密集成時,UMAC 或類似 UMAC 的系統非常流行,因為可以共享 nonce/IV 要求。例如,這就是OCB和GCM的工作方式。