Block-Cipher

攻擊村莊k,ķ1(×)=定義的ķ(x)⊕ķ1村莊ķ,ķ1⁡(X)=定義的ķ⁡(X)⊕ķ1operatorname{DESA}_{k,k_1} (x) underset{text{def}}= operatorname{DES}_k(x)⊕k…

  • June 20, 2020

此 pdf中的問題 5.16 ,來自以下書籍:Christof Paar,Jan Pelzl,Understanding Cryptography

5.16。這是您破解密碼系統的機會。正如我們現在所知,密碼學是一項棘手的業務。下面的問題說明了將一個強方案轉變為一個弱方案是多麼容易,只需稍作修改。我們在本章中看到,密鑰白化是一種加強分組密碼對抗暴力攻擊的好技術。我們現在看一下針對 DES 的以下密鑰白化變體,我們將其稱為 DESA: $$ \operatorname{DESA}_{k,k_1} (x) \underset{\text{def}}= \operatorname{DES}_k(x)⊕k_1 $$ 儘管該方法看起來類似於密鑰白化,但它幾乎不會增加安全性。你的任務是證明破壞該方案的難度與對單個 DES 的蠻力攻擊大致相同。假設你有幾對明文-密文。

普通 DES

假設您有一個使用 56 位密鑰加密的普通 DES 明文-密文對 $ k $ 在哪裡 $ C_1=DES_k(P_1) $ . 在最壞的情況下,一個人需要嘗試 $ 2^{56} $ 找到加密密鑰的可能密鑰。之後,可以解密所有用密鑰加密的密文 $ k $

村莊

假設一個有 2 對明文-密文對加密 $ k $ (通常的 56 位密鑰大小)和 $ k_1 $ (自塊大小起為 64 位)其中 $ C_2=DESA_{k,k_1}(P_2) $ 和 $ C_3=DESA_{k,k_1}(P_3) $ 所以一個人可以 x-or 給定兩個密文並且:

$ C_2\oplus C_3 = DESA_{k,k_1}(P_2)\oplus DESA_{k,k_1}(P_3)= DES_k(P_2)\oplus k_1\oplus DES_k(P_3)\oplus k_1=DES_k(P_2)\oplus DES_k(P_3) $

所以, $ k_1 $ 離開了。在最壞的情況下,嘗試 $ 2^{56} $ 次並得到 $ k $ 有兩個明文-密文對。

然後,對於任何密文,借助前面的等式,可以計算出 $ k_1 $

$$ C_1 = DES_k(P_1)\oplus k_1 $$

知道鑰匙 $ k $ 可以計算 $ k_1 $ .

所以總的來說 $ 2^{57}+1 $ DES加密被稱為,而不是 $ 2^{56+64} $ 密鑰大小。

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