SM2 是什么
SM2 是我国商用密码公钥算法,标准为 GB/T 32918 系列,包含总则、数字签名、密钥交换、公钥加密与参数定义五部分。它基于 256 位素数域椭圆曲线(sm2p256v1),用于签名验签、密钥交换与公钥加密,摘要运算配套使用 SM3,构成完整的国密套件。在密评与政务、金融系统中,SM2 通常出现在数字证书、电子签名与密钥协商环节。
基本信息
| 标准 | GB/T 32918.1 至 .5(总则、签名、密钥交换、公钥加密、参数) |
|---|---|
| 曲线 | 256 位素数域椭圆曲线(sm2p256v1) |
| 用途 | 签名验签、密钥交换、数据加密 |
| 配套摘要 | SM3 |
| 密钥长度 | 256 位,属椭圆曲线体系 |
| 常见载体 | 数字证书、USB Key、密码机、密码模块 |
典型使用场景
- 电子签名与电子印章的算法选择
- 政务与金融系统的证书体系国密改造
- 与外部系统对接时的密钥协商
- 密评整改中的算法合规替换
- 密码机与 USB Key 的算法能力确认
OpenSSL 生成 SM2 密钥
OpenSSL 生成 SM2 密钥
# 生成 SM2 私钥
openssl ecparam -genkey -name SM2 -out sm2.key
# 从私钥导出公钥
openssl ec -in sm2.key -pubout -out sm2.pub
# 自签名证书(示意用法,参数按合规要求调整)
openssl req -new -x509 -key sm2.key -out sm2.crt -days 3650用途与配套算法
| 用途 | 算法 | 说明 |
|---|---|---|
| 数字签名 | SM2 配 SM3 | 签名值与证书绑定 |
| 密钥交换 | SM2 | 协商会话密钥 |
| 数据加密 | SM2 | 适合加密短数据或密钥 |
| 完整性校验 | SM3 | 摘要与 HMAC 场景 |
SM2 与 RSA 是两套体系:密钥格式、密文结构与接口参数都不同,不能把 SM2 密钥当 RSA 密钥使用;迁移时要评估证书链与中间件兼容性。
国密套件内摘要通常要求使用 SM3;用 SHA-256 混配 SM2,在多数合规场景下会被质疑,除非标准或系统明确允许。
选型与合规证据
| 要点 | 做法 | 留证 |
|---|---|---|
| 算法合规 | 选用 SM2 等商用密码算法 | 算法与标准对照说明 |
| 模块合规 | 使用通过检测的密码模块或密码机 | 产品证书与型号清单 |
| 私钥保护 | 私钥不出模块,调用留审计 | 密钥调用与操作记录 |
| 证书体系 | 签发、吊销与更新流程清晰 | 证书台账与更新记录 |
签名与加密的密钥应分开使用:同一对密钥既签名又加密会放大泄露影响,也容易被密评追问用途隔离。