它是什么
ChaCha20-Poly1305 由流加密与一次性认证器组合而成(RFC 8439),是 TLS 1.3 的强制套件之一。它不需要查表运算,因此在没有专用硬件加速的移动设备与嵌入式平台上表现优异,同时天然规避了查表实现可能带来的时序风险。
什么时候它更划算
设备具备硬件加速时,另一套主流对称算法更快;没有硬件加速时,这套算法在纯软件实现下通常更优。服务端同时提供两套套件,让客户端按自身硬件能力选择,是当前最稳妥的配置方式。
基本信息
| 组成 | 流加密加一次性认证器 |
|---|---|
| 规范 | RFC 8439;TLS 1.3 强制套件见 RFC 8446 §9.1 |
| 优势 | 无查找表,移动端与纯软件实现性能好 |
| 要点 | 一次性值不可重复使用 |
典型使用场景
- 移动端与物联网设备的加密套件选择
- 排查「同一站点在不同设备上握手速度差异明显」
- 评估服务端套件配置是否覆盖不同硬件能力
- 学习认证加密的构造方式与安全边界
查看与测试
查看与测试
openssl ciphers -v 'CHACHA20' | head # 查看支持的套件
openssl speed -evp chacha20-poly1305 # 测本机软件实现的性能
openssl s_client -connect example.com:443 </dev/null 2>/dev/null | grep -i 'cipher' # 看实际协商结果不同版本下的地位
| 协议版本 | 是否强制 | 说明 |
|---|---|---|
| TLS 1.3 | 是 | 标准要求实现,协商后完全保密 |
| TLS 1.2 | 否 | 可协商,但部分特性与保护力度不同 |
| 库与语言默认值 | 视实现 | 不同运行时的默认优先级可能不同 |
服务端同时提供两套主流套件、由客户端按硬件能力自选,比在中枢端强行指定其中一套更稳妥。
它是流密码:一次性值与计数器管理出错(重复使用)同样是致命问题,不要自己手写实现。
性能差异必须实测:同一台机器上不同实现的差距可能高达数倍,凭经验判断很容易选错。