Encryption

有沒有破解AES加密密碼的實用方法?

  • April 14, 2020

我聽說破解 AES-128 加密或 AES-256 加密的最快方法是暴力破解,這可能需要數十億年的時間。但我不禁想到必須有一種更快的方法。由於 AES 加密對 zip 文件中包含的數據進行了加擾,因此可以通過正確解擾該數據來找到密碼。假設文件中的一部分數據是已知的,例如文件末尾的字元串,或者包含已知文件類型中預期字節序列的標頭。然後通過將加擾字節與“預期的”未加擾字節進行比較,可以通過計算轉換這些字節的算法輕鬆確定密碼,因為加擾字節和未加擾字節都是已知的。只有公式未知。然而,此類破解的條件是 zip 文件包含已知的文件類型,這些文件類型具有確定的數據格式,並將某些數據放置在文件的某些位置。例如,3ds 文件總是以包含字節“4D4D”的標頭開頭。

因此,隨著破解的進行,重新排列序列的可能密碼列表開始縮小。那麼這種方法靠譜嗎?或者它有什麼問題,比如zip中字節的實際地址可能與解壓縮文件中的地址不同。

的,在問題的情況下,密碼恢復攻擊是完全合理的。

該問題考慮了(部分)已知的明文攻擊,例如,對於使用 AES 加密的文件,加密文件的某些標頭是已知的,其中密鑰已根據使用者提供的密碼確定。在這種情況下,考慮對 AES 密鑰進行暴力搜尋的預期 AES 操作數並不重要( $ 2^{127} $ 對於 AES-128, $ 2^{255} $ 對於 AES-256),因為這不是最好的(也不是可靠的)攻擊策略。

合理的攻擊策略是密碼破解:嘗試密碼,大致從最可能被選擇到最不可能被選擇,並且每次嘗試解密直到達到已知明文的點,如果此測試失敗,則繼續使用下一個密碼。攻擊成本取決於:

  1. 如何選擇密碼。使用者在這方面差異很大,並且123456MdSm2aZ!t&5u*Z5. 這因上下文和使用者的動機而有很大差異。請參閱強制性 XKCD
  2. 密碼如何轉換為 AES 密鑰。此處應使用基於密碼的密鑰派生函式,並對其進行參數化,以增加相當大的成本

攻擊的成本大致增長為 $ 2^E $ 乘以 PBKDF 的成本(假設它決定了測試密碼的成本),其中 $ E $ 是以位為單位的密碼熵。例如,如果密碼是 6 個隨機十進制數字 ( $ E=\log_2(10^6)\approx19.9,\text{bit} $ ),而 PBKDF + 明文測試使用 0.1 秒的 CPU 時間(300000 CPU 週期 @3GHz),一個有能力的攻擊者將使用平均 $ 10^6\times10^{-1}/2=50000,\text{s}<14,\text{h} $ 找到密碼的 CPU 時間,對於一台 8 核 PC 來說,不到 2 小時的掛鐘時間,對於強大的對手來說是幾分鐘。

不。

甚至不知道 AES 會在大量明文-密文對中失敗。即使您能夠加密任何您喜歡的內容並獲得結果,您也無法學習密鑰(在可行的時間內)。

基本上說,這些公式在現代電腦上可能非常複雜,以至於它變得足夠複雜,最好的方法是嘗試每一種可能性。

因此,隨著破解的進行,重新排列序列的可能密碼列表開始縮小。

改變一個變數會改變結果的一切。您甚至沒有足夠的儲存空間來儲存 1% 的結果可能性。最好的可能性仍然是嘗試每一個鍵。

話雖如此,通常實現可能有一些弱點。通常密碼本身是最薄弱的地方(如果有密碼),而不是其他任何東西。因此,如果它是使用密碼加密的,最好的辦法是希望密碼很弱。

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