SM2 和 RSA 怎么选?国密椭圆曲线与国际公钥算法的完整对比
一句话结论
有国密合规要求(等保、政务、金融、央企)选 SM2;纯技术选型两者都安全,SM2 密钥更短、RSA 生态更成熟。 大多数真实场景里这不是算法优劣问题,是合规问题。
两者是什么
- RSA:1977 年提出的公钥算法,安全性基于大整数分解难题。全球生态最广泛的公钥算法——HTTPS 证书、SSH、JWT 签名的主流选择。
- SM2:2010 年由中国密码管理局发布,2016 年成为国家标准 GB/T 32918。基于 256 位椭圆曲线(SM2 曲线),安全性基于椭圆曲线离散对数难题(ECDLP)。
关键维度对比
| 维度 | SM2 | RSA |
|---|---|---|
| 数学基础 | 椭圆曲线离散对数 | 大整数分解 |
| 推荐密钥长度 | 256 位 | 2048 位(3072 位更稳妥) |
| 安全强度换算 | 256 位 SM2 ≈ 3072 位 RSA | 3072 位 ≈ 128 位安全强度 |
| 签名速度 | 快(标量乘法) | 慢(大数模幂) |
| 验签速度 | 慢 | 快 |
| 密文/签名长度 | 短(签名 ~70 字节 DER) | 长(2048 位签名 256 字节) |
| 生态 | 国内完善(密码卡、UKey、国密 TLS) | 全球通用 |
| 合规 | 等保三级+/政务/金融必须 | 不满足国密要求 |
性能细节:SM2 签名快、验签慢;RSA 相反(验签快,可用小指数 e=65537 优化)。证书验签频繁的场景(TLS 握手)RSA 验签优势明显;签名频繁的场景(物联网设备上报)SM2 更省。
实际选型的三个问题
1. 有没有合规要求?
等保 2.0 三级及以上、政务系统、金融(人行/银保监要求)、央企信息化——必须 SM2(通常搭配 SM3、SM4 组成国密套件)。没有硬性合规,两者自由选。
2. 对端系统是什么?
算法选型经常被对端决定:对接政务平台要 SM2 证书;对接国际支付渠道要 RSA。混合场景(如国密改造过渡期)常见双证书并行——同一系统同时持有 SM2 和 RSA 证书,按对端协商使用。Nginx + 国密分支(如 BabaSSL/Tongsuo)支持双证书部署。
3. 密钥长度敏感吗?
物联网、嵌入式场景里 256 位 SM2 私钥比 3072 位 RSA 私钥省一个数量级的存储和带宽,签名长度也更短(70 vs 384 字节),窄带网络收益明显。
联调最常见的坑:C1C3C2 vs C1C2C3
SM2 密文由三段组成:C1(椭圆曲线点)、C2(密文数据)、C3(SM3 摘要)。老标准(GM/T 0003)是 C1C2C3 顺序,新国标(GB/T 32918.4-2016)推荐 C1C3C2——两者不互通,联调失败九成是这里:
- Java BouncyCastle 默认 C1C2C3,可传参切换
- 前端 sm-crypto 库通过 cipherMode 参数区分(1=C1C3C2)
- 对端解不开时,第一件事确认双方密文结构
可以用本站的 SM2 在线工具做联调验证:生成密钥对、加密已知明文,把密文发给对端解密,能对上说明格式一致。
密钥格式速查
SM2 公钥:130 位 hex(04 前缀 + X 32字节 + Y 32字节,非压缩格式)
SM2 私钥:64 位 hex(32 字节标量)
公钥还有压缩格式(66 位 hex)形态,部分 HSM/UKey 输出压缩格式,联调时注意转换。
迁移 RSA → SM2 的注意点
- 证书体系重建:需要国密 CA 签发的 SM2 证书(CFCA、上海CA 等)
- TLS 栈:标准 OpenSSL 不支持国密 TLS,需 Tongsuo(原 BabaSSL)或 GmSSL 分支
- 数据兼容:存量 RSA 加密数据要先解密迁移,不能直接换算法
- 双算法过渡期:建议双证书并行 3-6 个月,灰度切流
排查清单
- 有合规要求 → SM2 无悬念
- 对端用啥我用啥(联调先对密文结构 C1C3C2/C1C2C3)
- 验签频繁(TLS)RSA 有优势;签名频繁(物联网)SM2 有优势
- 迁移走双证书过渡,不要一刀切
- 联调问题先用在线 SM2 工具隔离验证算法层,再查传输层
排查注记
一句话结论把选型压成「合规问题而非算法优劣」,后面的三个实际选型问题按此展开:先问有没有合规要求,再问对端是什么——算法选型经常被对端决定,混合场景用双证书并行过渡。对比表里签名/验签速度特意分列且方向相反(SM2 签名快验签慢、RSA 正好反过来),对应两种典型负载:TLS 握手验签频繁 RSA 占优,物联网上报签名频繁 SM2 省资源。联调坑只写一个——C1C3C2 与 C1C2C3 密文顺序,理由明说:联调失败九成是这里。
感谢阅读这篇 ToolVault 工具匣 技术文章。相关工具:SM2 加解密与签名、SM3 哈希、SM4 加解密、JWT 解码。相关阅读:国密算法入门指南、SM3 和 SHA-256 的区别。访问 首页 查看更多开发者工具。
相关工具
相关文章
VIN 码校验位详解:第 9 位怎么算,车架号真假一测便知
VIN 车架号 17 位的结构与校验算法详解:WMI/VDS/VIS 拆解、第 9 位校验位的转写表与权重表手算示例、第 10 位年份码 30 年循环、常见校验失败原因,附在线 VIN 校验工具。
测试数据合规使用边界:为什么测试环境用真实用户数据本身就是违法
开发测试环境引用真实用户数据违反《个人信息保护法》:PIPL 明确目的限制原则,测试属于全新处理目的。合法替代数据四来源(脱敏/合成/公开测试段/自造)、「格式合法但随机」的技术原理(国标校验位),以及红线清单。附身份证/手机号/信用代码的校验位算法表。
个保法 PIA 影响评估自查:五类触发场景、评估三要素与实操框架
《个人信息保护法》第 55-56 条的个人信息保护影响评估(PIA):哪五类处理活动必须事前评估、评估报告的三要素结构、报告留存三年的要求,以及数据地图→风险矩阵→措施核对的自查框架。附与等保/密评的三位一体关系。