CyberGlossary

密码学

ChaCha20

定义

由 Daniel J. Bernstein 设计的现代流密码,使用 256 位密钥和 96 位 nonce,常与 Poly1305 组合为 AEAD 算法 ChaCha20-Poly1305 广泛部署。

ChaCha20 是 Daniel J. Bernstein 于 2008 年提出的 20 轮流密码,是 Salsa20 的改进设计。它使用 256 位密钥、96 位 nonce 和 32 位分组计数器,通过对 32 位字的加、循环移位、异或等简单运算生成密钥流,在无 AES 硬件加速的 CPU(移动端、嵌入式)上具有高速且恒定时间的特性。与 Poly1305 消息认证码结合形成的 AEAD 方案 ChaCha20-Poly1305 由 RFC 8439 标准化,并与 AES-GCM 一同成为 TLS 1.3 必须支持的两套密码套件之一。ChaCha20 广泛用于 TLS、QUIC、WireGuard、OpenSSH、Signal 协议以及 Linux 内核加密。经过十余年的密码分析,完整 20 轮版本至今未发现已知攻击。

示例

  • TLS 1.3 与 QUIC 在移动设备上常用 TLS_CHACHA20_POLY1305_SHA256。
  • WireGuard 使用 ChaCha20-Poly1305 加密所有数据包。

相关术语