Block-Cipher

分組密碼中密鑰調度的安全重要性

  • March 29, 2017

例如分組密碼 AES-128,密鑰大小為 128 位,用於生成 10 輪密鑰,總共 320 位。

問題 1. 如果我在 AES 中使用另一種密鑰調度算法,那麼安全性會降低還是保持不變?換句話說,如果AES的密鑰調度算法與AES加密本身有一些關係,那麼它會被降低,或者如果新的密鑰調度算法足夠安全的話,它會保持不變。

問題 2. 為什麼要擴展密鑰?無論密鑰計劃是否強大,蠻力將花費 O(2^128) 時間。做密鑰支出有什麼好處?當我了解 3DES 時,我對此感到好奇。這是因為以前的 DES 密鑰長度為 56 位很弱,因此很容易受到暴力攻擊,我想知道他們為什麼不直接刪除密鑰調度過程並使用整個輪密鑰作為密鑰。

如果我在 AES 中使用另一種密鑰調度算法,那麼安全性會降低還是保持不變?

這確實需要一個關於替代關鍵時間表的具體建議,以便得出結論它是否會構成改進或弱點。

AES 密鑰計劃並不完全理想,但設計的其餘部分似乎足夠強大,以至於這在實踐中並不重要。所以實際的安全性可能不會被修改。密鑰調度幾乎可以肯定是AES算法中最薄弱的部分。它按原樣安全的事實意味著修改密鑰時間表可能不會產生巨大的差異。

我敢打賭,如果我們嘗試,我們可以想出某種導致弱點的病態例子,但我想不出一個臨時的。

問題 2. 為什麼要擴展密鑰?無論密鑰計劃是否強大,蠻力將花費 O(2^128) 時間。做密鑰支出有什麼好處?

這是一個很好的問題,我想知道自己。我認為我從未在密碼提案中看到過明確的理由來解釋為什麼輪密鑰是按原樣導出和應用的——例如:“通過以這種方式導出我們的密鑰並在這個特定的時間間隔應用它們,這些攻擊(s)被阻止”

它完成的一件事是它使回合的每個應用程序的行為都不同。各種對稱性可用於針對算法的攻擊。

我看過一些專門關於關鍵時間表的重要性和設計的論文。基本上,他們主張確保密鑰的完全傳播,並確保在給定輪密鑰的一部分的情況下,應該難以推導出密鑰的任何其他部分。

因此,假設性地,如果您使用完全擴散的、不可預測的單向函式作為您的密鑰時間表,那麼恢復一個輪密鑰將無助於恢復其他輪密鑰。

有趣的是,我找到了不使用密鑰計劃的理由:密碼LED不使用密鑰計劃,因此甚至可以抵抗相關的密鑰攻擊。它依靠輪常數來模擬獨立的輪密鑰。

當我了解 3DES 時,我對此感到好奇。這是因為以前的 DES 密鑰長度為 56 位很弱,因此很容易受到暴力攻擊,我想知道他們為什麼不直接刪除密鑰調度過程並使用整個輪密鑰作為密鑰。

由於 DES 密鑰只有 56 位,因此直接使用它不會有任何改進。此外,DES 密鑰調度幾乎只是直接使用密鑰:它確實在不同輪次的過程中從不同的位中提取,但它實際上只是重新排序密鑰的位,而不是真正派生新的/不同的位. 另請注意,3DES 使用比正常 DES 更多的主密鑰材料。

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