為什麼 xor’ing 明文塊和加密生成的校驗和不是使用 CTR 模式的安全 MAC?
考慮消息 $ P $ 被分成 $ n $ 與底層塊密碼的塊大小匹配的塊。消息具有固定長度,並且長度始終是塊大小的倍數。
使用 CTR 模式加密: $$ \begin{align} C_0 &= P_0 \oplus E_k(nonce\mathbin|0) \ C_1 &= P_1 \oplus E_k(nonce\mathbin|1) \ \vdots & \quad\quad\vdots\ C_{n-1} &= P_{n-1} \oplus E_k(nonce\mathbin|(n-1)) \end{align} $$
為什麼以下 MAC 標籤不安全: $ T = (P_0 \oplus P_1 \oplus \cdots P_{n-1}) \oplus E_k(nonce\mathbin||n) $ ?
位翻轉
在位置翻轉鑽頭 $ x $ 在密文塊上 $ C_i $ 然後在街區 $ C_j $ 在哪裡 $ i \neq j $ 同樣對於明文 $ P_i $ 和 $ P_j $ . 新的 MAC 結果
$$ T = (P_0 \oplus P_1 \oplus \cdots \oplus \bar{P_i} \oplus \cdots \oplus \bar{P_j} \oplus \cdots \oplus P_{n-1}) \oplus E_k(nonce||n) $$明文將是相同的 $ Q = (P_0\mathbin| P_1 \mathbin| \cdots \mathbin|\bar{P_i}\mathbin|\cdots \mathbin|\bar{P_j}\mathbin|\cdots \mathbin|P_{n-1}) $
現在,發送 $ (Q,T) $ 作為目標的消息和標籤,他們將接受它作為有效標籤。這種翻轉與單個位置無關。只要得到的 x-or 相同,攻擊者就可以選擇多個位置。
細節
翻轉是 $ \bar{x} := x \oplus 1 $ 然後
$$ \begin{align} \bar{C_i} &= \bar{P_i} \oplus E_k(nonce\mathbin|i-1)\ C_i \oplus 1 &= P_i \oplus 1 \oplus E_k(nonce\mathbin|i-1)\ C_i &= P_i \oplus E_k(nonce\mathbin||1)\ \end{align} $$
所以 $ \bar{C_i} $ 和 $ \bar{P_i} $ 作為對密文的攻擊。標籤計算消息,因此一位更改是不夠的。我們需要在相同的位置修改偶數對。