Provable-Security

如何證明 CBC-MAC 的這種修改是不安全的?

  • April 13, 2016

我正在研究一些密碼學問題,發現了這個,但我不知道如何解決它:

修改 CBC-MAC 使所有塊 $ t_1,\dots,t_l $ 是輸出而不僅僅是 $ t_l $ 並證明它不安全。

考慮以下對修改後的 CBC-MAC 函式的選擇明文攻擊:

發送 $ m_1 $ , $ m_2 $ , $ m_3 $ , 收到 $ t_1 $ , $ t_2 $ , $ t_3 $ .

發送 $ m_1 $ , $ m’_2 $ , $ m’_3 $ , 收到 $ t’_1 $ , $ t’_2 $ , $ t’_3 $ .

發送 $ t’_2 \oplus m’’_3 $ , $ m’’_2 $ , $ m’’_3 $ , 收到 $ E_k(t’_2 \oplus m’’_3) $ , $ t’’_2 $ , $ t’’_3 $ .

然後您知道以下(消息,標籤)對將驗證:

發送 $ m_1 $ , $ m’_2 $ , $ m’’_3 $ :標籤將是您之前查詢的值的串聯: $ t_1 $ , $ t’_2 $ , $ E_k(t’_2 \oplus m’’_3) $ . 因此,您可以通過修改後的 CBC-MAC 算法生成尚未發送的有效(消息、標籤)對。這可以推廣到任意數量的塊。

回想一下我們談論MAC 的安全性時的意思。

雖然 MAC 函式類似於加密雜湊函式,但它們具有不同的安全要求。為了被認為是安全的,MAC 函式必須在選擇明文攻擊下抵抗存在偽造。這意味著即使攻擊者可以訪問擁有密鑰並為攻擊者選擇的消息生成 MAC 的預言機,攻擊者也無法在不執行不可行數量的情況下猜測其他消息(未用於查詢預言機)的 MAC的計算。

因此,您可以通過 oracle 訪問您向其發送消息的內容 $ m $ 它給你MAC。你的目標是計算一些有效的 MAC $ m’\neq m $ . 你將如何在這個修改後的 MAC 中做到這一點?

想一想,假設我將消息發送I EOS, give all my worldly belongings to mikeazo. Just kidding.到了預言機。給定該消息的 MAC,我可以為該消息生成一個 MACI EOS, give all my worldly belongings to mikeazo.嗎?

在實踐中,您將不得不處理塊邊界和填充,但這兩者都是完全確定的並且攻擊者知道。換句話說,它們並不是太大的障礙。

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