一、国密算法概述:从零认识国产密码体系

各位同学好,我是老张。做密码学工程十几年了,今天咱们开始聊国密算法。说实话,我刚入行那会儿,国内用的全是 RSA、AES 这些国际算法。直到 2010 年左右,国密标准陆续出台,我才真正开始接触 SM2、SM3、SM4。嗯,这一接触就是十多年。

这一章,咱们先搭个框架。把国密算法是什么、跟国际算法比怎么样、用在哪儿、合规怎么搞,一次性说清楚。你想想看,如果连这些基础都不清楚,后面学签名验签肯定会踩坑。

1.1 国密算法体系:SM2 / SM3 / SM4 各司其职

国密算法,全称是中国商用密码算法。由国家密码管理局发布,属于国家标准。目前最核心的三个算法是:

  • SM2 —— 椭圆曲线公钥密码算法。用于签名、密钥交换、加密。对标 ECDSA / ECDH。
  • SM3 —— 密码杂凑算法。输出 256 位哈希值。对标 SHA-256。
  • SM4 —— 分组对称密码算法。密钥长度 128 位。对标 AES。

我个人的习惯是,把 SM2 看作「钥匙」,SM3 看作「指纹」,SM4 看作「保险箱」。三者配合,才能完成签名验签的完整流程。

核心关系:签名验签时,SM3 先对消息计算摘要,SM2 再用私钥对摘要签名。SM4 通常用于加密传输过程中的会话密钥,不直接参与签名。

下面这张图,把国密算法的整体结构画出来了。我建议你多看几遍,后面每章都会用到这个框架。

国密算法体系结构图 国密算法体系结构 国密算法体系 SM2 公钥密码 SM3 密码杂凑 SM4 对称密码 SM2 功能 • 数字签名 • 密钥交换 • 公钥加密 SM3 功能 • 消息摘要 • 完整性校验 • 密钥派生 SM4 功能 • 数据加密 • 数据解密 • 会话保护 签名验签核心组合:SM3 + SM2

1.2 与国际算法的对比:SM2 vs RSA / ECDSA

很多同学问我:「国密算法跟 RSA、ECDSA 到底差在哪儿?」说白了,就是数学原理和性能的差异。

我拿 SM2 和 RSA 举个例子。RSA 基于大整数分解难题,密钥越长越安全。SM2 基于椭圆曲线离散对数难题,256 位密钥就能达到 RSA 3072 位的安全强度。你想想看,密钥短了,计算量自然就小了。

下面这个表格,是我在项目中经常用来跟客户解释的对比表。你直接拿去用就行。

对比维度 SM2 RSA ECDSA
数学基础 椭圆曲线 大整数分解 椭圆曲线
密钥长度 256 位 2048 / 3072 位 256 位
签名速度 快 慢 快
验签速度 快 较快 快
安全性 高(等效 RSA 3072) 高 高
国内合规 强制要求 部分场景受限 部分场景受限

我的经验:在 IoT 设备上,SM2 的签名速度比 RSA 快 3-5 倍。我曾经在一个智能门锁项目里,用 SM2 替换 RSA,签名时间从 200ms 降到了 50ms。用户体验提升很明显。

1.3 应用场景:国密算法用在哪?

国密算法不是实验室里的东西。它已经大规模落地了。我列几个最常见的场景:

  • 电子政务 —— 公文流转、电子签章、行政审批。必须用国密,这是硬性规定。
  • 金融支付 —— 网银、移动支付、数字人民币。我记得 2020 年帮某银行做国密改造,光签名验签接口就重构了 20 多个。
  • 物联网 —— 智能门锁、车联网、工业控制。设备资源有限,SM2 的短密钥优势很明显。
  • 数据安全 —— 数据库加密、文件加密、传输加密。SM4 在这里唱主角。
  • 区块链 —— 国产联盟链、数字身份。SM2 签名是链上交易的核心。

你可能会问:「为什么一定要用国密?」嗯,除了安全,更关键的是合规。下面咱们就聊这个。

1.4 合规要求:不满足就是违法

做国密算法,合规是底线。我见过不少项目,因为没用国密被监管部门叫停整改。那损失,可不是几万块钱能解决的。

⚠️ 重要提醒:根据《中华人民共和国密码法》和《商用密码管理条例》,以下场景必须使用国密算法:

  • 党政机关信息系统
  • 关键信息基础设施(金融、能源、交通、医疗等)
  • 涉及国家安全和公共利益的信息系统
  • 电子认证服务(CA 证书)

违反规定,可能面临行政处罚甚至刑事责任。

我曾经帮一家医疗公司做系统改造。他们原来的签名用的是 RSA 2048,数据加密用的是 AES。合规审查时被要求全部替换成 SM2 + SM4。嗯,那段时间加班加得我头发都掉了不少。

所以,我的建议是:如果你在做国内项目,尤其是政府、金融、医疗、能源相关,从一开始就上国密。别等审查来了再改,那成本高得多。

1.5 本章小结

这一章,咱们把国密算法的底子打好了。你知道了:

  • SM2 是公钥算法,负责签名验签
  • SM3 是哈希算法,负责生成摘要
  • SM4 是对称算法,负责数据加密
  • 国密比 RSA 更高效,密钥更短
  • 合规是硬要求,别心存侥幸