4.3 Public Key Length (公钥长度)
当使用本文档中推荐的密码套件时, TLS 握手中通常使用两个公钥: 一个用于 Diffie-Hellman 密钥协商, 一个用于服务器身份验证。在使用客户端证书的情况下, 会添加第三个公钥。
对于基于模指数 (modular exponential, MODP) Diffie-Hellman 组的密钥交换 ("DHE" 密码套件), 建议使用至少 2048 位的 DH 密钥长度。
理由: 出于各种原因, 在实践中, DH 密钥通常以 2 的幂次方的长度生成 (例如, 2^10 = 1024 位, 2^11 = 2048 位, 2^12 = 4096 位)。因为 1228 位的 DH 密钥大约只相当于 80 位的对称密钥 [RFC3766], 所以最好对 "DHE" 密码套件系列使用比这更长的密钥。1926 位的 DH 密钥大约相当于 100 位的对称密钥 [RFC3766], 而 2048 位的 DH 密钥可能至少在未来 10 年内是足够的 [NIST.SP.800-56A]。有关在 TLS 中使用 MODP Diffie-Hellman 的其他信息, 请参阅第 4.4 节。
如 [RFC3766] 中所述, 针对 TWIRL 机器的出现进行校正, 将意味着 1024 位 DH 密钥产生约 65 位的等效强度, 2048 位 DH 密钥将产生约 92 位的等效强度。
关于 ECDH 密钥, IANA "EC 命名曲线注册表" (Named Curve Registry) (在 "传输层安全性 (TLS) 参数" 注册表 [IANA-TLS] 内) 包含被认为大约只相当于 80 位对称密钥 [ECRYPT-II] 的 160 位椭圆曲线。不应该使用少于 192 位的曲线。
当使用 RSA 时, 服务器应该使用公钥的模数至少为 2048 位的证书进行身份验证。此外, 建议使用 SHA-256 哈希算法 (有关更多详细信息, 请参阅 [CAB-Baseline])。客户端应该通过使用 TLS 1.2 中定义的 "签名算法" (Signature Algorithms) 扩展向服务器指示它们请求 SHA-256。