Modes-of-Operation

CTR 模式下的重複 NONCE

  • August 24, 2016

我的理解是,在 CTR 模式下,NONCE 必須是唯一的,因為如果重用 NONCE,多個明文將與相同的值進行異或運算,這使攻擊者可以利用來解密數據。

如果您的情況很難保證 NONCE 始終是唯一的,但您有一個快速(無論在您的上下文中意味著什麼)加密實施,我可以通過添加額外的加密來消除重複 NONCE 所帶來的影響嗎?步正常 CTR 模式過程?

例如替換

AES256(key, NONCE) XOR Plaintext

AES256(key2, (AES(key1, NONCE) XOR Plaintext))

我知道我失去了 CTR 模式處理任意長度明文的能力(這對我來說很好,我很高興在塊中工作),並且我需要做的加密量增加了一倍,但我認為這保留了優勢CTR 模式(相對於 ECB 模式),同時獲得一些針對重複 NONCE 的保護。

這種方法有效嗎?有沒有更輕鬆的方法來獲得一些針對重複 NONCE 的保護?

我專注於 CTR 模式,因為我的通信渠道不一定可靠,並且我擔心如果我使用任何連結模式需要“重新同步”。

如果你的 nonce 確實發生衝突,這將比簡單的 CTR 更好,但它仍然不是很好。

假設您對兩條消息使用相同的 IV $ m_0||m_1||…m_n $ 和 $ m_0’||m_1’||…m_n’ $ 所有的 $ m_i $ 是 128 位塊。每個塊與另一條消息中的相應塊相同的密鑰流值進行異或。然後它們通過 AES,與 ECB 模式相同。如果有的話 $ m_i=m_i’ $ ,它們具有相同的密文,因此密碼會洩露有關消息的資訊。

SIV 模式將更接近您正在尋找的內容。它應該差不多快,儘管它確實需要兩次單獨的數據傳遞。在 nonce 重用的情況下,它會洩漏(完整)消息的相等性,但沒有更多資訊。

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