Cryptanalysis

是否有可行的方法從(三重)DES 輪密鑰重建密鑰?

  • January 30, 2020

假設有一個封閉源應用程序使用帶有固定/硬編碼密鑰的 Triple-DES 來解密大量數據。有人設法從程序記憶體轉儲中提取了輪密鑰,並且能夠驗證(使用以輪密鑰作為輸入的 3DES 的修補版本)這些密鑰實際上能夠成功解密數據。

有沒有一種已知的方法可以使用這些輪密鑰從中重建原始密鑰?(因為它是 DESede,所以使用解密模式導出兩個密鑰,使用加密模式導出一個密鑰)。從技術上講,沒有必要這樣做(打了更新檔的 3DES 實現可以很好地解密數據),但是只使用普通 3DES 並插入原始密鑰會使程式碼更具可讀性。(另外它會是可以用它們加密而不是解密)。

如果沒有這樣的方法,是設計決定反轉輪密鑰的推導很難,還是只是巧合?

DES 密鑰調度採用 64 位密鑰,PC-1 (Permuted Choice 1) 丟棄奇偶校驗位並將置換應用於剩餘的位。

然後對於其餘部分,它們的密鑰位被分成 28 位的一半,並且對於每一輪

  • 它們向左旋轉一到兩個,為每一輪指定。然後
  • 48 位位由 PC-2(置換選擇 2)選擇,這是另一種丟棄一些位的置換

$$ \begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|} \hline \text{Number of Round} & 1 & 2 & 3& 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16\ \hline \text{Number of Left rotations} & 1 & 1 & 2 & 2 & 2 & 2 & 2 & 2 & 1 & 2 & 2 & 2 & 2 & 2 & 2 & 1 \ \hline \end{array} $$

有沒有一種已知的方法可以使用這些輪密鑰從中重建原始密鑰?

給一個 DES 的輪密鑰,應用反向 PC-2。這樣,您將獲得 56 位密鑰中的 48 位。您可以通過對剩餘的密鑰位使用蠻力來完成此操作,或者使用另一個輪密鑰來填充缺失的 8 個密鑰位。

是否有可行的方法從(三重)DES 輪密鑰重建密鑰?

對於三重 DES,如果密鑰是獨立生成的,則每個不同的 DES 密鑰都需要輪密鑰。

雖然密鑰調度的可逆性並不是真正需要的,但對於較舊的系統,不可逆的密鑰調度使得解密需要更多的處理時間或更多的記憶體。

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