什么是 ChaCha20?
当您使用应用或服务发送消息、存储文件或私密浏览时,ChaCha20 有助于保护您的数据。
它是一种现代加密算法,旨在保持信息机密性的同时,在各类设备上保持快速高效。
了解 ChaCha20 的工作原理、其在现代密码学中的重要性,以及它与 AES 的对比。

什么是 ChaCha20?
ChaCha20 是一种高速、轻量且高度安全的 256 位 对称密钥密码 ,用于加密和解密数据。 它由 Daniel J. Bernstein 设计,是对名为 Salsa20 的早期密码的改进。 其目标是创建一种兼具高效与安全特性的密码,特别是在软件实现中。
ChaCha20 的工作原理
ChaCha20 通过生成安全伪随机字节流并将该数据流与原始消息相结合来加密数据。 这样生成的已加密输出对于没有密钥的人来说看起来完全是随机的。
由于使用相同的密钥来加密和解密数据,ChaCha20 比使用公钥和私钥的非对称算法 RSA 快得多。 RSA 适用于密钥交换和签名,而 ChaCha20 则更适合加密海量的互联网流量。

为什么 ChaCha20 很重要
ChaCha20 解决了现代安全领域的一个实际问题:如何在多种设备上实现既高效又可靠的强加密。 它在软件中运行非常快速,适用于手机、小型设备和较旧的 CPU,并且基于计算机擅长执行的简单操作(加法、异或、循环移位)。
这些功能特性使其在 TLS、VPN(新窗口)、SSH 和消息应用等系统中极具吸引力。 例如,WireGuard®(新窗口) VPN 协议(新窗口)使用 ChaCha20 来提供快速、安全的加密,即使在缺乏专用 AES 硬件的设备上也能表现出强劲的性能。
ChaCha20 与 AES
以下是 ChaCha20 与 AES 的对比:
方面 | ChaCha20 | AES |
|---|---|---|
密码类型 | 流密码 | 分组密码 |
基本操作 | 针对 32 位字执行加法/异或/循环移位 | 针对 128 位块执行代换-置换 |
标准密钥大小 | 256 位 | 128、192、256 位 |
在无专用硬件支持的 CPU 上的性能 | 通常非常快 | 通常比 ChaCha20 慢 |
在配备硬件加速的 CPU 上的性能 | 通常逊于具备 AES-NI / ARM 加密扩展的 AES | 通常极快 |
典型的认证模式 | ChaCha20-Poly1305 | AES-GCM |
常见使用场景 | 移动/嵌入式设备上的 TLS、纯软件加密、WireGuard® | TLS、磁盘加密、企业系统、硬件支持的加密 |
最佳适用场景 | 便携性、稳定的软件速度、更安全的软件实现 | 在现代硬件上的最大速度、广泛的合规性/支持 |
AES 加密是早已确立的标准,在具有内置 AES 硬件支持的处理器上运行极快。 正因如此,它在许多台式机、服务器和较新的移动芯片上表现尤为出色。 然而,如果没有 AES 硬件支持,纯软件 AES 可能会较慢,且有时更难安全地实现。 相比之下,ChaCha20 旨在普通软件中实现极高的运行速度,因为它使用加法、异或和循环移位等简单操作,这些操作在几乎任何处理器上都能高效运行。
如果某个应用同时提供 AES 和 ChaCha20,您通常无需手动选择,因为大多数现代应用会根据您的设备和处理器自动选择更好的选项。 总体而言,AES 在具有内置 AES 支持的新设备上表现最佳,而 ChaCha20 则更适合主要依靠软件进行加密处理的设备,例如某些手机、低功耗硬件或较旧的 CPU。
ChaCha20 安全吗?
如果实现正确,并且每次加密都使用唯一的 nonce,ChaCha20 按现代标准被认为是安全的。
强加密
ChaCha20 使用 20 轮加法-循环移位-异或操作,被认为能够抵御已知的实际攻击。
良好的软件安全性
其简单的设计使其在软件中非常高效,并能减少某些 AES 实现中出现的侧信道风险。
通常与 Poly1305 配对
它通常以 ChaCha20-Poly1305 的形式使用,同时保护机密性和消息完整性。 ChaCha20-Poly1305 是 TLS 1.3 中使用的主要对称加密选项之一。
Proton VPN 与 ChaCha20
借助 Proton VPN 的 WireGuard® 协议(新窗口),ChaCha20-Poly1305 有助于保护 VPN 隧道安全,无论您是在进行私密浏览、流媒体播放还是在旅途中使用公共 WiFi,都能在不牺牲速度的情况下保持互联网流量的私密性。



