為什麼我們不在每條消息中使用多個密碼?
我知道至少rsa、elgamal-encryption和橢圓曲線的變化依賴於不同的問題,並且這些問題被認為是困難的。
但是,如果有人想出一種方法來破壞這種安全性,那麼後果就很難想像了。或者,如果某個智能服務發布了某些橢圓曲線,他們知道解密過程中的一些捷徑怎麼辦?
我的問題是:為什麼我們不結合這些系統來避免這種加密災難?
考慮: $ C = EncryptWithRSA(EncryptWithEG(EncryptWithECC(M))) $
這可能是並行計算的,所以我們使用今天的四核手機。我不記得曾經等待 SSL 連接到來,所以我想我幾乎不會注意到三倍的延遲。為什麼我們不這樣做?
我不知道並行計算事物,所以我將忽略這部分問題。
首先,請注意,加密算法很少是安全性的薄弱環節。更有可能的是
- 您將遇到實施問題,
- 您的電腦上安裝了一些間諜軟體,
- 弱密碼(如果您使用 qwerty 作為密碼,那麼您的算法有多棒並不重要)。
也就是說,您必須記住,安全性不僅僅是選擇一個好的算法。
其次,已經研究了AES的安全性,它是安全的。沒有已知的實際攻擊可以破壞 AES(當然假設是強密碼)。所以使用另一種算法並沒有真正做更多的事情。
也就是說,你當然可以做到。但同樣,如果你真的想做,你必須做對。我敢肯定,在您學習密碼學時,您會遇到這樣的想法,即您不應該“滾動自己的密碼”“。從某種意義上說,結合兩種算法,您可能會違反該原則。例如,如果您有一個 AES 實現,它作為輸出生成一個文件,該文件始終以 10 個字節開頭,將文件標識為已加密通過AES(你的實現?),然後(因為你可以假設你的攻擊者知道你的加密方法)攻擊者知道第二次加密的明文的一部分。(這不一定是問題!)這並沒有給出一切都過去了,但是你現在已經給了攻擊者一些他可能能夠使用的資訊。另一個問題是,如果你不小心選擇了兩個算法,其中一個撤消了另一個的一部分。
關鍵是,在實際執行這兩種算法的組合時,你很有可能會犯錯誤。
但是,如果你把這一切都做對了,那麼當然,按照你的建議加密就很好了。事實上,有些人可能已經在做這樣的事情了。
最後,讓我引用一篇部落格文章:
… 完全有可能以安全的方式組合加密方案(其中許多不是級聯結構),但是您將獲得的額外安全性受到一些爭論。
其他有趣的事情:
他們所依賴的問題並沒有你想像的那麼不同。
它們要麼基於因式分解問題,要麼基於離散對數問題,它們之間有很深的聯繫。一旦你有一種算法可以有效地解決一個問題,你很可能能夠對其進行調整,以在多項式時間內重現另一個答案。
因此,您應用多層加密的策略變得毫無用處。
分析這兩個問題之間密切聯繫的一個好方法是Shor 的量子算法,它能夠在多項式時間內打破這兩個問題……在量子世界中。