3. 常见非对称加密算法避坑:RSA 密钥长度演进、ECC/SM2 优势与废弃算法
非对称加密是现代安全通信的基石,但算法选择不当会直接导致加密失效、密钥泄露或性能瓶颈。本章聚焦 RSA 密钥长度演进、ECC 与 SM2 的工程优势,以及必须避开的已废弃算法陷阱。
3.1 RSA 密钥长度演进:2048 位以下已不安全
RSA 的安全性依赖于大整数分解的困难性。随着计算能力提升和因数分解算法优化,密钥长度必须持续增长。下表展示了 RSA 密钥长度的安全演进与当前推荐标准:
| 密钥长度(位) | 安全状态 | 等效对称强度 | 推荐场景 |
|---|---|---|---|
| 512 | 已破解(1999 年公开分解) | 40 位 | 禁止使用 |
| 1024 | 已不安全(国家级对手可破解) | 80 位 | 立即迁移 |
| 2048 | 当前最低安全线 | 112 位 | 短期过渡,建议升级 |
| 3072 | 推荐 | 128 位 | 企业级应用 |
| 4096 | 高安全 | 152 位 | 长期密钥、CA 根证书 |
避坑要点:许多老旧系统仍在使用 1024 位 RSA 证书。2024 年起,主流浏览器和 CA 机构已逐步拒绝 1024 位以下证书。即使 2048 位,NIST 也建议在 2030 年前迁移至 3072 位或更高。
RSA 密钥长度增长带来的性能代价不可忽视:密钥生成速度随长度呈指数级下降,加解密运算量也大幅增加。下图展示了 RSA 密钥长度与安全强度、性能开销的关系:
3.2 ECC 与 SM2 的优势
椭圆曲线密码(ECC)和国密 SM2 算法在相同安全强度下,密钥长度远小于 RSA,带来显著的性能与存储优势。下表对比了三种算法在等效 128 位安全强度下的关键参数:
| 对比维度 | RSA-3072 | ECC-256(P-256) | SM2(国密) |
|---|---|---|---|
| 密钥长度 | 3072 位 | 256 位 | 256 位 |
| 签名速度 | 慢 | 快(约快 10 倍) | 快 |
| 证书体积 | 大(约 2KB) | 小(约 0.5KB) | 小(约 0.5KB) |
| 标准化 | 全球通用 | NIST/ANSI | 中国国标(GB/T 32918) |
| 合规要求 | 通用 | 通用 | 中国等保、密评强制 |
工程建议:新建系统优先选择 ECC(P-256 或 P-384)或 SM2。对于需要兼容中国商用密码合规的场景,SM2 是唯一选择。RSA 仅建议在遗留系统互操作或 CA 根证书场景下保留。
下图展示了 RSA、ECC 和 SM2 在相同安全强度下的密钥长度对比,直观体现 ECC/SM2 的紧凑优势:
3.3 避免使用已废弃的算法
密码学领域存在一批已被证明不安全或严重弱化的算法,必须从所有系统中彻底移除。以下是必须避开的典型废弃算法:
- RC4(流密码):存在严重偏差,可被统计攻击恢复明文。2015 年起被所有主流浏览器禁用。
- 3DES(三重 DES):64 位分组大小导致 Sweet32 生日攻击,有效安全强度仅 112 位,已被 TLS 1.3 移除。
- MD2 / MD4 / MD5:碰撞攻击成本极低,已完全不可用于数字签名和证书。
- SHA-1:2017 年 Google 公开 SHAttered 碰撞攻击,CA/B 论坛已禁止 SHA-1 证书。
- DSA(1024 位以下):密钥生成慢,安全性依赖强随机数,已被 ECDSA 取代。
- Diffie-Hellman(DH)参数过小:512/768 位 DH 组可被 Logjam 攻击破解。
检查清单:在代码库、配置文件和证书链中搜索以下关键词:
RC4、3DES、MD5、SHA1、DSA、DH_512。任何出现这些算法的配置都应视为安全漏洞,立即修复。
3.4 算法选择决策流程
以下决策树帮助你在实际项目中快速选择正确的非对称加密算法:
- 是否受国密合规约束? → 是 → 使用 SM2(签名/密钥交换)
- 是否需要与老旧系统互操作? → 是 → 使用 RSA-3072 或 RSA-4096
- 是否追求高性能与低资源消耗? → 是 → 使用 ECC P-256 或 P-384
- 是否用于长期根证书? → 是 → 使用 RSA-4096 或 ECC P-521
- 默认推荐 → ECC P-256(平衡安全与性能)
迁移路径:如果现有系统使用 RSA-2048,建议在下次证书续期时升级至 RSA-3072 或直接切换至 ECC P-256。对于 TLS 配置,优先支持 TLS 1.3(仅使用 ECDHE 密钥交换),彻底避免 RSA 密钥交换。