如果 DES 中的輸入文本和輸出文本相同,那麼鍵的值是多少?
如果某些 64 位消息塊(例如 $ M = \text{“12345678”} $ ) 使用一個密鑰在 DES 中編碼,並且編碼的消息具有相同的值(即 $ E_k(M) = \text{“12345678”} $ ),是否可以根據此確定 DES 密鑰?
我不知道這樣的 DES 密鑰 $ E_k(M)=M $
DES 有 4 個弱密鑰,允許 $ E_k(E_k(M))=M $
- 即,如果您對加密的消息進行加密,您將得到原始消息。
Keys before parities drop (64 bits) | Actual key (56 bits) 0101 0101 0101 0101 0000000 0000000 1F1F 1F1F 0E0E 0E0E 0000000 FFFFFFF E0E0 E0E0 F1F1 F1F1 FFFFFFF 0000000 FEFE FEFE FEFE FEFE FFFFFFF FFFFFFF
例 6.8 讓我們嘗試使用表 6.18 中的第一個弱密鑰對一個塊進行兩次加密。在使用相同密鑰進行兩次加密後,將創建原始明文塊。請注意,我們已經使用了兩次加密算法,而不是一次加密後又一次解密。
Key: 0x0101010101010101 Plaintext: 0x1234567887654321 Ciphertext: 0x814FE938589154F7 Key: 0x0101010101010101 Plaintext: 0x814FE938589154F7 Ciphertext: 0x1234567887654321
可以假設 $ \mathrm{DES}_k $ 是集合的隨機排列 $ 64 $ - 位數(取決於密鑰 $ k $ )。64歲!相當大,機率 $ \mathrm{DES}_k $ (對於固定 $ k $ ) 有一個不動點 $ x $ , (IE, $ \mathrm{DES}k(x) = x $ 對於一些 $ x $ ) 非常接近 $ 1-\frac{1}{e} $ (恰恰 $ 1-D{64!, 0} $ 在維基百科的符號中,其中 $ e $ 是歐拉數),大約是 $ 63.2% $ .
所以如果你不知道 $ x $ ,即明文在未知密鑰下對其自身進行加密 $ k $ , 你可以預期超過一半的 $ 2^{56} $ DES 密鑰滿足您的條件。
另一方面,如果您知道價值 $ x_0 $ 和 $ \mathrm{DES}_k(x_0) = x_0 $ ,您可以使用DES 破解器找到滿足此等式的密鑰。因為有 $ 2^{-8} $ 密鑰比明文/密文少幾倍,DES 破解者找到多個密鑰的可能性相對較小(一些破解單個 DES 的商業供應商甚至在找到第一個密鑰後停止其機器)。據我所知,沒有已知的攻擊會利用給定的明文等於給定的密文這一事實來加速破壞單個 DES。
$$ I think I’d heard of such an attack, and hope that I wouldn’t have forgotten it. $$