Mac

為什麼 UMAC 對通用雜湊函式的輸出進行加密?

  • June 14, 2015

UMAC 使用一個密鑰從一系列通用散列函式中選擇一個隨機散列函式。散列函式的值總是使用另一個密鑰加密,得到的密文成為 MAC 碼。

  • 如果我跳過加密步驟會出現什麼問題?
  • 如果我必須跳過加密步驟(但我可以選擇與 UHASH 不同的通用雜湊函式),通用雜湊函式需要哪些屬性才能使方案安全?

如果我跳過加密步驟會出現什麼問題?

獲得一些消息/UHASH 對的人很容易獲得有關密鑰的足夠資訊以自己生成更多消息/UHASH 對。如果他接收到足夠多的對(並且不需要那麼多),他可以完全恢復整個密鑰(然後為他選擇的任何消息生成 UHASH)。

舉一個簡單的例子,假設攻擊者接收到兩個在單個塊中不同的消息的 UHASH。如果我們從與一條消息不同的塊中呼叫數據 $ (A, B) $ ,第一條消息的 UHASH 是 $ (k_1 - A) \cdot (k_2 - B) + M $ (在哪裡 $ M $ 是消息其餘部分的貢獻,並且 $ k_1, k_2 $ 是該塊的 UHASH 鍵控數據);如果來自第二條消息的數據是 $ (C, D) $ ,那麼第二條消息的 UHASH 是 $ (k_1 - C) \cdot (k_2 - D) + M $ (和 $ M $ 相同,因為我們假設消息的其餘部分是相同的)。

如果我們減去這兩個,攻擊者可以恢復價值 $ (k_1 - A) \cdot (k_2 - B) - (k_1 - C) \cdot (k_2 - D) = AB+CD - (B+D)k_1 - (A+C)k_2 $

他有很大的機率能夠康復 $ k_1, k_2 $ 僅此而已;如果不是,則僅在此塊中不同的第三條消息將使恢復唯一。

這種觀察不難擴展到多個塊中不同的消息集。

如果我必須跳過加密步驟,通用散列函式需要哪些屬性才能使方案安全?

Ricky Demer 已經說過的話,我不能再多補充了。如果你需要一個可以用作 MAC 的功能,它需要具有 MAC 的安全屬性

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