不同的 AES 密鑰長度有什麼影響?
變化的密鑰長度如何影響密文,不僅在 AES 的情況下,而且在一般情況下?我知道密鑰空間會變得更大,並且在 AES 發生變化的情況下輪數會發生變化,但是如果我選擇 256 位作為密鑰長度,那麼安全性真的會增強很多嗎?
我目前正在考慮的其他事情,是否有可能獲得有關觀察到的密文的密鑰長度或算法的任何詳細資訊?例如,在測量熵(或其他任何東西)時,AES 和 DES 之間有什麼區別嗎?
對於對稱算法(如 AES 或 DES 或 RC4 - 但不是RSA 或 ECDSA),密鑰是位序列,因此任何相同大小的位序列都是潛在密鑰。所以更長的鍵意味著更多可能的鍵。
窮舉搜尋是嘗試所有可能的鍵,直到找到匹配項。這是對算法強度的絕對限制:窮舉搜尋總是適用的,算法對它無能為力。對窮舉搜尋的唯一防禦是擴展可能鍵的空間,即具有更長的鍵。幸運的是,這是非常有效的:據報導,最大的窮舉搜尋實驗是針對64 位密鑰(正在搜尋 72 位密鑰,但尚未完成)。傳統上我們使用“80 位”作為實際限制,但技術改進可能會迫使我們增加它。每增加一個位,窮舉搜尋的難度就會增加一倍。在 security.SE 上查看此答案進行一些額外的討論。底線:128 位是安全的。
比較 128 位和 256 位密鑰的優勢有些微妙:雖然後者的密鑰空間要寬得多,但前者已經處於“無法破解”的區域,你無法比這更好,實際上。因此,說 AES-256 比 AES-128 強將是一種辱罵。
有幾個陷阱:
- DES 使用 64 位密鑰(而 3DES 使用 192 位密鑰)。然而,算法規範使得 DES 完全忽略了 64 個密鑰位中的 8 個(3DES 忽略了 24 個位)。因此,DES 的密鑰大小通常被稱為 56 位(3DES 為 168 位)。
- AES 隨密鑰大小變化:密鑰越長,輪數就越多。這與詳盡的關鍵字搜尋無關;這是因為更長的密鑰是“更高學術實力”的承諾(“學術”意味著“我們假設攻擊者可以執行 300 位窮舉搜尋”)。在學術上,AES需要窮舉搜尋才能成為最好的攻擊(即對算法內部結構的攻擊必須更慢)。256 位密鑰提高了標準:非窮舉搜尋攻擊不能比 $ 2^{256} $ 工作因素。因此額外的回合。在實踐中,額外的回合不會給你帶來更多的安全性(就像更大的密鑰不會使算法真的比已經牢不可破的 AES-128 更不易破解);額外的回合所做的是它們使加密速度降低了 40%。
- 當算法隨著密鑰大小而變化時,這不再是“相同”的算法,所以任何事情都會發生。AES-256 理論上可能具有 AES-128 沒有的弱點(不能保證額外的輪次不會損害安全性)。
- 對稱密鑰大小很少是使用密碼學的系統的弱點。如果您使用 64 位密鑰並且該密鑰大小確實是最佳攻擊點,那麼您可以認為自己非常幸運:系統的其餘部分必須非常健壯。
要回答關於密鑰長度的第一個問題: DES 使用 56 位密鑰。蠻力攻擊需要的最大復雜度為 $ 2^{56} $ 找到正確的密鑰。現在按照今天的標準,這並不多。一個複雜的 $ 2^{90} $ 或更多被認為足夠安全。根據該標準,任何密鑰大小(128、192 或 256)的 AES 都足以使用。就他們的相對安全性而言,請閱讀這篇文章。在這篇文章中,Bruce Schneier 建議使用 AES-128 而不是 AES-256。
對於第二個問題: AES、DES 或任何其他好的加密算法基本上都是 PRF(偽隨機函式)。一個好的 PRF 的特性是不能僅僅通過觀察它們的輸出來區分 PRF 和 TRF(真正的隨機函式)。
因此,如果能夠觀察密文並判斷它是來自 AES 還是 DES,那麼它就完全違背了目的。人們甚至無法判斷密文是從 PRF(如 AES)還是 TRF 生成的,更不用說辨識 PRF 的類型了。