Ctr

使用 64 位塊的 CTR 模式有哪些風險?

  • June 4, 2018

DJB 的部落格上,他寫道:

我是參加會議的大約 40 人中的一員,演講者 NSA 的 Louis Wingers(Simon 和 Speck 的作者之一)錯誤地聲稱計數器模式對於 64 位塊是安全的,因為計數器模式沒有塊衝突. NSA 對這些危險密碼的持續推廣包括在研究小塊大小的“可證明安全”論文的介紹中引用的完美句子。

我可以想到64位CTR模式的以下問題(與HMAC一起使用或不需要消息認證)

  • 如果長度接近(或大於),則可以將密鑰流與隨機區分開來 $ 2^{32} $ 塊。假設沒有計數器溢出,沒有兩個塊將具有相同的值。生日效應意味著在這麼多塊之後,預計會出現重複的塊值。
  • 存在潛在的明文資訊洩漏。對於密文 $ C $ 和明文 $ P $ (對於任何長度),僅當 $ P_i \neq P_j $ 可能 $ C_i = C_j $ 在哪裡 $ i \neq j $ . 對於任何塊大小的 CTR 模式都是如此,但對於 64 位塊來說比 128 位塊更成問題,因為 64 位塊的生日限制更小。
  • 隨機 IV 衝突太常見了,因為 IV 的最大長度小於 64 位。

與 64 位塊大小相關的 CTR 模式是否存在其他問題?(可能與不同的消息身份驗證算法有關。)如果不是,那麼 Bernstein 指的是什麼?如果可以重新生成密鑰以避免使用相同密鑰加密太多塊,我發現的問題似乎很小。

我希望我的清單不是詳盡無遺的,所以我不需要發布我自己的問題的答案。除了數學問題,我懷疑還有很多人為問題。我認為僅這些就足以證明完全不鼓勵 64 位塊大小是合理的。另外,我認為 IV 問題特別嚴重。

我相信他指的是一種誤解,即加密中出現的生日問題僅在您使用相同的計數器兩次時才會出現。如果使用隨機 IV,那麼這樣的計數器會在 $ 2^{32} $ 高機率的塊(如果你想要一個 $ 2^{-32} $ 安全邊際那麼你只能加密 $ 2^{16} $ 塊)。但是,如果保證使用不同的計數器,那麼您永遠不會在分組密碼的輸入上遇到衝突,因此您可以加密更多。我假設 NSA 的聲明是參考這個版本的計數器模式,其中保證了不同的計數器(如果你有狀態,這很容易做到)。

無論如何,由於您指出的確切原因,這是一個誤解。問題是人們認為這只會洩露很少的資訊,不像在 CBC 模式中,密文中的衝突會立即揭示兩個明文塊的異或。最近,在 EUROCRYPT 2018 上,發表了一篇論文,展示了當計數器模式在生日範圍之外使用時,如何在許多現實場景中獲取實際明文,即使使用獨特的計數器也是如此。這篇論文名為The Missing Difference Problem, and its Applications to Counter Mode Encryption。我建議閱讀它。

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