1. 国密算法概述

各位同学好,我是老周。今天咱们正式开讲《国密算法加密通信协议设计与调优》的第一章。说实话,做了十几年密码学相关的工程,我最大的感触就是:国密算法不再是「备选项」,而是很多场景下的「必选项」。尤其是近两年,金融、政务、关键基础设施,几乎都在往国密迁移。

这一章,我带大家把国密体系的底牌翻一翻。不搞虚的,直接看它是什么、能干什么、跟国际算法比到底差在哪、好在哪。

1.1 国密算法体系介绍

国密算法,全称是中国国家商用密码算法。由国家密码管理局发布,目前最核心的是四个:SM2、SM3、SM4、SM9。我习惯把它们分成三类:

  • 公钥密码:SM2(椭圆曲线)、SM9(标识密码)
  • 对称密码:SM4(分组密码)
  • 哈希算法:SM3(密码杂凑)

说白了,这四兄弟基本覆盖了现代密码学的所有基础需求:加密、签名、密钥交换、完整性校验。我在做某政务云项目时,整套通信协议就靠这四样撑起来的,一个国际算法都没用。

核心要点:SM2 对标 ECC/RSA,SM3 对标 SHA-256,SM4 对标 AES,SM9 对标基于标识的密码体系(如 IBE)。

SM2 — 椭圆曲线公钥密码

SM2 基于椭圆曲线,密钥长度 256 位。它支持数字签名、密钥交换、公钥加密。我个人觉得,SM2 最大的优势是「短密钥、高强度」。256 位的 SM2,安全强度跟 3072 位的 RSA 差不多。你想想看,同样的安全等级,SM2 的密钥只有 RSA 的十分之一不到,这对嵌入式设备、物联网终端来说,太友好了。

SM3 — 密码杂凑算法

SM3 输出 256 位哈希值。它的设计结构跟 SHA-256 类似,但做了不少优化。我记得有一次做合规审计,客户要求所有数字摘要必须用 SM3,不能用 SHA-256。当时我们直接把哈希函数替换掉,跑了一遍回归测试,结果完全兼容。嗯,这里要注意:SM3 和 SHA-256 的输出长度一样,但算法不同,不能混用。

SM4 — 分组密码算法

SM4 是 128 位分组、128 位密钥的对称加密算法。它的轮函数结构跟 AES 不太一样,但加解密速度实测下来,跟 AES-128 基本持平。我在一个实时视频加密项目里用过 SM4 的 CTR 模式,延迟控制在 1 毫秒以内,完全够用。

SM9 — 标识密码算法

SM9 比较特殊。它不需要数字证书,直接用用户的标识(比如邮箱、手机号、身份证号)作为公钥。这在一些没有 PKI 基础设施的场景下特别好用。我曾经在某个偏远地区的政务系统里,用 SM9 做身份认证,省去了部署 CA 的麻烦。

个人经验:SM9 的私钥由密钥生成中心(KGC)生成,所以 KGC 的安全性至关重要。如果 KGC 被攻破,整个系统的私钥都会泄露。建议对 KGC 做物理隔离和硬件加密保护。

1.2 与国际算法的对比

很多同学问我:「国密算法跟 RSA、AES、ECC 比,到底怎么样?」我的回答是:安全强度相当,但设计思路和合规要求不同。下面这张表,是我自己整理的对比,你们可以存一下。

对比维度 SM2 RSA ECC
密钥长度 256 位 2048~4096 位 256 位
安全强度 128 位 112~128 位 128 位
签名速度 快 慢 快
加密速度 中等 慢 中等
合规要求 国密标准 国际标准 国际标准
对比维度 SM4 AES
分组大小 128 位 128 位
密钥长度 128 位 128/192/256 位
轮数 32 轮 10/12/14 轮
加解密速度 与 AES-128 相当 快
合规要求 国密标准 国际标准

为什么会这样?说白了,国密算法在设计时参考了国际主流算法的优点,同时针对国内的应用场景做了优化。比如 SM2 的曲线参数是公开的,但跟 NIST 曲线不同,避免了后门争议。

避坑指南:我曾经在一个项目中,直接把 RSA 的密钥对换成 SM2 的密钥对,以为接口兼容。结果发现 SM2 的签名格式跟 RSA 完全不同,导致验签失败。记住:算法替换不是简单的「换库」,协议层也要跟着改。

1.3 国密算法的应用场景与合规要求

国密算法不是「实验室产品」,它在实际场景中已经大规模落地了。我列几个最常见的:

  • 金融行业:网上银行、移动支付、证券交易。央行早就要求金融核心系统必须使用国密算法。
  • 政务系统:电子政务、公文流转、身份认证。很多政府项目招标时,明确要求「全栈国密」。
  • 物联网:智能电表、车联网、工业控制。SM2 的短密钥优势在这里体现得淋漓尽致。
  • 云计算:云上数据加密、密钥管理、安全通信。我记得有个云厂商的客户,要求所有数据传输必须用 SM4 加密,连内部网络都不例外。

合规方面,大家要记住几个关键文件:

  • 《中华人民共和国密码法》:2019 年发布,明确了商用密码的合规要求。
  • GM/T 系列标准:国密算法的具体技术规范,比如 GM/T 0003(SM2)、GM/T 0004(SM3)、GM/T 0002(SM4)。
  • 等保 2.0:三级及以上系统,建议使用国密算法。

建议:如果你的系统需要过等保或密评,最好从一开始就规划国密算法。后期改造的成本,往往是前期直接使用的 3~5 倍。我见过太多「先上国际算法,后面再改」的项目,最后改得痛不欲生。

1.4 国密算法知识体系总览

下面这张图,是我画的国密算法知识体系总览。它把 SM2、SM3、SM4、SM9 的核心关系和应用场景串在了一起。你们可以把它当作本章的「地图」,后面每章都会回到这张图上来。

国密算法知识体系总览 国密算法体系 SM2 公钥密码 SM3 哈希算法 SM4 对称密码 SM9 标识密码 数字签名 / 密钥交换 完整性校验 / 摘要 数据加密 / 通信加密 无证书身份认证 合规要求:密码法 / GM/T 系列标准 / 等保 2.0 / 密评 说明:SM2/SM3/SM4/SM9 四者协同,构成完整的国密加密通信协议栈 实际项目中通常组合使用,例如 SM2 做密钥协商 + SM4 做数据加密 + SM3 做完整性校验