1. 国密算法综述:SM2/SM3/SM4/SM9 简介、国密标准与商用密码应用场景

做 Go 国密 SDK 适配之前,咱们得先搞清楚「国密」到底是个啥。我最开始接触国密时,说实话有点懵——SM2、SM3、SM4、SM9,一堆字母数字,容易搞混。后来实际对接过几个项目,踩了些坑,才慢慢理清脉络。

1.1 SM2:非对称加密与数字签名

SM2 是国密标准里的椭圆曲线公钥密码算法,对标的是 ECDSA 和 ECDH。说白了,它既能做签名验签,也能做密钥交换和加密。

我记得第一次用 SM2 时,一直在纠结曲线参数。国密 SM2 推荐了一条 256 位的素域椭圆曲线,参数是固定的——p = 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF。你不需要自己算,直接用标准库就行,但得注意:公钥压缩格式和未压缩格式,很多商用接口只认未压缩的。

  • 签名算法:SM2 签名基于 ECDSA 变种,输出是 (r, s) 两个大数,编码成 64 字节。
  • 加密算法:混合加密(用 SM2 密钥协商 + SM4 对称加密)。
  • 密钥交换:支持双向认证和会话密钥生成。
我曾经在国密 OpenSSL 适配里踩过一个坑:SM2 验签时,公钥的曲线校验不能跳过。有的第三方库会跳过这个校验,导致伪造签名可以通过。嗯,一定记住加校验。

1.2 SM3:密码杂凑算法

SM3 就是国标的 SHA-256——输出 256 位(32 字节)的摘要。我自己测试过,SM3 的速度和 SHA-256 差不多,但安全性设计上多了些防御手段。

关键区别: SM3 的初始向量(IV)和填充方式与 SHA-256 不同。直接用 SHA-256 的代码改参数是不行的。

SM3 主要用在数字签名(SM2)、消息认证码、随机数生成等场景。你在 Go 里调用 sm3.Sum() 就可以,但要注意国密规范里的字节序(大端)。

1.3 SM4:对称分组密码

SM4 是我们常用的对称加密算法,分组长度 128 位,密钥长度 128 位。它的 S 盒和密钥扩展算法跟 AES 差异很大。我平时做数据库加密、文件加密时首选 SM4——效率高,且国产化合规。

  • 工作模式:ECB、CBC、CTR、GCM 等都支持,推荐用 GCM 模式(带认证)。
  • 密钥长度固定:16 字节,不能多不能少。
  • 白盒实现:如果做移动端防护,可能需要用白盒 SM4,但那是另一个话题。
我的避坑指南: SM4 的 CBC 模式需要填充(PKCS#7),但国密标准没强制规定填充方式。不同厂商实现可能不一样,对接前一定要确认填充方案。

1.4 SM9:基于标识的密码算法

SM9 就比较特殊了——它不需要证书,直接用用户的标识(比如手机号、邮箱)作为公钥。底层依赖双线性对(椭圆曲线上的配对运算)。说实话,SM9 的数学比 SM2 复杂很多,我刚开始看规范时头都大了。

SM9 支持签名、密钥交换和加密。它的优势在于去掉了证书管理,很适合 IoT、无服务器场景。但计算开销较大,目前商用落地不如 SM2/SM4 多。

算法 类别 输出/密钥长度 对标国际算法 常见场景
SM2 非对称 256 位密钥 ECDSA / ECDH 签名、加密、密钥交换
SM3 杂凑 256 位摘要 SHA-256 数字签名、完整性校验
SM4 对称 128 位密钥 AES-128 数据加密、通信加密
SM9 非对称(基于标识) 256 位(标识公钥) (无直接对标) 无证书签名、加密

1.5 国密标准体系与应用场景

国密标准不是一张白纸。咱们国内有几个关键标准号要记住:

  • GB/T 32918 – SM2
  • GB/T 32905 – SM3
  • GB/T 32907 – SM4
  • GM/T 0044 – SM9
  • GB/T 35276 – 密码算法应用接口规范

在商用密码应用场景上,我归纳了三大类:

  1. 政务与金融:网上银行、电子印章、CA 证书——基本都是 SM2 + SM3 + SM4 铁三角。
  2. 通信与物联网:VPN 网关、5G SIM 卡、车联网——常用 SM4 做流加密,SM9 用于轻量级身份认证。
  3. 云与数据安全:数据库加密、对象存储加密、密码机——SM4 硬件加速后性能很好。
一句话总结: SM2 管签名认证,SM3 管完整性,SM4 管加密,SM9 管无证书场景。Go 国密 SDK 适配,核心就是把这四个算法的接口封装好,对接到底层硬件或软件实现。
国密算法体系结构 国密标准 (GB/T) SM2 非对称/签名 SM3 密码杂凑 SM4 对称分组 SM9 标识密码 政务与金融 · 电子印章 · 网上银行 · CA 证书 · 可信计算 通信与物联网 · VPN 网关 · 5G SIM 卡 · 车联网 · 智能家居 云与数据安全 · 数据库加密 · 对象存储加密 · 密码机 · 密钥管理 图:国密算法体系与典型应用场景