Modes-of-Operation

ECB模式下的重放攻擊

  • January 3, 2014

重放攻擊如何在 ECB 模式下工作?我在維基百科中找到了這個:

“ECB 模式還可以使沒有完整性保護的協議更容易受到重放攻擊,因為每個塊都以完全相同的方式解密。例如,夢幻之星 Online:Blue Burst線上影片遊戲在 ECB 模式下使用 Blowfish。在密鑰之前交易所繫統被破解,手段更加容易,作弊者重複加密“殺怪”消息包,每個加密Blowfish塊,非法快速獲得經驗值。$$ citation needed $$"

但我想知道重放攻擊在 ECB 模式下的真正工作原理,以及其他分組密碼操作模式(如 OFB)如何避免它。

重放攻擊僅僅意味著攔截有效消息的攻擊者可以根據需要多次重新發送該消息。如果消息中沒有不能合法重複的內容,那麼接收者將沒有理由不接受它作為有效消息。

一般來說,所有加密模式都可能容易受到重放攻擊,具體取決於它們的使用方式。防禦此類攻擊的常用方法是在每條消息中包含某種唯一標識符和/或時間戳,以便接收者可以檢測到重複的消息。然後應該使用消息驗證碼 (MAC)或經過驗證的加密模式來保護消息不被修改,這樣攻擊者就不能簡單地更改 ID 或時間戳。

由於您從 Wikipedia 引用的聲明缺少任何可以讓我查看特定攻擊的詳細資訊(甚至驗證它確實發生過)的參考資料,因此我所能做的就是回答您的問題,提供一些關於 ECB 模式的猜測可能更容易受到重放攻擊,或者如何使其他分組密碼模式更能抵抗它們:

  • 首先,ECB 模式特有的一個弱點是您可以獲取兩條消息,在密碼塊邊界處將它們分開,然後再次將兩半連接在一起,以獲得結合兩個原始消息的部分的有效消息。根據消息的構造方式,這可能允許攻擊者將舊消息的內容粘貼到新消息的 ID 和時間戳上,這顯然違背了他們的目的。
  • 其次,其他分組密碼模式,例如 CBC、CFB、OFB 和 CTR,都需要唯一的初始化值 (IV) 或“nonce”(本質上是唯一的標識符)。雖然防止重放攻擊不是需要這些 IV / nonce 的主要原因,因為它們在那裡並且無論如何它們都需要是唯一的,它們也可以用於檢測重複消息。

一個潛在方便的特性是,對於許多(但不是全部!)模式,即使在沒有 MAC 的情況下,嘗試修改 IV / nonce 也會在解密時將整個消息變成隨機垃圾。OFB 和 CTR 模式尤其如此,否則它們很容易受到密文修改的影響。(當然,這在其他方面仍然不能很好地替代 MAC。)

  • 最後,在某些應用程序中,可能根本不需要傳輸 IV / nonce,因為它可能是從一些外部資訊(例如之前看到的消息或塊的數量,如果消息以嚴格的順序在一個據稱可靠的渠道)。在某些情況下,所有消息甚至可能被加密並作為單個連續流傳輸,基本上只是一條長消息。

這顯然使得對非 ECB 模式的重放攻擊變得困難或不可能,因為重複舊消息只會導致接收者嘗試使用錯誤的 IV / nonce 對其進行解密。然而,由於上述特性,ECB 模式仍然容易受到攻擊,即,由於每個塊都以相同的方式獨立加密,而不管其在流中的位置如何,攻擊者可以以任何方式混洗(刪除或複制)塊不影響他們的解密。

不過,我應該指出,所有這些攻擊僅適用於沒有身份驗證的情況。即使是 ECB 模式,如果結合 MAC 和唯一的消息 ID 來檢測重複,也可以防止重放攻擊。當然,完全不加密也是如此,只有唯一的消息 ID 和 MAC,但至少添加 ECB 模式加密不會讓事情變得更糟。

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