Block-Cipher

分組密碼的有效安全性——等於密鑰大小,還是密鑰大小的一半?

  • June 30, 2017

維基百科“密鑰大小”文章指出:

算法的安全性不能超過其密鑰長度(因為任何算法都可以通過暴力破解),但可以更小。… … … 大多數常用的對稱密鑰算法都設計為具有與其密鑰長度相等的安全性。

(強調我的)

John Viega 和 Matt Messier所著的“C 和 C++ 的安全程式食譜:密碼學、身份驗證、輸入驗證等的秘訣”一書指出(第 161 頁,第 4 節的第二半部分):

一般的經驗法則是,假設密碼沒有比暴力破解更好的已知攻擊,分組密碼的有效強度實際上是密鑰大小的一半。

(強調我的)

現在…

為避免挑剔,讓我們保持簡單,並假設單個分組密碼不使用會失去密鑰提供的一些有效安全性的算法。另外,讓我們假設不存在已知的攻擊。

聲稱該密碼的有效安全性等於密鑰大小,還是密鑰大小的一半更正確?更簡單的問題是:引用的兩個陳述中哪一個是正確的,為什麼?

我剛剛讀了這本書的那一章,作者並沒有真正證明他們的說法是正確的。

他們還談到“使用隨機數據來防止碰撞和預計算攻擊”(這將給你完整的密鑰大小的加密強度)——這是關於使用隨機初始化向量等。

但是,如果您使用的是不安全的操作模式,或者需要隨機模式的非隨機 IV,那麼使用更大的密鑰大小並沒有真正的幫助,因為這裡可能的攻擊並不是真正的密鑰恢復攻擊。

這些東西可以工作的地方是散列函式(最多有 $ 2^{n/2} $ 嘗試抗碰撞性,假設 $ n $ -bit 輸出),並且雜湊中包含的密鑰使暴力破解成為不可能。但這肯定不是“對稱加密”。

另一種將復雜性降低到一半密鑰大小的可能性是假設一台(足夠大的)量子電腦——它可以在 $ 2^{n/2} $ 步驟而不是 $ 2^{n} $ 腳步。但本章中的文字看起來並不像他們指的是這個。

在沒有新的通用攻擊的情況下,理想對稱密碼的加密強度等於它的密鑰大小(即平均需要 $ 2^n/2 $ 嘗試暴力密鑰搜尋攻擊)。

通常,這也適用於所有未損壞的加密算法(僅根據“未損壞”的定義):具有密鑰大小的對稱密碼 $ n $ 位應該提供 $ n $ 位加密強度。

所以我的說法是:“如果你擔心未來的量子電腦攻擊(或者通常對算法的攻擊會削減一些安全性,但不是全部),請使用更大的密鑰大小,否則保持在 128 位。 "

引用自:https://crypto.stackexchange.com/questions/18100