一、国密算法概述

各位同学好,我是你们这门课的老周。在密码行业摸爬滚打了十几年,从最早的 RSA 做到现在的国密,踩过的坑不少,积累的经验也还算有点。今天咱们正式开篇,聊聊国密算法到底是个什么东西。

很多人一听到「国密」,第一反应是「哦,国家规定的加密标准」。这话没错,但太笼统了。你想想看,国家为什么要推一套自己的密码算法?说白了,核心就两个字:自主。国际算法虽然好用,但密钥生成、算法实现这些环节,我们没法完全掌控。国密就是要解决这个问题。

核心观点:国密算法不是对国际算法的简单替代,而是一套从底层数学原理到上层应用接口完全自主可控的密码体系。

1.1 国密算法体系介绍

国密算法目前主要包含四个核心成员:SM2、SM3、SM4、SM9。我习惯把它们分成两类:

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

咱们一个一个来看。

SM2 — 国密的「门面担当」

SM2 是基于椭圆曲线(ECC)的公钥密码算法。它支持加密、签名、密钥交换三种功能。我记得第一次在项目中落地 SM2 时,最头疼的是它的密钥生成速度——比 RSA 慢不少。但后来优化了参数选择,其实差距没那么大。

实战经验:SM2 的推荐曲线参数是固定的(sm2p256v1),不要自己乱改。我在某项目中见过有人用自定义曲线,结果互操作性一塌糊涂。

SM3 — 国密的「指纹提取器」

SM3 是密码杂凑算法,输出 256 位(32 字节)的摘要值。它的设计思路和 SHA-256 类似,但内部结构有差异。SM3 的抗碰撞性经过严格验证,目前没有公开的有效攻击方法。

SM4 — 国密的「加密主力」

SM4 是分组对称加密算法,分组长度 128 位,密钥长度也是 128 位。它主要用于数据加密,比如磁盘加密、通信加密。我在做金融数据加密时,SM4 用得最多,因为它的加解密速度比 SM2 快得多。

SM9 — 国密的「黑科技」

SM9 是基于标识的密码算法(Identity-Based Cryptography)。它的特点是:不需要数字证书,直接用用户的标识(比如邮箱、手机号)作为公钥。这玩意儿在 IoT 场景下特别好用,省去了证书管理的麻烦。

注意:SM9 的密钥托管问题。因为私钥由密钥生成中心(KGC)生成,所以 KGC 的安全性至关重要。我曾经在项目中建议客户对 KGC 做物理隔离,否则一旦 KGC 被攻破,所有用户的私钥都会泄露。

1.2 国密与国际算法对比

很多同学会问:「国密和国际算法到底谁更强?」我的回答是:没有绝对的强弱,只有适用场景的不同。咱们直接看对比表:

功能 国密算法 国际算法 核心差异
公钥加密/签名 SM2(256位椭圆曲线) RSA(2048位)/ ECDSA SM2 密钥更短,性能更高;RSA 兼容性更好
对称加密 SM4(128位分组) AES(128/256位) SM4 轮数更多(32轮 vs AES 10/12/14轮),安全性相当
杂凑算法 SM3(256位输出) SHA-256 SM3 结构更复杂,抗碰撞性略强
标识密码 SM9 无直接对应(类似 IBE) SM9 是国密独有的标识密码标准

我个人的经验是:性能上 SM2 优于 RSA,但弱于 ECDSA。为什么?因为 SM2 的签名验证过程比 ECDSA 多了一次点乘运算。不过在实际工程中,这个差距可以忽略不计。

1.3 国密算法应用场景与政策背景

国密算法不是凭空出现的。它的背后是国家对网络安全自主可控的强烈需求。我给大家梳理几个关键时间点:

  • 2010年:SM2/SM3/SM4 正式发布为国家标准
  • 2017年:《网络安全法》实施,明确要求关键信息基础设施使用国密算法
  • 2020年:《密码法》正式施行,国密算法成为法律层面的强制要求
  • 2023年:SM9 成为国际标准(ISO/IEC 18033-5),国密开始走向世界

政策驱动下,国密算法的应用场景越来越广:

  1. 金融领域:网上银行、支付系统、证券交易。我参与过某大型银行的国密改造项目,核心交易系统全部替换为 SM2/SM4。
  2. 政务系统:电子政务、电子证照、数字签名。政府网站必须支持国密算法。
  3. 物联网:智能家居、车联网、工业控制。SM9 在这里大显身手。
  4. 移动通信:5G 网络中的身份认证、数据加密。
  5. 区块链:数字人民币、联盟链。SM2 签名是标配。

避坑指南:我曾经在某个政务项目中,客户要求「全栈国密」,但他们的旧系统用的是 RSA 证书。结果改造时发现,SM2 证书的签发流程和 RSA 完全不同,导致项目延期了两个月。所以,国密改造一定要提前做好兼容性评估。

1.4 国密算法知识体系总览

下面这张图是我自己整理的国密算法知识体系,方便大家建立整体认知:

国密算法知识体系总览 国密算法体系 SM2 公钥密码 SM3 杂凑算法 SM4 对称加密 SM9 标识密码 功能 加密 / 签名 / 密钥交换 基于椭圆曲线 密钥长度 256 位 功能 数据完整性校验 输出 256 位摘要 抗碰撞性强 功能 数据加密/解密 分组长度 128 位 32 轮迭代 功能 基于标识的加密 无需数字证书 需 KGC 托管 应用场景:金融 / 政务 / IoT / 5G / 区块链 政策驱动:网络安全法 → 密码法 → 国密标准

这张图把国密算法的四个核心成员、各自功能、应用场景和政策背景串在了一起。你可以把它当作整个课程的地图——后面每一章都会围绕其中一个节点展开。

1.5 本章小结

好了,第一章的内容就到这里。咱们回顾一下重点:

  • 国密算法体系包含 SM2(公钥)、SM3(杂凑)、SM4(对称)、SM9(标识)四大核心
  • 与国际算法相比,国密在安全性上不落下风,在自主可控上具有绝对优势
  • 政策驱动是国密推广的最大动力,金融、政务、IoT 是主要落地场景