Mac
為什麼對 CBC-MAC 使用隨機 IV 而不是全零 IV 是不安全的?
固定長度的 CBC-MAC使用全零塊作為初始化向量。
假設我們使用隨機 IV,並將 IV 與標籤一起發送。所以如果消息 $ m $ 將會 $ m = b_1 || b_2 || b_3 || … || b_l $ , MAC 將是 $ (IV, t) $ 在哪裡 $ t $ 是定義為正常的身份驗證標籤。
為什麼這種使用隨機 IV 的方法比使用全零 IV 的正常方法更不安全?
(此方法在一些 nCipher 產品中使用,並在nCipher Advisory #13中聲明為不安全- 另請參閱 nCipher Insecure CBC-MAC API Vulnerability。)
您的 securityfocus.com 連結中引用的nCipher Advisory #13包含對漏洞的解釋(在“加密細節”部分)。
CBC-MAC 算法的工作原理類似於 CBC 加密算法,但只輸出最終塊(或其中的一部分)。明文的每個塊都與前一個密文進行異或運算,然後加密。
這意味著我們在第一次與塊密碼接觸之前,將第一個塊與初始化向量進行異或。因此,僅更改第一個塊以及初始化向量中的相應更改將意味著將相同的值輸入到塊密碼中,從而在末尾給出相同的結果認證標籤(不必更改)。
如果初始化向量固定為零(或其他常數),則攻擊者無法將其與第一個塊一起更改,這種攻擊是不可能的。作為額外的獎勵,我們可以少傳輸一個數據塊。