Encryption

查找修改後的 DES 加密的密鑰

  • July 19, 2015

這是我今天考試時遇到的一個問題,如果有人能幫助我找到答案,我會很高興。

一個學生建立了一種加密算法(介於 DES 和 3DES 之間),其中加密基於 2 個密鑰, $ K_1 $ 和 $ K_2 $ ,並以這種方式計算:

$$ Cipher = E_{K_1} (E_{K_2} (plaintext)) $$ 在哪裡 $ E_{K_i} $ 是使用密鑰加密 $ K_i $ .

攻擊者知道:

  1. 單個明文。
  2. 該明文的密文。
  3. 加密算法。
  4. 每個密鑰都是 56 位的。

他怎麼能找到這2把鑰匙?

當然還有蠻力解決方案,查看所有可能的密鑰對,直到找到正確的一對。

我的問題是:我們能否找到另一種比蠻力更好的方法來找到密鑰?

您可以通過額外的 $ \mathcal{0}(2^{56}) $ 記憶和與 $ \mathcal{0}(2^{56}) $ 時間。

你可以注意到關係 $ c \leftarrow E_{k_1}(E_{k_2}(m)) $ 可以改寫為 $ D_{k_1}(c) = E_{k_2}(m) $ (只需在兩側應用解密功能。

第一步在於生成每一對 $ (k_2, E_{k_2}(m)) $ 並將它們儲存在表中(最好是用於快速查找的雜湊表)。

有一張包含所有對的桌子 $ k_2, E_{k_2}(m) $ 您現在可以嘗試所有值 $ k_1 = 0,2^{56} $ 並應用解密功能 $ D_{k_1} $ 在最初收到的密文上。如果值 $ D_{k_1}(c) $ 存在於您的預先計算的表中,然後您找到了另一個鍵 $ k_2 $ 用於加密原始明文。

這種方法也稱為中間相遇攻擊

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