密码学
密码套件
定义
由密钥交换、身份认证、数据加密和完整性算法组合而成的命名集合,由 TLS 等协议在每次会话中协商使用。
密码套件定义了安全协议保护一个会话时所采用的算法组合。在 TLS 1.2 中,如 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 这样的套件,选择 ECDHE 进行密钥交换、RSA 用于认证、AES-128-GCM 进行加密、SHA-256 作为 PRF。TLS 1.3 简化了模型,将密钥交换、签名与 AEAD 分离,仅保留 5 个套件(如 TLS_AES_128_GCM_SHA256、TLS_CHACHA20_POLY1305_SHA256 等)。选择强密码套件、禁用 RC4、3DES、出口级 DH 和匿名套件(aDH/aECDH)是 TLS 加固的关键。SSL Labs、testssl.sh 以及 Mozilla、NIST、BSI 的配置指南都给出了安全默认值。
示例
- TLS_AES_256_GCM_SHA384 是 TLS 1.3 推荐的密码套件。
- 仍提供 TLS_RSA_WITH_3DES_EDE_CBC_SHA 的传统系统应当淘汰。
相关术语
TLS (Transport Layer Security)
TLS (Transport Layer Security) — definition coming soon.
AES(高级加密标准)
由 NIST 标准化的 128 位分组密码,密钥长度可为 128、192 或 256 位,由 Daemen 与 Rijmen 设计,是全球占主导地位的对称加密算法。
ChaCha20
由 Daniel J. Bernstein 设计的现代流密码,使用 256 位密钥和 96 位 nonce,常与 Poly1305 组合为 AEAD 算法 ChaCha20-Poly1305 广泛部署。
ECDH
Diffie–Hellman 密钥交换在椭圆曲线上的变体,以更短的密钥和更快的运算提供相同的共享密钥功能。
RSA 算法
由 Rivest、Shamir 与 Adleman 于 1977 年提出的公钥算法,其安全性基于对两个大素数乘积进行因数分解的困难性。
完美前向保密
协议属性,确保长期密钥即便日后泄露也无法解密以前会话的流量。