密碼塊連結
我不想要這個問題的答案,我只想了解解決它需要遵循的步驟。也許一個例子會有所幫助。
問題
我們用 $ \mathbin\Vert $ 用於連接。
讓 $ P_1 \mathbin\Vert P_2 $ 是一個有兩個塊長的消息,讓 $ P’_1 $ 是一個塊長的消息。
讓 $ C_0 \mathbin\Vert C_1 \mathbin\Vert C_2 $ 是加密的 $ P_1 \mathbin\Vert P_2 $ 使用帶有 隨機 IV和隨機密鑰的 CBC 模式,並讓 $ C’_0 \mathbin\Vert C’_1 $ 是加密的 $ P’_1 $ 使用隨機 IV和相同密鑰的 CBC 模式。
假設攻擊者知道 $ P_1 \mathbin\Vert P_2 $ 並假設攻擊者截獲並因此知道 $ C_0 \mathbin\Vert C_1 \mathbin\Vert C_2 $ 和 $ C’_0 \mathbin\Vert C’_1 $ .
進一步假設,偶然的機會, $ C’_1=C_2 $ .
證明攻擊者可以計算 $ P’_1 $ .
該問題表明加密不使用填充,並且 $ C_0=\mathit{IV} $ , $ C_0’=\mathit{IV}’ $ . 然後
$$ E_k(C_0\oplus P_1) = C_1 $$ $$ E_k(C_1\oplus P_2) = C_2 $$ $$ E_k(C_0’\oplus P_1’) = C_1’ $$ 你也有 $$ C_1’=C_2 $$ 這足以找到 $ P_1’ $ .
$$ \begin{eqnarray} E_k(P_1’\oplus C_0’)&=&C_1’\ P_1’\oplus C_0’&=& E_k^{-1}(C_1’)\ P_1’&=&E_k^{-1}(C_1’)\oplus C_0’\ P_1’&=& E_k^{-1}(E_k(C_1\oplus P_2))\oplus C_0’ \because C_1’=C_2=E_k(C_1\oplus P_2)\ P_1’&=&C_1\oplus P_2 \oplus C_0' \end{eqnarray} $$