1. 国密算法概述
各位同学好,我是老张。今天咱们正式进入《国密算法权限隔离与启动校验实战》的第一章。说实话,做了十几年安全架构,我亲眼看着国密从“冷门选项”变成了“强制要求”。很多朋友一听到“国密”就觉得头大,觉得是政策任务。其实你把它拆开看,它就是一套密码学工具包,跟国际算法一样干活,只是换了套标准。
这一章,我们先搭个知识骨架。把 SM2、SM3、SM4 是什么、跟国际算法怎么比、实际用在哪儿,一次性理清楚。后面所有实战章节,都建立在这个基础上。
1.1 国密算法体系介绍
国密算法,全称是中国商用密码算法。由国家密码管理局发布,目前最核心的三个是:SM2(公钥密码)、SM3(密码杂凑)、SM4(分组密码)。
我习惯把它们类比成国际算法里的 RSA、SHA-256 和 AES。但注意,只是功能对标,底层数学原理完全不同。
核心三件套速览:
- SM2:基于椭圆曲线(ECC),用于签名、密钥交换、加密。曲线参数是国密局定的,跟国际 ECC 不互通。
- SM3:杂凑算法,输出 256 位摘要。结构上类似 SHA-256,但做了很多细节优化。
- SM4:对称分组密码,密钥长度 128 位,分组长度 128 位。用于数据加密,性能很好。
除了这三个,还有 SM9(基于标识的密码)、SM7(非接触式 IC 卡专用)等。但咱们课程主要围绕 SM2/SM3/SM4 展开,因为这是权限隔离和启动校验里最常用的。
1.2 国密与国际算法对比
很多同学会问:“国密到底比国际算法强在哪?弱在哪?” 说实话,没有绝对的强弱,只有适用场景和合规要求的不同。
我拿一个实际项目举例。之前给某金融机构做密钥管理系统,客户要求必须用国密。我们对比了 SM2 和 RSA-2048 的性能,发现 SM2 签名速度比 RSA 快不少,但验签速度略慢。不过 SM2 的密钥长度只有 256 位,RSA 要 2048 位,存储和传输优势很明显。
| 对比维度 | SM2 | RSA-2048 | SM3 | SHA-256 | SM4 | AES-128 |
|---|---|---|---|---|---|---|
| 算法类型 | 椭圆曲线公钥 | 大整数分解公钥 | 杂凑 | 杂凑 | 对称分组 | 对称分组 |
| 密钥长度 | 256 位 | 2048 位 | — | — | 128 位 | 128 位 |
| 安全强度 | 128 位 | 112 位 | 128 位 | 128 位 | 128 位 | 128 位 |
| 签名性能 | 较快 | 较慢 | — | — | — | — |
| 合规要求 | 国密标准 | 国际标准 | 国密标准 | 国际标准 | 国密标准 | 国际标准 |
避坑提醒: 我曾经遇到一个团队,把 SM2 的密钥对直接当成 RSA 密钥对用,结果签名验签死活对不上。国密和国际算法在编码格式、曲线参数、填充方式上都有差异,不能直接互换。后面章节我会专门讲格式转换的坑。
1.3 国密算法应用场景
国密算法现在覆盖的场景越来越广。我把它分成三大类:
- 身份认证与数字签名:比如电子政务、金融交易、合同签署。SM2 签名是主力。
- 数据加密与传输保护:比如数据库加密、VPN 通信、文件加密。SM4 因为性能好,用得最多。
- 完整性校验与防篡改:比如固件校验、日志完整性、启动校验。SM3 做哈希摘要。
咱们这门课的核心——权限隔离与启动校验,就是把这三种场景组合起来。举个例子:系统启动时,先用 SM3 计算固件摘要,再用 SM2 验签确认固件来源可信,最后用 SM4 解密敏感配置。一套组合拳下来,安全性就上去了。
下面这张图,把国密算法体系、国际对标、应用场景串在一起,方便你建立整体认知。
个人经验: 我建议你在学习具体实现之前,先把这三个算法的核心参数记牢。SM2 的曲线标识符是 0x03、SM3 的初始 IV 是固定的 8 个 32 位字、SM4 的 S 盒是 16x16 的查找表。后面写代码时,这些细节会反复用到。