1. 国密算法概述
各位同学好,我是老周。今天咱们正式开讲《国密算法加密通信协议设计与调优》的第一章。说实话,做了十几年密码学相关的工程,我最大的感触就是:国密算法不再是「备选项」,而是很多场景下的「必选项」。尤其是近两年,金融、政务、关键基础设施,几乎都在往国密迁移。
这一章,我带大家把国密体系的底牌翻一翻。不搞虚的,直接看它是什么、能干什么、跟国际算法比到底差在哪、好在哪。
1.1 国密算法体系介绍
国密算法,全称是中国国家商用密码算法。由国家密码管理局发布,目前最核心的是四个:SM2、SM3、SM4、SM9。我习惯把它们分成三类:
- 公钥密码:SM2(椭圆曲线)、SM9(标识密码)
- 对称密码:SM4(分组密码)
- 哈希算法:SM3(密码杂凑)
说白了,这四兄弟基本覆盖了现代密码学的所有基础需求:加密、签名、密钥交换、完整性校验。我在做某政务云项目时,整套通信协议就靠这四样撑起来的,一个国际算法都没用。
核心要点:SM2 对标 ECC/RSA,SM3 对标 SHA-256,SM4 对标 AES,SM9 对标基于标识的密码体系(如 IBE)。
SM2 — 椭圆曲线公钥密码
SM2 基于椭圆曲线,密钥长度 256 位。它支持数字签名、密钥交换、公钥加密。我个人觉得,SM2 最大的优势是「短密钥、高强度」。256 位的 SM2,安全强度跟 3072 位的 RSA 差不多。你想想看,同样的安全等级,SM2 的密钥只有 RSA 的十分之一不到,这对嵌入式设备、物联网终端来说,太友好了。
SM3 — 密码杂凑算法
SM3 输出 256 位哈希值。它的设计结构跟 SHA-256 类似,但做了不少优化。我记得有一次做合规审计,客户要求所有数字摘要必须用 SM3,不能用 SHA-256。当时我们直接把哈希函数替换掉,跑了一遍回归测试,结果完全兼容。嗯,这里要注意:SM3 和 SHA-256 的输出长度一样,但算法不同,不能混用。
SM4 — 分组密码算法
SM4 是 128 位分组、128 位密钥的对称加密算法。它的轮函数结构跟 AES 不太一样,但加解密速度实测下来,跟 AES-128 基本持平。我在一个实时视频加密项目里用过 SM4 的 CTR 模式,延迟控制在 1 毫秒以内,完全够用。
SM9 — 标识密码算法
SM9 比较特殊。它不需要数字证书,直接用用户的标识(比如邮箱、手机号、身份证号)作为公钥。这在一些没有 PKI 基础设施的场景下特别好用。我曾经在某个偏远地区的政务系统里,用 SM9 做身份认证,省去了部署 CA 的麻烦。
个人经验:SM9 的私钥由密钥生成中心(KGC)生成,所以 KGC 的安全性至关重要。如果 KGC 被攻破,整个系统的私钥都会泄露。建议对 KGC 做物理隔离和硬件加密保护。
1.2 与国际算法的对比
很多同学问我:「国密算法跟 RSA、AES、ECC 比,到底怎么样?」我的回答是:安全强度相当,但设计思路和合规要求不同。下面这张表,是我自己整理的对比,你们可以存一下。
| 对比维度 | SM2 | RSA | ECC |
|---|---|---|---|
| 密钥长度 | 256 位 | 2048~4096 位 | 256 位 |
| 安全强度 | 128 位 | 112~128 位 | 128 位 |
| 签名速度 | 快 | 慢 | 快 |
| 加密速度 | 中等 | 慢 | 中等 |
| 合规要求 | 国密标准 | 国际标准 | 国际标准 |
| 对比维度 | SM4 | AES |
|---|---|---|
| 分组大小 | 128 位 | 128 位 |
| 密钥长度 | 128 位 | 128/192/256 位 |
| 轮数 | 32 轮 | 10/12/14 轮 |
| 加解密速度 | 与 AES-128 相当 | 快 |
| 合规要求 | 国密标准 | 国际标准 |
为什么会这样?说白了,国密算法在设计时参考了国际主流算法的优点,同时针对国内的应用场景做了优化。比如 SM2 的曲线参数是公开的,但跟 NIST 曲线不同,避免了后门争议。
避坑指南:我曾经在一个项目中,直接把 RSA 的密钥对换成 SM2 的密钥对,以为接口兼容。结果发现 SM2 的签名格式跟 RSA 完全不同,导致验签失败。记住:算法替换不是简单的「换库」,协议层也要跟着改。
1.3 国密算法的应用场景与合规要求
国密算法不是「实验室产品」,它在实际场景中已经大规模落地了。我列几个最常见的:
- 金融行业:网上银行、移动支付、证券交易。央行早就要求金融核心系统必须使用国密算法。
- 政务系统:电子政务、公文流转、身份认证。很多政府项目招标时,明确要求「全栈国密」。
- 物联网:智能电表、车联网、工业控制。SM2 的短密钥优势在这里体现得淋漓尽致。
- 云计算:云上数据加密、密钥管理、安全通信。我记得有个云厂商的客户,要求所有数据传输必须用 SM4 加密,连内部网络都不例外。
合规方面,大家要记住几个关键文件:
- 《中华人民共和国密码法》:2019 年发布,明确了商用密码的合规要求。
- GM/T 系列标准:国密算法的具体技术规范,比如 GM/T 0003(SM2)、GM/T 0004(SM3)、GM/T 0002(SM4)。
- 等保 2.0:三级及以上系统,建议使用国密算法。
建议:如果你的系统需要过等保或密评,最好从一开始就规划国密算法。后期改造的成本,往往是前期直接使用的 3~5 倍。我见过太多「先上国际算法,后面再改」的项目,最后改得痛不欲生。
1.4 国密算法知识体系总览
下面这张图,是我画的国密算法知识体系总览。它把 SM2、SM3、SM4、SM9 的核心关系和应用场景串在了一起。你们可以把它当作本章的「地图」,后面每章都会回到这张图上来。