Encryption

CBC真的死了嗎?

  • March 17, 2020

我用 C# 開發了一個 p2p 應用程序,它可以發送和接收加密的文本消息 (50kB)。對於加密,我的應用在CBC 密碼模式下使用 128 位AES。對於每條消息,它使用一個新的隨機生成的 IV。

但是,在閱讀了以下兩篇出版物後,我對我的解決方案有些擔憂:

我不是加密專家,所以我的問題很簡單:我必須用另一種密碼模式替換 CBC,還是在我的場景中它仍然安全?

由於我的應用程序使用 C# 中的 RijndaelManaged 類,我的替代方案是:CFB、 CTS 、OFB

攻擊是由於可預測的初始化向量。如果您為每條消息使用新的隨機 IV,則該攻擊不適用。

在 TLS 的 pre-1.1 版本中,每條記錄的 IV 是前一條記錄的最後一個密文塊;這可用於影響伺服器使用的 IV。

這在消息中很好,但是當您繼續將密碼塊從一條消息連結到下一條消息時,問題就出現了。

最近 BEAST 攻擊利用的 CBC 漏洞發生在攻擊者可以在知道將使用的 IV 的情況下選擇部分加密消息時。在 SSL/TLS 的情況下,數據被分成連續的記錄,每條記錄本身就是“一條消息”。攻擊者產生一些數據,觀察對應的記錄,並知道該記錄的最後一個塊將用作下一條記錄的IV。

如果每個“消息”都使用新生成的 IV 加密,則不會出現此問題,這樣攻擊者無法預測 IV 生成過程。這就是較新版本的 TLS 所做的(從 TLS 1.1 開始),他們對 CBC 非常滿意,這並不比 Disco 更糟糕。

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