Aes
如何在 AES256-GCM、XSalsa20Poly1305 和 XChaCha20Poly1305 之間進行選擇?
在 libsodium 中,有 3 種對稱加密(流密碼),它們是 AES256-GCM(硬體加速)、XSalsa20Poly1305 和 XChaCha20Poly1305(不確定哪個版本的 libsodium 添加了對 XChaCha20Poly1305 的支持)。
考慮到如果硬體支持 AES256-GCM 將是主要選擇,因為它是文件儲存或任何其他適用平台中常見的行業標準。
AES256-GCM 在文件儲存中很常見,因為伺服器會請求使用者的密碼(例如密碼/密碼片語)來派生密鑰,然後執行加密/解密。
在它使用全端點加密(不向伺服器發送任何使用者的秘密)的情況下,加密是在設備而不是伺服器上完成的。
如果設備無法支持 AES256-GCM(硬體加速),如何在 XSalsa20Poly1305(crypto_secretbox_easy) 和 XChaCha20Poly1305(secretbox_xchacha20poly1305) 之間進行選擇?
這有點主觀。所有的選擇都應該是好的。
如果我必須選擇一個,我會選擇 XChaCha20Poly1305,因為 AES 硬體支持是有限的。它通常比軟體 AES 更快,並且可以避免側通道攻擊。
使用 XSalsa20Poly1305 的唯一原因是舊庫支持(無論如何這可能不是一個好主意)。Salsa20 在大多數 CPU 上較舊且速度稍慢,並且傳播速度稍慢。