1. 国密算法概述
各位同学好,我是老周。做嵌入式安全这块十几年了,今天咱们开始聊国密算法。说实话,我刚入行那会儿,国内基本清一色用国际算法——RSA、AES、SHA256。直到后来在一些政府项目和金融终端里,客户明确要求必须用国密,我才真正开始啃这些标准。
国密算法,全称是中国商用密码算法。它不是某一个算法,而是一整套体系。我习惯把它分成三大块:SM2(公钥密码)、SM3(哈希算法)、SM4(对称密码)。这三兄弟基本覆盖了你在嵌入式固件保护中会遇到的所有密码学需求。
核心观点:国密不是对国际算法的简单替换,它在设计理念、安全强度和实现效率上都有自己的考量。做固件启动校验,SM2+SM3的组合是目前最主流的选择。
1.1 国密算法体系介绍
先看一张整体框架图,帮你建立全局认知。
从上图你能看到,国密体系覆盖了密码学的三大基础领域。我重点说一下每个算法的核心特点。
SM2 — 椭圆曲线公钥密码
SM2 基于椭圆曲线密码学(ECC),密钥长度 256 位。说白了,它跟国际上的 ECDSA、ECDH 是同类,但曲线参数是国密局自己定义的。我记得第一次在 ARM Cortex-M4 上移植 SM2 时,最头疼的是大数运算的性能优化。256 位的模乘,在没硬件加速的 MCU 上,一次签名要跑几十毫秒。
我的经验:SM2 签名长度是 64 字节(r||s),比 RSA-2048 的 256 字节签名短得多。在固件升级场景里,这意味着更少的存储开销和更快的传输。这一点在实际产品中非常实用。
SM3 — 密码杂凑算法
SM3 输出 256 位(32 字节)的哈希值。它的设计结构跟 SHA-256 类似,但做了不少改进。我做过对比测试,SM3 在软件实现上比 SHA-256 慢大概 10%-15%,但在硬件加速下基本没差别。
你可能会问:为什么不用现成的 SHA-256?嗯,这里有个关键点——国密标准要求,在商用密码应用系统中,必须使用国密算法。这不是技术选择,是合规要求。
SM4 — 分组对称密码
SM4 是 128 位分组、128 位密钥的对称加密算法。它跟 AES 对标,但轮数更多(32 轮 vs AES 的 10/12/14 轮)。在固件加密存储场景里,SM4 用得比较多。我个人觉得 SM4 的 S 盒设计得挺巧妙,查表实现非常快。
1.2 与国际算法的对比
很多初学者会纠结:国密到底比国际算法强在哪?我直接给你一张对比表,一目了然。
| 对比维度 | SM2 | RSA-2048 | SM3 | SHA-256 | SM4 | AES-128 |
|---|---|---|---|---|---|---|
| 密钥/输出长度 | 256 位 | 2048 位 | 256 位 | 256 位 | 128 位 | 128 位 |
| 安全强度 | 128 位 | 112 位 | 128 位 | 128 位 | 128 位 | 128 位 |
| 签名/加密速度 | 快(ECC 优势) | 慢(大数模幂) | — | — | 快(查表实现) | 快(硬件加速多) |
| 签名长度 | 64 字节 | 256 字节 | — | — | — | — |
| 国标合规 | 是 | 否 | 是 | 否 | 是 | 否 |
| 嵌入式资源占用 | 中等 | 高(大数库) | 低 | 低 | 低 | 低 |
注意:安全强度一栏,SM2 的 256 位密钥提供 128 位安全强度,而 RSA-2048 只有 112 位。这意味着 SM2 用更短的密钥达到了更高的安全等级。我曾经在给一个物联网网关做方案时,客户坚持用 RSA-2048,结果固件签名太大,Flash 装不下……后来换成 SM2,问题迎刃而解。
再说说 SM3 和 SHA-256 的区别。两者结构相似,但 SM3 在消息扩展和压缩函数上做了调整。举个例子,SM3 的压缩函数有 64 轮迭代,而 SHA-256 是 64 轮,但每轮的具体操作不同。实际测试下来,SM3 的雪崩效应更好——输入改 1 个比特,输出大概有一半的比特会变化。
1.3 国密算法的应用场景
国密算法不是只用在政府项目里。我这些年接触过的实际场景,覆盖了下面这些领域:
- 固件启动校验:这是本课程的核心。用 SM2 对固件做数字签名,BootROM 里验签,确保固件没被篡改。我在一个智能电表项目里就是这么做的,通过了国密局的安全审查。
- 安全固件升级:SM3 校验固件包的完整性,SM4 解密加密的固件镜像。说白了,就是防止升级包被篡改或窃取。
- 安全通信信道:SM2 做密钥协商,SM4 做数据加密。比如智能门锁和云平台之间的通信,用国密算法可以过等保三级。
- 数据存储加密:用 SM4 加密敏感配置或日志。我记得有个车载 T-Box 项目,客户要求所有日志必须 SM4 加密存储,防止物理拆解后泄露数据。
- 身份认证:SM2 数字证书用于设备身份认证。工业物联网里,每个 PLC 都烧录 SM2 证书,上线时跟平台双向认证。
一句话总结:国密算法已经覆盖了从芯片级到云端的全链路安全需求。做嵌入式固件保护,SM2+SM3 是你必须掌握的组合拳。