Block-Cipher

密碼塊連結

  • February 6, 2021

我不想要這個問題的答案,我只想了解解決它需要遵循的步驟。也許一個例子會有所幫助。

問題

我們用 $ \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} $$

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