分組密碼和 3DES 的組成
關於 DES 和 3DES 有一些有趣的事情。現在,我知道 DES 很弱,而 3DES 試圖從已棄用的分組密碼中建構更安全的分組密碼。
考慮到這一點,如何組合兩個獨立的分組密碼實例(具有兩個獨立密鑰的tits)具有減少的輪數。以 AES(密鑰為 128 位)為例,它有 10 輪(並認為最後一輪是完整的,因為它包含所有操作 add-roundkey、mixcolumns、shiftrows 和 subbytes)。如果我們考慮具有 5 個完整回合的 AES 簡化版本,表示為 $ AES^r $ ,我們通過以下方式構造一個新的分組密碼:
$$ AES’{k_1,k_2}(.)=AES^r{k_1}(AES^r_{k_2}(.)) $$ 這個分組密碼和原始版本的 AES 一樣安全嗎?在我看來確實如此,因為密鑰是獨立的,但我需要確認。
編輯:下面的組合也安全嗎?
$$ AE’’{k_1,k_2}(.)=AES^r{k_1}({AES^{r}}^{-1}{k_2}(.)) $$ 在哪裡 $ {AES^r}^{-1}{k_2}(.) $ 表示解密操作。
謝謝你。
那麼,無論 $ AES’ $ 安全 $ AES $ 取決於長度 $ k_1, k_2 $ .
如果它們都是 128 位,那麼您實際上擁有的是標準 128 位 AES,除了在第 6 輪之前,您將執行密鑰替換為獨立密鑰(並且您調整了最後一輪,但這在密碼學上是無害的)。現在,對密碼進行隨機調整從來都不是一個好主意,但是,推測這個是無害的似乎是合理的;密碼的安全性似乎不太可能取決於標準 AES 的第 5 輪和第 6 輪中子密鑰的關係。當然,這假設我們只對標準攻擊(選擇明文,選擇密文)感興趣;如果允許我們考慮相關密鑰攻擊,這種結構可能會更弱。
另一方面,如果 $ k_1, k_2 $ 是每個 64 位(與 $ AES^r $ 子密鑰派生過程以某種方式修改為採用 64 位密鑰),那麼我們所擁有的肯定比標準 AES 弱(即使 $ AES’ $ 採用 128 位密鑰);即使針對已知的明文場景。
這是由於標準的中間相遇攻擊,在哪裡可以找到值 $ k_1, k_2 $ 解方程:
$ AES’{k1,k2}(P) = AES^r{k1}(AES^r_{k2}(P)) = C $
對於一些已知的明文/密文塊,攻擊者只需計算:
$ F(k_1) = AES^r_{k2}(P) $
$ G(k_2) = {AES^r_{k1}}^{-1}(C) $
對全部 $ 2^{64} $ 的值 $ k_1, k_2 $ , 並蒐索列表以找到一對 $ F(k_1) = G(k_2) $ . 這給了他解決方案 $ AES’_{k1,k2}(P) = C $ 在 $ O(2^{64}) $ 時間。