CBC 模式加密是否容易受到重新排序攻擊?
我知道,如果 CBC-MAC 的使用方式是標籤是所有塊輸出的串聯(而不僅僅是最後一個),那麼對於 2 個塊 CBC-MAC 的最簡單情況,在 CPA 下它是不安全的,其中:
- 消息是 $ m=m_1\mathbin|m_2 $ , 在哪裡 $ |m_1|=|m_2| $ 等於密碼的塊大小,並且
- 標籤是 $ t=t_1\mathbin|t_2 $ , 在哪裡 $ t_1 = F_k(m_1) $ 和 $ t_2=F_k(t_1\oplus m_2) $ .
在這種情況下,攻擊者可以更改明文並創建一個有效的逆序標籤。新消息將是 $ m’=m’_1\mathbin|m’_2 $ , 在哪裡
- $ m’_1=m_2\oplus t_1 $ ,
- $ m’_2=m_1\oplus t_2 $ , 和
- $ t’=t_2\mathbin|t_1 $ .
CBC加密模式是否也可能發生類似的攻擊(我們有一個隨機 $ IV $ 異向於 $ m_1 $ )?
**編輯:**我的問題實際上是 CPA 攻擊者(誰知道 $ c=IV\mathbin|c_1\mathbin|c_2 $ 和 $ m=m_1\mathbin|m_2 $ ) 可以修改發送到目的地的密文並能夠預測由此產生的明文是什麼?
是的。假設攻擊者知道密文 $ c = c_1 \mathbin| c_2 $ , 初始化向量 $ v $ 和明文 $ m = m_1 \mathbin| m_2 $ . 這告訴他們
- $ D_k(c_1) = m_1 \oplus v $ 和
- $ D_k(c_2) = m_2 \oplus c_1 $ ,
在哪裡 $ D_k(\cdot) $ 表示在(未知)密鑰下的分組密碼解密 $ k $ .
特別是,這意味著,如果攻擊者顛倒密文塊的順序以產生修改後的密文 $ c’ = c_2 \mathbin| c_1 $ ,那麼他們就會知道它將解密為 $ m’ = m’_1 \mathbin| m’_2 $ , 在哪裡
- $ m’_1 = D_k(c_2) \oplus v = m_2 \oplus c_1 \oplus v $ 和
- $ m’_2 = D_k(c_1) \oplus c_2 = m_1 \oplus c_2 \oplus v $ .
這應該沒有什麼特別令人驚訝的:像所有未經身份驗證的分組密碼操作模式一樣,CBC 模式被認為具有延展性,這意味著可以更改密文的攻擊者至少在某種程度上也能夠預測更改對生成的明文的影響。如果您不希望這樣(而且您通常不希望這樣做),則需要使用經過身份驗證的加密模式,可能是通過將 CBC 等傳統模式與安全 MAC 相結合來建構的。
(事實上,如果像往常一樣初始化向量 $ v $ 與密文一起傳輸:在這種情況下,攻擊者可以將明文的第一個塊更改為他們想要的任何內容,而不會影響其他塊,只需更改 IV。)