Authentication

CBC-MAC 的不安全性

  • May 20, 2016

在此處輸入圖像描述 在此處輸入圖像描述

誰能解釋為什麼 CBC-MAC 對於可變長度消息不安全?

我讀了很多書,但仍有一些困惑。比如之前圖片中高亮的部分

問題:

  1. 為什麼需要設置 $ T’’=C_0 $ ?
  2. 為什麼 $ T’’’=T’’ $ . 如何證明這種關係?
  3. $ new\ message = P_0,P_1,(P_0 \oplus T’) $ ?

誰能解釋為什麼 CBC-MAC 對於可變長度消息不安全?

對於上一個問題,我將引用Matthew Green 2013 年的文章

快速提醒。CBC-MAC 與用於加密的經典 CBC 模式非常相似,但有一些主要區別。首先,初始化向量 (IV) 是一個固定值,通常為零。其次,CBC-MAC 只輸出密文的最後一個塊——這個單一的值形成了 MAC。

在此處輸入圖像描述

許多愚蠢的實現到此為止。這會導致大問題。

最值得注意的是,如果您的系統允許可變長度的消息——這是應該的——有一個簡單的攻擊可以讓你偽造新的消息。首先,獲取消息 M1 上的 MAC T。現在將標籤 T 異或到任意第二條消息 M2 的第一個塊中,並獲得 M2 修改版本的 MAC。

結果標籤 $ T’ $ 結果是組合消息的有效 MAC $ (M1 || M2) $ . 這是一個有效的偽造,在某些情況下實際上是有用的。

在 MAC 化之前將消息長度附加到消息的第一個塊的標準修復。但是令人驚訝的大量(愚蠢的)實現跳過了這個額外的步驟。許多 CBC-MAC 實現都是愚蠢的實現。

(更多資訊在這裡

第一個問題,為什麼需要設置 $ T′′=C0 $ ?

實際上並沒有設置。 $ T’’ $ 計算如幻燈片中所寫,結果為 $ C_0 $ .

第二個問題是我不明白的最大問題,為什麼 $ T′′′=T′′ $ . 如何證明這種關係?第三個問題,為什麼 $ \text{new message}=P_0,P_1,(P_0⊕T′) $ ?

讓我們計算標籤 $ P’’’ $ :處理第二個區塊後( $ P_1 $ ) 一個有 $ T’ $ , 所以在處理下一個塊時 ( $ P_0 \oplus T’ $ ) 計算加密 $ T’ \oplus P_0 \oplus T’ = P_O $ 也就是說,根據定義,第二條消息的標籤: $ T’’ $ ( $ P_0 $ 是第二條消息 $ P’’ $ ).

大致的想法是添加一個塊來取消所有先前的計算並為攻擊者已經知道 MAC 的消息重新啟動 CBC-MAC 計算。“取消”是通過將前一個鏈的標記與已知 MAC 的其他消息的第一個塊異或到第一個添加的塊來完成的。

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