10. Security Considerations (安全考虑)
本文档中已在各处讨论了安全考虑事项.
主要安全要点
密钥长度
RSA密钥的安全性高度依赖于模数的大小. 推荐的最小密钥长度:
- 2048位: 当前最低推荐长度
- 3072位: 高安全应用推荐
- 4096位: 长期密钥或极高安全要求
方案选择
- RSAES-OAEP: 新应用的加密方案必须 (REQUIRED) 支持
- RSASSA-PSS: 新应用推荐 (RECOMMENDED) 使用的签名方案
- PKCS1-v1_5: 仅为兼容性保留,存在已知弱点
实现注意事项
- 随机数生成: 必须使用密码学安全的随机数生成器
- 侧信道攻击: 实现应防止时序攻击和功耗分析
- 错误处理: 解密和验证操作的错误消息应统一,避免泄露信息
- 填充预言攻击: RSAES-PKCS1-v1_5易受Bleichenbacher攻击,实现时需特别小心
哈希函数
- 避免使用: MD5, SHA-1(已被破解)
- 推荐使用: SHA-256, SHA-384, SHA-512
密钥使用
- 单一用途: 一个RSA密钥对应该只用于一种方案(加密或签名,不混用)
- 密钥轮换: 定期更换密钥
- 私钥保护: 私钥应加密存储,使用硬件安全模块 (HSM) 是最佳实践
已知攻击和防御
- 选择密文攻击 (Chosen Ciphertext Attack): RSAES-OAEP提供防护
- 选择消息攻击 (Chosen Message Attack): RSASSA-PSS提供防护
- Bleichenbacher攻击: 影响RSAES-PKCS1-v1_5
- 时序攻击: 使用常数时间算法和CRT加速时需注意
参考第6节关于避免在多个方案中使用同一密钥对的讨论.