Aes
考慮到密鑰長度的 AES 與 Blowfish
我知道 Blowfish 已經老了,但它仍然是一種安全的算法,而且 AES 非常流行,並且被大多數人推薦。我的問題是,當 256 位密鑰用於 AES 和 448 位密鑰(根據標準的最大值)用於 Blowfish 時,兩者如何比較?具有 448 位密鑰的 Blowfish 會更能抵抗暴力攻擊嗎?還有其他考慮嗎?(假設我們已經同意 256 位密鑰足以抵抗暴力破解)。
Blowfish 的塊大小為 64 位,而 AES 的塊大小為 128 位,因此您在比較蘋果和橙子(在 AES 中您可以做的一些事情在 Blowfish 中是不明智的,尤其是 CTR 模式下的 Blowfish只需幾十 GB 的輸出就可以與隨機流區分開來 -請參見 fgrieu 在此處的回答,在計算中將 128 替換為 64)。
至於嚴格的暴力破解複雜性,我認為您已經回答了自己的問題,如果我們假設 256 位密鑰足以抵抗暴力破解,那麼使用更長的密鑰是沒有意義的。這就像試圖在“不可行”和“不可行”之間決定什麼是最好的。但從理論上講,Blowfish 使用了所有 448 位密鑰,因此暴力攻擊平均需要 $ 2^{447} $ 猜測密鑰,而 AES 會採取 $ 2^{255} $ 平均猜測(即 AES-256)。
現在,如果您想考慮密碼分析的進步,AES-256 的安全邊際(破解複雜性/蠻力複雜性)比 Blowfish 低得多,儘管兩者在今天仍然是安全的。也就是說,應該記住,由於 AES 是高級加密標準,它比 Blowfish 受到密碼學家的關注要多得多!