為什麼經過身份驗證的 CFB 模式不安全?
我讀到以下將 CFB 分組密碼模式改編為認證模式很容易受到選擇明文攻擊,但我仍然不確定如何證明它:
讓 $ P_1,P_2,\ldots P_n $ 是明文塊, $ C_1,C_2,\ldots C_n $ CFB 加密的密文塊並考慮認證標籤計算為:
$$ T = E_k(C_n) \oplus P_1 \oplus P_2 \ldots \oplus P_n $$ (這基本上是附加一個額外的明文塊,其中包含所有明文塊的異或,並使用這個最終的加密塊作為身份驗證標籤)。
誰能指出我的主要錯誤是什麼?
一件顯而易見的事情是它容易受到截斷已知消息的已知明文攻擊。
這種攻擊非常簡單;假設攻擊者知道一條消息 $ (P_1, P_2, …, P_n) $ 以及對應的密文 $ (C_1, C_2, …, C_n, T) $ (使用一些 IV;我們不在乎它是什麼)。
以下是攻擊者如何生成一個密文,該密文將解密並驗證 $ (P_1, P_2, …, P_k) $ 為一個 $ k $ 他的選擇。
首先,他可以截斷密文 $ (C_1, C_2, …, C_k) $ ; 這顯然會解密成他想要的資訊;他需要做的就是計算相應的標籤,以便它可以驗證。
他能做到這一點,因為我們已經知道 $ C_{k+1} = E(C_k) \oplus P_{k+1} $ ; 這就是 CFB 模式的工作原理。因此,他可以計算標籤:
$ T’ = C_{k+1} \oplus P_1 \oplus P_2 \oplus … \oplus P_k \oplus P_{k+1} = E(C_k) \oplus P_1 \oplus P_2 \oplus … \oplus P_k $
在那裡,他的工作完成了……