4.1 General Guidelines (一般性准则)
随着密码分析的改进, 加密算法会随着时间的推移而减弱: 曾经被认为强大的算法会变得脆弱。这些算法需要随着时间的推移逐步淘汰, 并用更安全的密码套件替换。这有助于确保所需的安全属性仍然得到保持。SSL/TLS 已经存在近 20 年, 在 SSL/TLS 的各个版本中推荐的许多密码套件现在被认为是弱的, 或者至少不像所期望的那样强。因此, 本节对密码套件选择的建议进行了现代化。
-
实现必须不协商具有 NULL 加密的密码套件。
理由: NULL 密码套件不加密流量, 因此不提供机密性服务。网络中可以访问连接的任何实体都可以查看客户端和服务器正在交换的内容的明文。(尽管如此, 本文档不阻止软件实现 NULL 密码套件, 因为它们可以用于测试和调试。)
-
实现必须不协商 RC4 密码套件。
理由: RC4 流密码具有各种加密弱点, 如 [RFC7465] 中所述。请注意, DTLS 明确禁止使用 RC4。
-
实现必须不协商提供少于 112 位安全性的密码套件, 包括所谓的 "出口级" 加密 (提供 40 或 56 位安全性)。
理由: 根据 [RFC3766], 至少需要 112 位的安全性。40 位和 56 位安全性在今天被认为是不安全的。TLS 1.1 和 1.2 从不协商 40 位或 56 位出口密码。
-
实现不应该协商使用提供少于 128 位安全性的算法的密码套件。
理由: 提供 112 位到 128 位之间安全性的密码套件目前不被认为是弱的; 然而, 预计它们的有用寿命足够短, 以证明在此时支持更强的密码套件是合理的。128 位密码预计至少在未来几年内保持安全, 256 位密码则可以保持到下一次基础技术突破。请注意, 由于所谓的 "中间相遇" 攻击 (meet-in-the-middle attacks) [Multiple-Encryption], 一些传统密码套件 (例如, 168 位 3DES) 的有效密钥长度小于其名义密钥长度 (在 3DES 的情况下为 112 位)。此类密码套件应根据其有效密钥长度进行评估。
-
实现不应该协商基于 RSA 密钥传输的密码套件, 也称为 "静态 RSA"。
理由: 这些密码套件具有以字符串 "TLS_RSA_WITH_*" 开头的赋值值, 有几个缺点, 特别是它们不支持前向保密这一事实。
-
实现必须支持并优先协商提供前向保密的密码套件, 例如临时 Diffie-Hellman 和椭圆曲线临时 Diffie-Hellman ("DHE" 和 "ECDHE") 系列中的密码套件。
理由: 前向保密 (有时称为 "完美前向保密") 防止恢复使用较旧会话密钥加密的信息, 从而限制了攻击成功的时间。有关详细讨论, 请参阅第 6.3 节。