8. 安全考量
关键安全要点
8.1 密钥选择
- 使用足够长的密钥
- 遵循特定算法的密钥大小要求
- RSA: 最小 2048 bits
- HMAC: 至少与 hash output 大小相同
8.2 随机数生成
- 使用密码学安全的 random number generator
- 确保有足够的 entropy
8.3 算法选择
- 优先使用推荐算法
- 避免使用已弃用或存在已知弱点的算法
- RSA1_5 存在 Bleichenbacher attack vulnerability
8.4 Timing Attack 防护
- HMAC 验证使用 constant-time comparison
- 避免泄漏 timing information
8.5 "none" 算法警告
- 默认不接受 Unsecured JWS
- 仅在明确需要时使用
- 实现 MUST 要求显式启用
8.6 密钥管理
- 妥善保护 private key 和 symmetric key
- 使用适当的密钥分发机制
- 考虑密钥轮换策略
8.7 加密考量
- 使用 authenticated encryption
- 验证 AAD (Additional Authenticated Data)
- 正确处理 initialization vector
实现建议:
- 保持库和算法实现更新
- 遵循最新的安全最佳实践
- 定期审查安全公告和 errata