如何找到特殊的 DES 密鑰 0E329232EA6D0D73?
DES 密鑰 0E329232EA6D0D73 具有不尋常的特性,即解密完全由零組成的密文塊會得到一個由八次重複相同字節 (0x87) 組成的明文塊。
最初是如何找到此密鑰的?
該值 0E329232EA6D0D73 是通過蠻力找到的。如果有更好的方法,我會感到驚訝:這相當於 DES 的密碼分析破解,與我們所知道的少數人非常不同。
蠻力方法的草圖(省略了有關並行化的詳細資訊)如下:
對於每個 $ K $ 其中的 64 位 $ 2^{56} $ 有效的 DES 密鑰
用密鑰解密 $ K $ 一個完全由零組成的密文塊,給出 $ P $
如果八個字節在 $ P $ 相等
- 輸出 $ K $ 並停止
輸出沒有找到並停止。
對於一個完美的密碼, $ P $ 每個基本上是 8 個隨機字節 $ K $ 嘗試過,因此if條件將被滿足 $ 2^{-56} $ 對於每個 $ K $ . 在 DES 的近似值下(由於密文是固定的,互補屬性不會使該近似值無效),輸出未找到的機率為 $ (1-2^{-56})^{(2^{56})}\approx1/e\approx36.8% $ . 相應地,機率值為 $ K $ 被發現是 $ 1-(1-2^{-56})^{(2^{56})}\approx1-1/e\approx63.2% $ .
事實證明,我們處於第二種(也是最有可能的)情況(證明:問題中的斷言成立)。了解這一點,找到解決方案 $ K $ 通過概述的方法最多需要 $ 2^{56} $ 解密。這並不比通過蠻力從明文/密文對中找到 DES 密鑰困難多少,這在 1998 年的預算為 250,000 美元(包括 NRE)的情況下在幾天內是可行的,請參閱EFF DES Cracker。與之相比,唯一的困難是稍微不尋常的停止條件。但是在像Copacobana這樣的基於 FPGA 的實現中,或者基於GPU 的實現中,這增加了非常少的成本。
更新:EFF DES 破解器被設計為具有足夠靈活的停止標準,並用於首先公開查找該特定密鑰,以證明其有效。引用EFF ¹:
EFF DES 破解器首先解決了一個挑戰
$$ circa 1996 $$由世界著名的密碼學家和 AT&T 實驗室研究科學家 Matt Blaze 編寫。“Blaze Challenge”被設計為只能通過 DES 的“蠻力”密碼分析來解決。Blaze 先生向全世界提出挑戰,要找到匹配的明文和密文數字對,它們只包含重複的數字。直到 EFF DES Cracker 揭示了第一對已知的對,Blaze 本人才知道任何這樣的對。發現16進制密鑰0E 32 92 32 EA 6D 0D 73 將明文8787878787878787變成密文0000000000000000。
¹這連結到原始檔案。其中一些材料仍在目前的 EFF 網站上,但遺憾的是,日期在現代化過程中失去了,變成了 2016 年 8 月而不是 1998 年 7 月。