Encryption

正確使用 AES CTR

  • January 21, 2022

我讀過 AES CTR 只有在正確使用的情況下才是安全的。因此,我想確保我正確使用它。

  1. 初始向量 (IV) 只能使用一次,它不必是隨機的。對 IV 的一部分使用計數器是否安全,另一部分只是一些 const 文本。計數器以明文形式傳輸給每個人,而消息的敏感部分則被加密。下一個 IV 是可預測的,這是一個問題嗎?
  2. 我知道 IV 永遠不會重複,但以防萬一這種情況需要多少次迭代才能破解系統。我的意思是同一個計數器重複兩次還是 100 次?
  3. 最後但同樣重要的是,使用 AES-256 而非 AES-128 加密 16 字節消息是否會提高安全性?

在這裡我們做了一個區分。 $ nonce \mathbin|counterpart $ 構成 $ IV $

  • 下一個 IV 是可預測的,這是一個問題嗎?

不,在 CTR 模式下這不是問題,閱讀更多內容$$ 1 $$. 這 $ IV= (nonce\mathbin|counterpart) $ 被加密,密文與明文進行異或運算。

$$ C_i = \operatorname{AES-CTR}(nonce\mathbin|encode(i)) \oplus P_i $$

只要 $ (IV,key) $ 對從不重複假設您總是從計數器中的 0 開始使用新的隨機數或新密鑰進行每次加密,那麼您的 16 字節就沒有問題。

如果有重複,則機密性失去。

我知道 IV 永遠不會重複,但以防萬一這種情況需要多少次迭代才能破解系統。我的意思是同一個計數器重複兩次還是 100 次?

兩對足以用嬰兒床和拖拽技術打破機密性。現在是自動化的$$ 2 $$. 如果你知道其中一個,那麼用 x-or 找到另一個是微不足道的。

最後但同樣重要的是,使用 AES256 而非 AES128 加密 16 字節消息是否會提高安全性?

只要使用得當,CTR 模式就是 CPA 安全的。AES-128 是安全的(大部分)$$ 3 $$然而,使用 AES-256,即使是 Grover 機器提供的量子對手也將是安全的。


請注意,在 CTR 模式下,您只能獲得 CPA 安全性,即沒有完整性和身份驗證。為了實現完整性和身份驗證,可以使用 AES-GCM(帶 SIV)。SIV 模式使用消息來避免 IV 問題。當 IV 重複時,它只洩漏消息的相等性,而不是內容。

正確使用 AES CTR

您的義務:作為擔保契約

  • 選擇統一隨機密鑰 $ k $ 尺寸為 256 並始終保密。

  • 選擇 IV 並確保 $ (k,IV) $ 即使計數器增加,也不會重複;

    • 使用確定性計數器或 LFSR來跟踪 $ nonce $ ,如果出現錯誤/系統停止,請確保交換新密鑰,他們可能無法寫入最後使用的密鑰 $ nonce $ .
    • 或者,使用隨機 $ nonce $ ,請確保您在碰撞中處於低位 $ nonce $ 在同一個鍵下。
    • 總是從 $ 0 $ . 如果計數器不是從 $ 0 $ 如果隨機數相同,則有一條危險的路徑可能導致 IV 重複。
  • 加密消息並確保它不超過 $ 2^{32} $ .

    • 保證沒有區別,並且
    • 保證計數器永遠不會通過所有 1 狀態,即永遠不會超過計數器的最大值。
  • 儲存它。

你得到什麼

  • Ind-CPA 安全,僅此而已!

相反,可以使用具有 192 位隨機數的 XChaCha20-Poly1305 $ (IV,key) $ 發生可以忽略不計。您也將獲得身份驗證和完整性。由於 CTR 模式是為 PRF 設計的,因此 XChaCha20 最好與 CTR 模式一起使用(XChaCha20 內部使用 CTR)。


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