Block-Cipher

為什麼將 CTR 模式計數器拆分為 nonce 和 counter 是好的?

  • August 16, 2015

討論分組密碼的 CTR 模式時,維基百科這樣說:

簡單地將隨機數和計數器添加或異或到單個值將完全破壞選擇明文攻擊下的安全性。

我不明白拆分隨機數/計數器設計與簡單地使用隨機值和遞增之間的區別。為什麼使用 nonce +/⊕ 計數器不安全而 nonce || 櫃檯安全嗎?

我看不出拆分隨機數/計數器和隨機數 +/⊕ 計數器之間的區別。乍一看,拆分隨機數/計數器模式與將一堆 0 位連接到隨機數並使用隨機數 +/⊕ 計數器模式不一樣嗎?

(通過“+/⊕”,我的意思是加法或異或,因為用於此目的似乎並不重要。)

假設您將 CTR 模式設置為:

$ E(k,nonce+1) \oplus m_1 $ , $ E(k,nonce+2) \oplus m_2 $ , $ E(k,nonce+3) \oplus m_3 $ , ETC。

維基百科頁面正在討論一個非隨機隨機數,並帶有一個數據包計數器的具體範例。所以假設 $ nonce $ 是一個數據包計數器,在每個數據包中你加密幾個塊。您可能會得到以下結果:

在數據包中# $ p $ :

$ E(k,p+1) \oplus m_1 $ , $ E(k,p+2) \oplus m_2 $ , $ E(k,p+3) \oplus m_3 $ , ETC。

在數據包中# $ p+1 $ :

$ E(k,(p+1)+1) \oplus m’_1 $ , $ E(k,(p+1)+2) \oplus m’_2 $ , $ E(k,(p+2)+1) \oplus m’_3 $ , ETC。

隨機數是唯一的,但 CPA 安全性被破壞。你用過 $ E(k,p+2) $ 作為遮罩兩次,並且正在洩漏 $ m_2 \oplus m’_1 $ .

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