附录 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 官方英文原文进行核对。