1. 国密算法概述
国密算法(国家商用密码算法)是由中国国家密码管理局制定并发布的密码行业标准,广泛应用于政府、金融、电力、通信等关键信息基础设施领域。本章从标准体系、国际对标、应用场景与合规要求四个维度进行系统梳理,为后续源码实现奠定理论基础。
1.1 国密标准体系(SM2/SM3/SM4/SM9)
国密标准体系覆盖公钥密码、对称密码、哈希算法和标识密码四大类,核心算法包括:
| 算法 | 类型 | 密钥长度 | 标准编号 | 主要用途 |
|---|---|---|---|---|
| SM2 | 椭圆曲线公钥密码 | 256 位 | GB/T 32918 | 数字签名、密钥交换、公钥加密 |
| SM3 | 密码杂凑算法 | 256 位摘要 | GB/T 32905 | 完整性校验、数字签名辅助 |
| SM4 | 分组对称密码 | 128 位 | GB/T 32907 | 数据加密、通信加密 |
| SM9 | 标识密码算法 | 256 位 | GB/T 38635 | 基于标识的签名、加密、密钥交换 |
体系特点: SM2/SM3/SM4 构成基础密码套件,SM9 提供无证书的标识密码方案,降低密钥管理复杂度。所有算法均基于公开的国密标准文档实现,无专利壁垒。
1.2 与国际算法对比分析
国密算法与国际主流算法在安全强度、性能、标准化程度等方面各有特点。以下从核心指标进行对比:
| 对比维度 | 国密算法 | 国际算法 | 关键差异 |
|---|---|---|---|
| 公钥密码 | SM2(256位椭圆曲线) | RSA(2048/3072位)、ECDSA(256位) | SM2 密钥更短,签名速度优于 RSA,与 ECDSA 安全等级相当 |
| 哈希算法 | SM3(256位输出) | SHA-256 | SM3 结构类似 SHA-256,但消息扩展和压缩函数不同,抗碰撞能力经国家密码管理局验证 |
| 对称密码 | SM4(128位分组,128位密钥) | AES(128/192/256位密钥) | SM4 采用非平衡 Feistel 结构,AES 为 SPN 结构;SM4 硬件实现效率高 |
| 标识密码 | SM9(基于双线性对) | 无直接对标(类似 IBC) | SM9 无需证书,直接使用用户标识作为公钥,简化 PKI 部署 |
安全强度等价性: SM2 256位曲线提供与 RSA 3072位、ECDSA 256位同等级别的安全强度(约128位安全级别)。SM3 256位摘要提供与 SHA-256 相同的抗碰撞安全性。
1.3 应用场景与合规要求
国密算法在以下典型场景中具有强制性或推荐性应用要求:
- 电子政务与党政机关: 根据《密码法》和《商用密码管理条例》,涉及国家秘密和政务信息系统的密码应用必须使用国密算法。
- 金融行业: 银保监会、人民银行要求银行核心交易系统、网上银行、移动支付等场景逐步替换为 SM2/SM3/SM4。
- 电力与能源: 国家电网、南方电网的智能电表、调度系统、配电自动化系统强制使用国密算法进行身份认证和数据加密。
- 通信与物联网: 5G 核心网、物联网平台、车联网 V2X 通信中,SM9 标识密码用于设备身份认证和端到端加密。
- 云计算与大数据: 政务云、金融云的数据存储加密、传输加密、密钥管理需通过国密算法实现合规。
合规红线: 自2020年1月1日起,等保2.0标准要求三级及以上信息系统必须使用国密算法进行密码改造。未通过国密算法合规检测的系统,不得通过网络安全等级保护测评。
1.4 国密算法实现的技术要点
在后续章节的源码实战中,我们将围绕以下技术要点展开:
- SM2 椭圆曲线运算: 素数域运算、点加/倍点、标量乘法、KDF 密钥派生函数。
- SM3 消息填充与迭代压缩: 消息扩展、64轮压缩函数、异或/移位/置换操作。
- SM4 密钥扩展与加解密: 32轮非线性迭代、S盒替换、线性变换 L 与 T 函数。
- SM9 双线性对运算: Tate 对或 Ate 对实现、标识哈希到曲线、密钥封装机制。
- 安全编码规范: 侧信道防护、随机数生成、内存清零、异常处理。
课程路线: 本章为理论总览,第2章起将依次深入 SM4、SM3、SM2、SM9 的纯 Python 实现,每章附带可运行的代码示例与测试向量验证。