HS1-SIV 相對於 ChaCha20-Poly1305-SIV 的優勢?
HS1-SIV 與 ChaCha20-Poly1305-SIV 相比有哪些優勢?
我知道兩者都使用 ChaCha 流密碼,但我試圖理解為什麼 HS1-Hash 是更好的 MAC。
編輯:為了隱藏 Poly1305 結果,我將使用 ChaCha20 核心,即 HChaCha20,作為無隨機數但有鍵的 PRF。這是因為 ChaCha20 確實是計數器模式下的鍵控雜湊,也可以直接用作 PRF。事實上,這就是 XSalsa20 對 Salsa20 所做的——它使用 Salsa20 核心作為 PRF,從 256 位密鑰和 128 位隨機數生成 256 位子密鑰,其他 64 位用作子密鑰的隨機數。由於 HChaCha20 是一個強 PRF(否則 ChaCha20 被破壞),我可以通過丟棄前 128 位將它用作鍵控 128->128 位 PRF。
ChaCha20-Poly1305-SIV 沒有很好的定義,如果你定義它就沒有 SIV-mode 的優點。
SIV 模式本質上是 MAC-then-encrypt,MAC 被用作 nonce。ChaCha20-Poly1305 中的 MAC 需要一個隨機數,因為它使用 ChaCha20 來加密 Poly1305 身份驗證器(您不能透露原始身份驗證器)。所以你不能在沒有隨機數的情況下使用它來導出隨機數。
您可以使用在 MAC 計算中包含 nonce 的 SIV 版本,但是您不會獲得任何 nonce-reuse 阻力 - MAC 被 nonce-reuse 破壞。您還有定義如何將 128 位 MAC 用作僅採用 96 位隨機數的加密算法的隨機數的問題(並非不可克服)。
那麼,從本質上講,使用 SIV 模式與僅使用 ChaCha20-Poly1305 相比沒有任何優勢,性能和復雜性也有明顯的劣勢。HS1-SIV 通過使用消息的雜湊生成新*密鑰來解決這個問題。*這意味著隨機數濫用並不是世界末日。
隨著更新後的問題,MAC 是 Poly1305 並且應用了 PRF,對強隨機數的要求降低了。然而,除非你確實包含了一個隨機數,否則你會得到更糟糕的界限,所以你仍然需要一個隨機數(如果你想要的話,也可以使它成為非確定性的)。
在那種情況下,HS1-SIV 的優勢就不那麼明顯了。然而,希望它是一個更好的分析結構——或者如果它在 CAESAR 中表現良好的話。它還提供不同的參數選項,其中最高的使用大於 Poly1305 限制的 128 位的雜湊值。這意味著碰撞的機率更低,並且在遇到生日界限之前的消息數量更多。
同樣,您仍然需要定義如何在 ChaCha20 中使用 128 位隨機數,如何或是否對相關數據進行身份驗證等,但這似乎是 HS1-SIV 的中間參數集的合理選擇。那麼,HS1-Hash 的主要優勢就是它的靈活性。
(我不知道它是否具有性能優勢,但似乎有可能,特別是對於短消息,它比使用額外的 ChaCha 呼叫作為 PRF 更有優勢。)