Encryption
如何加密數據並知道它在至少幾十年內是安全的?
我想加密少量(幾千字節)的數據,並且相當有信心它將在至少幾十年(或更長時間)內防止暴力解密*和密碼分析的進步。*我對加密所需的時間(即使是一分鐘也是合理的)很靈活,因為這將在客戶端電腦上執行,而不是在伺服器上執行。
我的想法是在一個迭代過程中結合一些加密算法——每次迭代都有一個新的密鑰。理由是:
- 多次迭代增加了每次蠻力嘗試所需的時間。
- 多種算法意味著任何一種算法的失敗都不會損害整個加密。
- 多個密鑰有效地將密鑰大小增加到天文數字。
所以它可能看起來像這樣:
CipherText = AES(TwoFish(Serpent(PlainText)));
除了更多的嵌套層(重複選定的算法)。每一層都會有一個 CSRNG 生成的 Key 和 IV 並使用 CBC。
- 這是一個好主意嗎?
- 嵌套會增加安全性,還是會以某種方式引入新的漏洞?
- 如果這是一個好主意,最好使用哪種算法?
- 使用非對稱算法而不是對稱算法會更好嗎?
- 多少次迭代就足夠了?
我覺得它有點矯枉過正。只是想確保它不會讓事情變得更糟。
更新以指定對密碼分析的抵抗、對密鑰和 IV 使用 CSPRNG 以及使用 CBC。還刪除了對過時算法的引用。
這是一個好主意嗎?
並不真地。
很少能找到針對經過審查的設計的攻擊,這些攻擊允許用少量密文完全破解。
假設您計劃為這幾千字節的明文設置一個唯一的密鑰(它不會在其他任何地方使用),那麼任何加密攻擊都不太可能針對任何可以恢復明文的現代密碼進行。
老實說,您的消息很可能使用 AES 進行了絕對精細的加密。
幾乎不可能有人錯過對 AES 的密鑰恢復攻擊,這種攻擊可以使用幾千字節的密文進行。
嵌套會增加安全性,還是會以某種方式引入新的漏洞?
有可能做得不好並引入一個新的漏洞,是的。
如果這是一個好主意,最好使用哪種算法?
只需在 GCM 模式下使用 AES。
使用非對稱算法而不是對稱算法會更好嗎?
不。
多少次迭代就足夠了?
GCM 模式下的 AES 迭代一次就足夠了。