Tls

使用 ChaCha20 代替 AES 有什麼吸引力?

  • February 6, 2021

我讀到了有關Google、SSH 在 TLS 中使用 ChaCha20 以及一般標準化的資訊。

使用 AES 以外的東西有什麼吸引力,AES 在各種架構上接收專用 CPU 指令以使其如此高效?

我相信 ChaCha20 有時比 AES 更受青睞有三個主要原因。

  1. 在沒有專用指令的通用 32 位(或更高)CPU 上,ChaCha20 通常比 AES 快。原因是 ChaCha20 基於 ARX (Addition-Rotation-XOR),這是 CPU 友好的指令。同時,AES 使用二進製欄位進行 S-box 和 Mixcolumns 計算,通常將其實現為查找表以提高效率。
  2. AES 使用帶有從密鑰派生的索引的查找表,這使得一般實現容易受到記憶體定時攻擊。ChaCha20 不易受到此類攻擊。(通過 AES-NI 實現的 AES 也不易受到攻擊)。
  3. Daniel J. Bernstein 在宣傳他的算法方面取得了顯著高於平均水平的成功。(我並不是說沒有優點。我只是在說明他的算法在部署方面取得了成功)。

當然,其他原因證明選擇 AES 而不是 ChaCha20 是合理的。

僅舉幾例:

  • 高端 CPU 上的專用指令
  • 收到的密碼分析數量
  • 側通道(記憶體時序除外)保護研究的可用性

除非我們從Google找到資訊——例如白皮書和郵件列表文章——我們只能推測為什麼選擇 ChaCha20。我認為高效的軟體實施仍然是最可能的原因。AES-GCM 相對脆弱——例如在定時攻擊方面——可能是另一個問題。

請注意,儘管 AES-NI 在 x86 處理器市場中變得越來越普遍,但這並不意味著其他處理器架構正在實施 AES 加速。例如,廉價的 Android 手機可能不包含它。此外,雖然 CPU 上支持 AES-NI,但這並不意味著軟體實際上正在使用該指令。可以使用附加指令加速 GCM 模式以加速 Galois 域乘法。

可以同時使用 AES CTR 和 Poly1305(同時確保不會以不安全的方式重用密鑰)。但是,組織必須先定義該 AEAD 算法,然後才能使用它。因此,使用 AES 可能意味著 GCM 身份驗證,而 ChaCha20 為您提供 Poly1305。

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