一、国密算法简介:SM2、SM3、SM4、SM9 等标准算法概述
说到国密算法,很多人的第一反应是“跟国际算法有啥区别?”或者“是不是只是加个壳?”其实不是这样。国密算法是由中国国家密码管理局发布的商用密码标准,覆盖了公钥加密、数字签名、密钥交换、哈希计算、对称加密等所有核心领域。我最早接触国密是在一个政府项目里,客户要求必须使用 SM2 证书做身份认证,那时候市面上成熟的库还不多,踩了不少坑。但回过头看,这套算法的设计其实很严谨,尤其是 SM9,理念相当先进。
这一章我带你快速过一遍四个最核心的国密算法:SM2、SM3、SM4、SM9。你不需要马上记住所有细节,但得理解它们各管哪块、怎么协作。我把它们分成了两类:公钥体系(SM2、SM9)和对称/哈希体系(SM4、SM3)。
1.1 SM2 — 椭圆曲线公钥密码算法
SM2 是国密体系里的“当家花旦”。它基于椭圆曲线,支持数字签名、公钥加密、密钥交换三种功能。跟国际上的 ECDSA、ECIES 对标,但参数和算法细节不同。我个人觉得 SM2 最大的好处是密钥长度短(256 位),安全性却很高。
我做过一个性能测试,SM2 的签名速度比 RSA-2048 快大概 3 倍,不过验签稍慢一点。如果你要上生产环境,记得选对曲线参数,国密标准里用的是 sm2p256v1 这条曲线。
SM2 的主要参数速览:
| 属性 | 值 |
|---|---|
| 曲线名称 | sm2p256v1 |
| 密钥长度 | 256 位 |
| 签名算法 | SM2 Signature Scheme |
| 加密算法 | SM2 Encryption (类似 ECIES) |
| 密钥交换 | SM2 Key Exchange Protocol |
1.2 SM3 — 密码杂凑算法
SM3 就是国标版的 SHA-256。输出 256 位(32 字节)哈希值,安全性经过分析认为不低于 SHA-256。你想想看,哈希算法是数字签名、完整性校验、密钥推导的基础,SM3 在国密体系里基本是“万金油”。
我记得有一次做数据完整性校验,客户坚持要用 SM3 而不是 SHA-256。换成 SM3 后,速度没有明显差别,但合规性直接拉满。SM3 的算法结构是 Merkle-Damgård 结构,迭代压缩,跟 SHA-256 类似但轮函数不同。具体代码实现时注意初始值 IV 和消息填充规则,网上有些开源实现有 bug,建议直接拿国家密码局发布的参考代码。
1.3 SM4 — 分组对称密码算法
SM4 属于对称加密算法,分组长度 128 位,密钥长度也是 128 位。结构是 32 轮非线性迭代 Feistel 网络。说白了,它跟 AES-128 是同一级别的选手,只是设计细节不同。
我建议你把 SM4 用在大量数据的加密场景,比如数据库加密、文件加密、传输层加密。因为对称加密速度远快于公钥加密(能差几百倍)。SM4 有几种工作模式:ECB、CBC、CTR、GCM 等,我一般推荐用 GCM 模式,自带认证标签,能防篡改。
下面这张对比表帮你快速厘清 SM4 和 SM2 的定位差异:
| 维度 | SM4 | SM2 |
|---|---|---|
| 类型 | 对称加密 | 公钥加密 |
| 密钥 | 双方共享同一密钥 | 公钥/私钥对 |
| 加密速度 | 快(硬件指令支持) | 慢(数学运算密集) |
| 典型用途 | 批量数据加密 | 密钥分发、数字签名 |
| 安全性基础 | 密钥保密 | 离散对数困难 |
1.4 SM9 — 标识密码算法
SM9 很有意思,它是基于双线性对的标识密码。什么是标识密码?就是用你的身份信息(比如邮箱、手机号、身份证号)直接当公钥,不需要证书体系。公钥就是用户身份,这个理念在物联网、车联网场景里特别好用,省掉了复杂的 PKI 部署。
坦白讲,SM9 的计算开销比 SM2 大,因为双线性对运算很重。我以前在嵌入式设备上评估过 SM9 签名,一个签名要上百毫秒,而 SM2 只要十几毫秒。但它的优势是密钥管理极简:接收方只要知道发送方的身份就能验签,不需要在线查询证书吊销列表。适合弱终端、低带宽的环境。
SM9 支持的功能包括:签名、加密、密钥交换。国家标准是 GMT 0044-2016。如果你要落地,注意密钥生成中心(KGC)的安全性——它是整个体系的信任根,一旦 KGC 的主密钥泄露,所有用户的私钥都能推导出来。所以在合规审计里,KGC 的安全等级要求非常高。
1.5 四种算法如何选择?
最后给一个简单的选型参考表,你在做方案设计时可以快速对照:
| 场景 | 推荐算法 | 理由 |
|---|---|---|
| 加密传输大量数据 | SM4 | 对称加密速度快 |
| 数字签名/身份认证 | SM2 | 成熟稳定,性能均衡 |
| 数据完整性校验 | SM3 | 哈希摘要,不可逆 |
| 轻量级设备/无证书体系 | SM9 | 身份即公钥,管理简单 |
| 密钥协商 | SM2 | 支持两方安全协商 |
嗯,这一章就到这里。记住这四个算法的名字和定位,后面章节我们会深入每个算法的实现细节、合规要求以及如何把它们集成到数据安全态势管理(DSPM)体系里。