深色模式
按 GM/T 标准组织:逐算法拆解 SM2/SM3/SM4/SM9,再串国密协议与合规。
SM2 椭圆曲线公钥密码
标准:GM/T 0003.1–0003.5(2012)
- 基于推荐曲线参数 sm2p256v1;与 RSA/ECC 平行但曲线与 OID 不同
- 数字签名:GM/T 0003.2;用户身份绑定 ZA 值参与哈希
- 密钥交换:GM/T 0003.3;两方/三方协商
- 公钥加密:GM/T 0003.4;C1||C3||C2 格式
- 强度对标 ECC P-256 量级;具体安全级别参照国家密码管理局评估
SM3 密码杂凑算法
标准:GM/T 0004-2012
- 输出 256 bit;Merkle-Damgård 结构,消息扩展与压缩函数为国密定制
- 用途:数字签名预处理、HMAC-SM3、数据完整性校验
- 与 SHA-256 输出长度相同但算法不兼容
SM4 分组密码
标准:GM/T 0002-2012
- 分组 128 bit,密钥 128 bit,32 轮非平衡 Feistel 变体
- S 盒、线性变换 L 与轮密钥扩展为国密定制
- 工作模式参照 GM/T 0006 应用规范;常见 CBC、CTR、GCM 组合
SM9 与 ZUC
SM9 标识密码(IBC)
标准:GM/T 0044-2016
- 基于身份的密码:公钥可由用户标识(如邮箱)派生
- 需 PKG(私钥生成中心)分发私钥;信任模型与 PKI 不同
- 覆盖签名、加密、密钥交换
ZUC 祖冲之序列密码
标准:GM/T 0001-2012
- 用于 4G/5G 机密性保护;LFSR + 非线性函数
- 与 SM4 分组密码互补,面向流式场景
国密协议标准
| 标准 | 内容 |
|---|---|
| GM/T 0010 | SM2 消息语法(加密/签名数据结构) |
| GM/T 0015 | 基于 SM2 的数字证书格式 |
| GM/T 0024 | SSL VPN 技术规范(国密 TLS 变体) |
| GM/T 0022 | IPsec VPN 技术规范 |
| GM/T 0034 | 基于 SM2 的证书认证系统 |
| GM/T 0006 | 密码应用标识规范 |
<ul>
<li>国密 SSL 与标准 TLS 在 cipher suite、证书 OID、握手流程上有差异</li>
<li>双证书体系(签名证书 + 加密证书)在政务/金融常见</li>
</ul>
<p class="kb-note-inline">练习:对比 SM2 证书与 RSA 证书的 ASN.1 结构差异。</p>
合规与工程
标准:GM/T 0028(密码模块安全要求)
- 密码模块安全等级 1–4;涉密项目须选用通过检测的产品
- 密钥管理流程(生成、存储、分发、销毁)往往比算法实现更耗时间
- Rust 尚无成熟国密 crate;通常 FFI 调 GmSSL 或厂商 SDK
| 语言 | 库 | 说明 |
|---|---|---|
| C | GmSSL | OpenSSL 风格 API |
| Python | gmssl-python | SM2/SM3/SM4 试验 |
<p class="kb-note-inline">练习:GmSSL 完成 SM4 加解密 + SM2 签名验签。本站笔记 <span class="crypto-pending">待撰写</span>。</p>