Nonce

XChaCha20-Poly1305 nonce 抗誤用嗎?

  • September 26, 2019

Libsodium v​​1.0.12 和 v1.0.13 安全評估中,可以閱讀

ChaCha20-Poly1305 實現結合了流密碼,並通過設計抵抗定時攻擊。此外,這個特殊的結構在 libsodium 中實現了兩個額外的變體:一個 IETF 版本

$$ 7 $$和一個擴展隨機數(XChaCha20-Poly1305) $$ 4 $$. XChaCha20Poly1305 構造的一個好處是它支持隨機數誤用方案。

但是,我不明白 XChaCha20-Poly1305 構造如何防止隨機數誤用。

據我了解,XChaCha20 的工作原理如下:

  1. 生成一個 192 位隨機隨機數(6 個 32 位字 $ nonce_0,…,nonce_5 $ )
  2. 建構初始塊 $ B \leftarrow \begin{matrix} c_0 & c_1 & c_2 & c_3\ k_0 & k_1 & k_2 &k_3\ k_4 & k_5 & k_6 &k_7\ nonce_0 & nonce_1 & nonce_2 & nonce_3 \end{matrix} $ 在哪裡 $ c_i $ 是常數和 $ k_i $ 是關鍵詞
  3. 在不添加最終塊的情況下執行 ChaCha $ B’ \leftarrow \mathtt{HChaCha20}(B) $
  4. 建構子塊 $ B’’ \leftarrow \begin{matrix} c_0 & c_1 & c_2 & c_3\ B’0 & B’1 & B’2 &B’3\ B’{12} & B’{13} & B’{14} &B’{15}\ counter_0 & counter_1 & nonce_4 & nonce_5 \end{matrix} $
  5. 使用執行 ChaCha20 $ B’’ $ .

這樣,使用相同的隨機數將輸出相同的密鑰流。但是,據我了解,隨機數濫用抗性方案確保重複的隨機隨機數不會導致明文妥協。

因此,似乎在使用帶有隨機 nonce 的 XChaCha20-Poly1305 時,可以確保重複 nonce 的機率可以忽略不計。但這不是 nonce 抗誤用方案的定義。

如何使用 XChaCha20Poly1305 建構隨機數誤用方案?

關於libsodium AEAD 結構的文件提供了更多詳細資訊。

也就是說,它列出Hk(random ‖ m)了一種計算合成 XChaCha20 隨機數的方法。即使random不是唯一的,對於不同的消息,nonce 也不太可能相同。

更相關的是關於nonce-misuse resistanceshort nonces的部分。

請注意,與所有其他隨機數誤用抵抗方案一樣,這需要兩次遍歷數據。

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