Aes
AES CTR 模式操作無法獲得的流密碼提供了什麼?
我可以預先計算 CTR 模式操作的密鑰流,此時的加密類似於流密碼。那麼為什麼在 RC4 之後仍然使用和提出流密碼呢?最近,ChaCha20 作為 ChaCha20-Poly1305 AE 密碼的一部分。
特別是使用流密碼有什麼好處嗎?
AES-CTR是一種特定類型的流密碼,其中密鑰流是通過對計數器進行加密獲得的。所以問題歸結為:與其他流密碼相比,AES-CTR 的缺點是什麼?
與ChaCha20相比主要有:
- 如果沒有硬體支持,AES 可能無法進行記憶體定時攻擊。
- 如果沒有硬體支持,AES 會更慢。
- 在沒有硬體支持的情況下,最快的 AES 實現會使用大量記憶體。
- 預先計算的 AES 子密鑰(它可以加快速度)需要的記憶體並不多(AES-128 除了基本密鑰外還有 160 個字節,而 ChaCha20 則不需要);當每個具有不同密鑰的許多會話同時處於活動狀態時,這是一個問題。
- 大約之後,AES 有一個理論上的區分器 $ 2^{68} $ 字節(但它需要盡可能多的記憶體,而且無論如何都不是一個實際問題)。
與Trivium等其他現代流密碼相比,AES 需要更多硬體且速度相當。另一方面,當許多其他流密碼(包括 Trivium 和 RC4)不允許時,它允許隨機訪問密鑰流和並行化(就像 ChaCha20 所做的那樣)。
裸 AES-CTR 不提供經過身份驗證的加密(AES-GCM 提供,並使用 AES-CTR 進行加密),因此與 ChaCha20-Poly1305 進行比較是不公平的。