破解截斷的DES
假設我們有一個方案,其中 40 位 M 用 24 個零填充,使用秘密 DES 密鑰 K 加密,並將結果截斷為前 24 位 C。如果我想確定與 K 行為相同的密鑰,即對於每個(或至少大多數)M 產生相同的 C,我需要多少對 M/C 才能以合理的機會找到這樣的密鑰?
在對稱密碼學中,對於完全已知的密文,預計需要比有用的密鑰位稍多的已知明文位,以便通過純暴力可靠地恢復密鑰。如果我們反轉明文和密文,該規則也適用,這就是我們想要的。
密鑰是 56 位。隨機選擇不同 M 的每一對 (M, C) 給出 24 位密文。兩對給出 2⋅24 = 48 位,56-48 = 8 位失去,大約 2 8 = 256 個密鑰將匹配。三對給出 3⋅24 = 72 位,這足以讓暴力密鑰搜尋以極好的機率精確定位單個密鑰(按 2 56-72 < 1/50000 的順序)。最有可能找到的第一個密鑰(在測試了預期的 2 55個密鑰之後,以及更多的試驗加密之後)對於任何其他 (M, C) 對將*“表現得像 K”*,因為它是用於建構對的實際 K (M, C)。
故意展示三對(M,C)(可能更多)具有不同的 M 是可行的,這樣至少有兩個密鑰是可能的;但這又不太可能是偶然發生的。
它被問到數學。讓 $ (M_i,C_i) $ 是給定的明文/密文對(每個 40+24 位),具有不同的 $ M_i $ ,對應於未知的實際密鑰 $ K_A $ . 讓 $ C_{(K,i)} $ 是擴展的結果 $ M_i $ , 在密鑰下加密 $ K $ , 並截斷為 24 位。按照這個定義, $ C_{(K_A,i)}=C_i $ .
因為 $ 2^{56} $ DES 密鑰只覆蓋一小部分 $ 2^{64}! $ DES 塊的排列,並且在該應用程序中,輸入中的至少一位是固定的(因此使 DES 互補屬性無關 $ E(\overline K,\overline P)=\overline{E(K,P)} $ ),並且我們將有很少的明文(或/並且只能觀察到輸出塊的一小部分位),我們可以對 $ C_{(K,i)} $ 對於每個 $ (K,i) $ 作為均勻隨機和獨立的 24 位位串。這是真的,包括 $ K=K_A $ , 假設 $ M_i $ 已獨立選擇 $ K_A $ .
在該模型下,一個鍵 $ K\ne K_A $ 是這樣的 $ C_{(K,i)}=C_i $ 為了 $ n $ 具有機率的明文/密文對 $ 2^{-24n} $ (對於每個密文位,該機率減半)。隨之而來的是 $ n $ 對,每個 $ K $ 可以用機率消除 $ 1-2^{-24n} $ . 全部測試後 $ 2^{56} $ 鑰匙, $ K_A $ 仍然是唯一可能的關鍵 $ p_n=(1-2^{-24n})^{(2^{56}-1)} $ 並且還有不止一個可能的鍵有機率 $ \overline{p_n}=1-(1-2^{-24n})^{(2^{56}-1)} $ .
為了 $ n\ge3 $ ,我們用那個 $ 1<c\ll1/|\epsilon|\implies1-(1-\epsilon)^c\approx\epsilon\cdot c $ 要得到 $ \overline{p_n}\approx2^{56-24\cdot n} $ . 因此 $ \overline{p_3}\approx2^{-16} $ ,這是非常小的(意味著 3 對將有很好的賠率)。
為了 $ n\le2 $ ,我們用那個 $ \log p_n=(2^{56}-1)\log(1-2^{-24n}) $ , 和 $ |\epsilon|\ll1\implies\log(1+\epsilon)\approx\epsilon $ 得到那個 $ p_n\approx e^{(-2^{56-24n})}=2^{-(56-24n)/\log2} $ . 因此 $ p_2<2^{-369} $ 這是可笑的小(意味著2對不會做)。最有可能的是,許多鍵仍然可能(按 $ 2^{56-24n} $ ).