跳到主要内容

附录 D. 实现说明

本附录提供了一些有关 TLS 实现的非规范性说明,旨在帮助实现者避免常见问题。

D.1. 随机数生成​

必须使用密码学安全的伪随机数生成器(CSPRNG)生成客户端随机数和服务器随机数。可预测随机数会严重削弱协议安全性。

D.2. 证书处理​

实现应当:

  • 验证证书链至受信任的根。
  • 检查证书有效期和吊销状态(OCSP/CRL)。
  • 验证服务器证书中的主机名与预期主机名匹配。

D.3. 版本协商​

实现必须正确处理版本字段,并拒绝意外的降级尝试。客户端应当发送其支持的最高版本,服务器选择双方都支持的最高版本。

D.4. 填充处理​

使用 CBC 模式分组密码时,必须正确实现填充,并小心处理填充错误,以避免填充预言攻击。建议对填充错误和 MAC 错误返回相同的 alert(bad_record_mac),且不泄露具体原因。

D.5. 重协商​

实现应当谨慎处理重协商请求,并在重协商期间保持连接状态一致。为防止重协商攻击,建议使用 renegotiation_info 扩展(RFC 5746)。

D.6. 性能考虑​

TLS 握手涉及昂贵的公钥运算。实现可以使用会话恢复(session resumption)来减少完整握手的次数,从而提升性能。

注意:本译文由 AI 翻译,可能包含错误。请参考 RFC 5246 官方英文原文进行核对。