XChaCha20 與 AES 128 安全性和速度
由於使用更大的密鑰/隨機數大小,具有 256 位密鑰和 192 位隨機數的 XChaCha20 是否比 128 位密鑰 128 位密鑰隨機數 AES 更安全?由於是流密碼,它不應該更快嗎?(在我的實現中結果更快)
有任何文件或資源可提供進一步指導嗎?謝謝
首先,我說每次提到ChaCha20,XChaCha20也是一樣,因為安全性是一樣的。XChaCha20 內部使用 ChaCha20,唯一的區別是它使用稱為 HChaCha20 的函式來派生一個子密鑰,這允許更大的隨機數。你可以在這裡閱讀更多關於它的資訊。
由於使用更大的密鑰/隨機數大小,具有 256 位密鑰和 192 位隨機數的 XChaCha20 是否比 128 位密鑰 128 位密鑰隨機數 AES 更安全?
是的,您可以為 XChaCha20 比 AES-128 更安全提出強有力的論據。
ChaCha20 比 AES 具有更高的安全裕度,軟體 AES 實現可能容易受到記憶體定時攻擊(雖然現在硬體支持很普遍,但這並不重要),並且通常建議使用 256 位密鑰用於後量子安全。128 位密鑰還可以允許批量/多目標攻擊,這是您一次攻擊系統中的多個使用者的地方。
AES 得到了更多的密碼分析(部分原因是它的存在時間更長),但 ChaCha20 具有良好的傳統,因為它與 Salsa20 相關,後者是eSTREAM比賽的決賽選手。ChaCha20 也被許多知名協議使用,例如TLS 1.3。
較大的 nonce 大小不一定對安全性很重要;這取決於應用程序以及加密密鑰的輪換頻率。128 位足以隨機生成隨機數,但 192 位為您提供了一些額外的餘地。
如果您每次都使用唯一的密鑰,您可能會使用更短的隨機數(例如 96 位)。但是,可以考慮使用 192 位隨機隨機數來替代SIV 模式,這種模式具有抗誤用性,有時用於密鑰包裝。隨機數大小還可以讓您建構SIV 實現。
由於是流密碼,它不應該更快嗎?(在我的實現中結果更快)
由於硬體支持, AES 和衍生產品通常會更快。但是,如果沒有硬體支持,ChaCha20 應該會更快,這就是它被用於移動設備的原因。如果不能保證硬體支持,ChaCha20 就更有意義了,而且它肯定不是一個慢速算法。
最後,由於子密鑰派生,XChaCha20 實際上比正常 ChaCha20 稍慢。因此,如果您不需要隨機數,則改用 ChaCha20 可能更有意義。