Encryption

蠻力,通過多個純文字及其密文獲取 AES 密鑰

  • June 17, 2017

我知道加密是 AES,我有多個帶有密文的純文字,實際上我不知道加密模式(ECB、CFB 等),但我知道密鑰和 IV密鑰(如果使用)是靜態的,不可更改。

我怎樣才能得到密鑰,或者有沒有辦法用相同的密鑰加密文本,所以我可以得到我想要的任何純文字的密文?我可以支付任何工具或服務來做到這一點嗎?

不,你拿不到鑰匙。這將需要對 AES 塊密碼本身進行密鑰恢復攻擊,並且沒有已知的實用方法可以做到這一點。

是的,使用固定密鑰和 IV,以及對任意選擇的明文進行加密的能力,您可能可以閱讀任何加密的消息。詳細資訊將取決於所使用的操作模式

CTROFB模式下,這很簡單:將任何密文與相應的明文進行異或運算將為您提供密鑰流,然後您可以將其與任何其他密文異或來解密它。或者,如果您覺得懶惰,只需獲取任何密文並將其作為明文送出以進行加密。由於 CTR 和 OFB 模式加解密是同一個操作,這會直接給你原始的解密消息。

使用CFB模式,事情變得有點棘手,因為密鑰流將取決於被加密的消息。第一個塊仍然很容易,因為第一個塊的密鑰流僅取決於(固定)IV。事實上,對於第一個模組,CFB 和 OFB 模式在數學上是相同的。要解密剩餘的塊,我們可以送出一條消息進行加密,該消息以與我們嘗試解密的消息相同的方式開始,直到第一個未知塊的開頭,然後包含我們選擇的任意文本塊。將這個任意的明文塊與相應的密文塊進行異或,然後為我們提供了我們需要與目標密文的那個塊進行異或來解密它的密鑰流塊。

在這種特殊情況下,CBCECB模式被證明是最困難的目標,因為它們是五種經典密碼模式中唯一通過分組密碼提供明文的模式。在 ECB 模式下,每個塊都是獨立加密的,這會立即揭示消息中是否存在任何重複塊。此外,如果我們可以對密文塊可能編碼 的明文做出合理的猜測,我們可以通過將其送出加密並查看是否得到相同的密文塊來輕鬆確認該猜測。這可能看起來不切實際,但實際上或多或少存在真實的攻擊場景這種攻擊可以允許任意消息被逐字節解密

在 CBC 模式下(具有固定 IV),相同的攻擊直接作用於第一個塊。更一般地說,如果您可以猜測明文(的前綴),則可以將其送出以進行加密並比較密文,以查看您的猜測首先與實際明文不同的塊(如果有)。在適當的條件下(本質上,能夠獲得對相同秘密明文進行編碼的多個密文,但移動了不同的字節數),也可以通過與 ECB 模式相同的方式利用此漏洞。


要弄清楚您正在處理哪種操作模式,您可以送出一些明文進行加密並比較生成的密文:

  • ECB 模式很容易通過送出由重複重複的相同字節組成的明文來檢測。如果生成的密文以一個密碼塊的周期重複(對於 AES,16 字節 = 128 位),那麼您肯定是在處理 ECB 模式。巧合的是,這也會告訴你密碼塊的長度,如果你還不知道的話。
  • 如果任何兩個不同明文(長於一個塊)的異或總是等於相應密文的異或,那麼您正在處理 CTR 或 OFB 模式。沒有簡單的方法可以區分這兩種模式,但由於相同的攻擊對兩種模式都有效,所以這並不重要。
  • 如果密文的 XOR 與第一個密碼塊的明文的 XOR 匹配,但隨後出現分歧,則您可能正在處理 CFB 模式。(如果只有第一個字節匹配,您可能正在處理很少使用的CFB-8 模式;其他回饋長度也可能只有一位,但更不常見。)您可以通過送出兩個相同的明文來確認這一點第一個塊,看看現在明文和密文的異或是否匹配前兩個塊,依此類推。
  • 送出具有相同第一個塊(但第二個塊不同)的兩個明文也可以讓您檢測 CBC 模式:如果密文的第一個塊匹配,但第二個(以及任何後面的)塊完全不同,您幾乎可以肯定在處理使用 CBC 模式或它的一些變體(如 PCBC)。

請注意,上面的大多數攻擊和測試只能起作用,因為密碼被錯誤地使用固定的 IV。在正常使用中,每條消息的 IV 應該是唯一的(對於 CBC 模式,是不可預測的),在這種情況下,僅使用加密預言機來區分不同的模式變得更加困難。但是,如果您可以訪問解密預言機,您仍然可以應用類似的測試(因為在這種情況下,您通常可以指定 IV)。

作為練習,您可能需要查看Wikipedia 頁面上有關分組密碼加密模式的圖表,並找出這些測試(以及上述攻擊)起作用的原因,以及您可以執行哪些其他測試以進一步確認您的圖形辨識。

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