兩個密碼比一個好嗎?即RC4和AES
好的,現在是畏縮的時候(或者希望不是)
我知道這可能是一個老問題的變體,或者你可能會這麼想,但讓我問一下,希望能得到一些見解。
由於BEAST ,Google 不久前著名地從 AES 更改為 RC4 。然而,RC4 充斥著各種漏洞和問題,這些漏洞和問題都經過充分研究。RC4 可以向不知道密鑰的人透露很多資訊。理論上這是可以做到的。在實踐中已經這樣做了。WEP是一個強烈地浮現在腦海中的例子。
如果我們使用相同的 128 位密鑰來形成某種 AES(分組密碼)加密。在任何模式下,無論是 ECB 還是更可取的 CBC、CFB 或任何模式(你明白了)。然後我們還通過 RC4(流密碼)算法執行相同的數據:我們是否有一個明顯更強大、更難破解的密文?
然後解密不用說,我們只用 RC4 然後 AES 解密。
我們會以這種方式解決任何弱點問題嗎?或者這只是浪費計算時間?任何想法都非常感謝。
有幾種方法可以組合多種不同的加密方案。按照您的建議一個接一個地應用是一種選擇,但您可以例如先進行秘密共享,然後使用不同的算法對共享進行加密。其中每一個都有其優點和缺點。我不知道有一個組合器可以證明可以增強安全性,但是您可以設法建構一個保證與組合器中使用的最弱密碼一樣強大的方案(當然,只要您使用獨立的密鑰)。缺點很明顯:當組合兩個方案等時,您需要做大約兩倍的工作。根據組合器的不同,您可能還需要支付頻寬費用(請參閱秘密共享組合器)。
具有獨立密鑰的級聯密碼是一種標準方法,可以防止密碼分析針對一個而不是另一個的進步;例如,參見Tahoe-LAFS 100 年密碼學設計。對於兩個流密碼 $ S $ 和 $ T $ 分別在鍵下 $ h $ 和 $ k $ 獨立地隨機均勻地選擇, $ i^\text{th} $ 密文是 $ C_i = P_i \oplus S_h(i) \oplus T_k(i) $ . 您通常可以以明顯的方式級聯更複雜的事物,例如來自 CAESAR 的 AEAD 方案。
使用 RC4一直是愚蠢的,因為它在 1994 年發布後的幾天就被破壞了,但是如果由於某種原因你不知道這一點,那麼原則上如果你將它與例如AES-CTR 結合使用獨立在您的系統中鍵入密鑰,得知 RC4 被徹底破壞不會對您的系統造成如此嚴重的衝擊。
但是,使用 RC4 和 AES-CTR 不會很快。使用 Salsa20 會更快,並提供更高的安全性!
除了像 RC4 這樣在發布後不久就被認為很糟糕的破密碼,密碼不太可能成為您系統中的弱點。除了選擇像 Salsa20 或 ChaCha 這樣經受了十多年密碼分析的經過廣泛審查的明智選擇之外,實際上可以保證將您的時間專注於級聯密碼而不是系統工程的其餘部分是浪費時間。
例如,針對 WEP 的標準攻擊不依賴於 RC4 本身的弱點;相反,由於 WEP 設計中使用 24 位 nonce 的愚蠢行為,它們依賴於密鑰流的重用,當您使用超過幾千個 nonce 時,它們迅速變得更恰當地稱為 nwice。
另請參閱https://crypto.stackexchange.com/a/10332/49826>,其結論是級聯密碼修復了一個不存在的問題,以及<https://crypto.stackexchange.com/a/6498/49826關於在 TrueCrypt 中使用級聯密碼的進一步討論。