一、国密算法概述:从零认识国产密码体系
各位同学好,我是老张。做密码学工程十几年了,今天咱们开始聊国密算法。说实话,我刚入行那会儿,国内用的全是 RSA、AES 这些国际算法。直到 2010 年左右,国密标准陆续出台,我才真正开始接触 SM2、SM3、SM4。嗯,这一接触就是十多年。
这一章,咱们先搭个框架。把国密算法是什么、跟国际算法比怎么样、用在哪儿、合规怎么搞,一次性说清楚。你想想看,如果连这些基础都不清楚,后面学签名验签肯定会踩坑。
1.1 国密算法体系:SM2 / SM3 / SM4 各司其职
国密算法,全称是中国商用密码算法。由国家密码管理局发布,属于国家标准。目前最核心的三个算法是:
- SM2 —— 椭圆曲线公钥密码算法。用于签名、密钥交换、加密。对标 ECDSA / ECDH。
- SM3 —— 密码杂凑算法。输出 256 位哈希值。对标 SHA-256。
- SM4 —— 分组对称密码算法。密钥长度 128 位。对标 AES。
我个人的习惯是,把 SM2 看作「钥匙」,SM3 看作「指纹」,SM4 看作「保险箱」。三者配合,才能完成签名验签的完整流程。
核心关系:签名验签时,SM3 先对消息计算摘要,SM2 再用私钥对摘要签名。SM4 通常用于加密传输过程中的会话密钥,不直接参与签名。
下面这张图,把国密算法的整体结构画出来了。我建议你多看几遍,后面每章都会用到这个框架。
1.2 与国际算法的对比:SM2 vs RSA / ECDSA
很多同学问我:「国密算法跟 RSA、ECDSA 到底差在哪儿?」说白了,就是数学原理和性能的差异。
我拿 SM2 和 RSA 举个例子。RSA 基于大整数分解难题,密钥越长越安全。SM2 基于椭圆曲线离散对数难题,256 位密钥就能达到 RSA 3072 位的安全强度。你想想看,密钥短了,计算量自然就小了。
下面这个表格,是我在项目中经常用来跟客户解释的对比表。你直接拿去用就行。
| 对比维度 | SM2 | RSA | ECDSA |
|---|---|---|---|
| 数学基础 | 椭圆曲线 | 大整数分解 | 椭圆曲线 |
| 密钥长度 | 256 位 | 2048 / 3072 位 | 256 位 |
| 签名速度 | 快 | 慢 | 快 |
| 验签速度 | 快 | 较快 | 快 |
| 安全性 | 高(等效 RSA 3072) | 高 | 高 |
| 国内合规 | 强制要求 | 部分场景受限 | 部分场景受限 |
我的经验:在 IoT 设备上,SM2 的签名速度比 RSA 快 3-5 倍。我曾经在一个智能门锁项目里,用 SM2 替换 RSA,签名时间从 200ms 降到了 50ms。用户体验提升很明显。
1.3 应用场景:国密算法用在哪?
国密算法不是实验室里的东西。它已经大规模落地了。我列几个最常见的场景:
- 电子政务 —— 公文流转、电子签章、行政审批。必须用国密,这是硬性规定。
- 金融支付 —— 网银、移动支付、数字人民币。我记得 2020 年帮某银行做国密改造,光签名验签接口就重构了 20 多个。
- 物联网 —— 智能门锁、车联网、工业控制。设备资源有限,SM2 的短密钥优势很明显。
- 数据安全 —— 数据库加密、文件加密、传输加密。SM4 在这里唱主角。
- 区块链 —— 国产联盟链、数字身份。SM2 签名是链上交易的核心。
你可能会问:「为什么一定要用国密?」嗯,除了安全,更关键的是合规。下面咱们就聊这个。
1.4 合规要求:不满足就是违法
做国密算法,合规是底线。我见过不少项目,因为没用国密被监管部门叫停整改。那损失,可不是几万块钱能解决的。
⚠️ 重要提醒:根据《中华人民共和国密码法》和《商用密码管理条例》,以下场景必须使用国密算法:
- 党政机关信息系统
- 关键信息基础设施(金融、能源、交通、医疗等)
- 涉及国家安全和公共利益的信息系统
- 电子认证服务(CA 证书)
违反规定,可能面临行政处罚甚至刑事责任。
我曾经帮一家医疗公司做系统改造。他们原来的签名用的是 RSA 2048,数据加密用的是 AES。合规审查时被要求全部替换成 SM2 + SM4。嗯,那段时间加班加得我头发都掉了不少。
所以,我的建议是:如果你在做国内项目,尤其是政府、金融、医疗、能源相关,从一开始就上国密。别等审查来了再改,那成本高得多。
1.5 本章小结
这一章,咱们把国密算法的底子打好了。你知道了:
- SM2 是公钥算法,负责签名验签
- SM3 是哈希算法,负责生成摘要
- SM4 是对称算法,负责数据加密
- 国密比 RSA 更高效,密钥更短
- 合规是硬要求,别心存侥幸