Mac
MAC算法難點
誰能向我解釋為什麼這是一個壞主意?除了 MAC 和 AES 的密鑰 K 應該不同之外,我看不出它有什麼問題。
MAC 算法包括讓消息 M(由消息塊 M1、M2、…、Mn)的 MAC 為所有消息塊的 XOR 的密鑰 K 的 AES 加密。
即MACK(M)=EK(M1 XOR M2 XOR … XOR Mn)
計算衝突很簡單,因為消息塊 M1..Mn 可以毫無問題地互換。所以 EK(M1 XOR M2) = EK(M1’ XOR M2’) 其中 M1’ = M2 和 M2’ = M1。不同的消息顯然不應該計算到相同的 MAC 認證標籤。
問題在於對消息塊進行異或運算以形成單個壓縮塊。這以高度規則的方式減少了消息,這意味著很容易構造衝突。對這種 MAC 設計的長度擴展攻擊可以包含任何數據,只要其中一個塊是餘數的二進制補碼 - 計算起來很簡單。