Des
使用中間相遇中的每個可能的密鑰加密/解密已知的明文/密文是什麼意思?
我正在研究針對 2DES 的中間相遇攻擊,我有一些我不確定的問題。我閱讀了幾個關於它的網站/文章,所以我知道它是什麼以及它是如何工作的。但是,我並不完全理解每個可能的鍵的含義。
讓我舉個例子:
我有一個已知的明文,我用 2DES 加密 - 我的密鑰只有 64 位中的 20 個有效位。因此,將 20 位設置為高位,其餘位用零填充(已跳過所有奇偶校驗位)。這給了我一個密文,它用兩個不同的密鑰加密了兩次。因此,當我想對其執行 MITM 攻擊時,我必須使用每個可能的密鑰 (= 2^20) 加密已知的明文並儲存結果,即中間密碼和在 HashMap 中使用的密鑰其中輸入是 - 雜湊鍵不是整數。
接下來,我必須使用每個可能的密鑰解密已知密文,並在解密的密文和 HashMap 中的一個加密明文之間找到匹配項。
這裡讓我感到困惑的是“每一個可能的鍵”是什麼意思?是否使用隨機 20 位生成 2^20 個密鑰(在我的情況下)?如果是這樣,這將導致衝突。
你的問題只給了你 20 位的密鑰空間,所以你可以實現它。如前所述,即使儲存一個完整的表也不是一件容易的工作和訪問 $ 2^{56} $ ,雖然我們知道泰坦可以到達 $ 2^{62} $ 大約一個小時,它是一台超級電腦。您的任務只是說您的密鑰將採用二進制格式的格式:
xxxxxxxpxxxxxxxpxxxxxx0p0000000p0000000p0000000p0000000p0000000p
所以你必須從
0000000p0000000p0000000p0000000p0000000p0000000p0000000p0000000p
至
1111111p1111111p1111110p0000000p0000000p0000000p0000000p0000000p
並將它們儲存在表 T1(或雜湊映射)中。(那裡有64位)。
p
表示奇偶校驗位。來自維基百科:
最初,由 Permuted Choice 1 (PC-1) 從最初的 64 位中選擇 56 位密鑰 — 其餘 8 位要麼被丟棄,要麼用作奇偶校驗位
在下一步中,使用相同的迭代進行解密並在 T1 中查找結果。