Encryption

暴力破解對稱密碼

  • October 28, 2020

我不明白我們如何暴力破解對稱密碼。

讓我們使用密鑰大小為的 AES $ 128 $ 舉個例子。這意味著有 $ 2^{128} $ 可能的密鑰,以及解密密文的多種方法 $ c $ . 鑑於有這麼多不同的密鑰,理論上可以解密 $ c $ 成多個似是而非的消息(例如,讀起來像英語的消息)。所以當我們在暴力破解時 $ c $ ,如果在某個時候我們獲得了一個似是而非的消息,我們無法確定我們找到了正確的密鑰,因為還有很多其他的似是而非的消息我們還沒有找到。

這與散列函式或非對稱密碼不同,我們有辦法確保我們找到了好的先行詞/私鑰。

所以我不明白他們在這篇文章中的意思:https ://en.wikipedia.org/wiki/Key_size

例如:

例如,三重 DES 被設計為具有 $ 168 $ 位密鑰,但複雜的攻擊 $ 2^{112} $ 現在已知(即 Triple DES 現在只有 $ 112 $ 位的安全性,以及 $ 168 $ 攻擊所呈現的密鑰中的位 $ 56 $ 對安全“無效”)。

即使三重 DES 只有 50 位的安全性,我們仍然能夠解密多個不是原始消息的似是而非的消息,更不用說原始消息是亂碼且不一定是自然語言的情況。我覺得“安全級別”的概念對於散列函式/非對稱密碼和對稱密碼是不一樣的。對於兩者,它指的是我們知道好的先行詞/密鑰所在的先行詞/密鑰空間的子集,但是對於後者,我們永遠不能確定我們已經找到了好的密鑰,因此我們暴力破解成功.

你能給我解釋一下嗎?謝謝您的幫助。

您忘記了消息通常由許多塊組成,並且許多消息包含的結構不僅僅是英文文本。例如,RSA 私鑰在編碼時將具有易於區分的標頭,並且在使用分組密碼加密時將由許多明文/密文塊組成。Word 文件、XML 消息、圖像和許多其他格式也是如此。

否則,這是一個簡單的機會遊戲。在根據可用資訊正確解密的每個塊中,您會更有信心找到正確的消息。但是,您可以選擇一個您擁有最多資訊的塊,並且只有在找到匹配項後才繼續解密下一個塊。這樣,您可以非常快速地過濾掉錯誤的鍵。

例如,對於英文文本,您通常至少知道一位:ASCII 文本的最高一位始終為零,因此每個塊已經有 8 位,您需要正確處理。假設您只需檢查之後的英文文本是否一致,每字節/字元還有 2 位。然後你只需要前進到下一個街區一次 $ 2^{8 \cdot 3} = 2^{24} = 16,777,216 $ . 在計算密碼強度的過程中,我們可以放心地忽略這種細節。如果消息非常小,那麼這種分析確實會失敗,並且您無法判斷密鑰是否正確。這很容易通過查看單比特加密來顯示,例如使用 CTR 等流密碼模式。

正如評論中所指出的,通常我們還假設消息具有完整性保護並提供消息身份驗證,通常通過身份驗證密碼模式或顯式包含消息身份驗證程式碼 (MAC)/身份驗證標籤。在這種情況下,也可以通過該程式碼驗證密鑰的正確性。對於添加至少 64 位進行測試的大多數模式(大多數經過身份驗證的模式為 128 位,如果使用 HMAC,則為 256 位或更多)。

通常,對於攻擊,我們假設消息(部分)是已知的,即,對於已知明文攻擊,至少是已知明文。密碼有望比這更安全:允許攻擊者選擇哪些消息被加密,同時不洩露有關數據的資訊(除了有關消息大小的資訊)。換句話說,密文在選擇明文攻擊下應該與隨機無法區分,即IND-CPA安全。

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