首页
学习
活动
专区
圈层
工具
发布

SM 算法

修改于 2026-07-03 11:44:36
19
概述

SM 算法是中国国家密码管理局发布的商用密码算法系列,全称为"商用密码算法",用于保障信息安全中的机密性、完整性和身份认证。SM 算法体系包括 SM1、SM2、SM3、SM4、SM7、SM9 以及祖冲之序列密码算法(ZUC)等,覆盖对称加密对称加密、哈希算法、标识密码等密码学核心领域。该系列算法已于 2016 年至 2020 年间陆续成为国家标准(GB/T),其中 SM2、SM3、SM4、SM9 和 ZUC 已推进为 ISO/IEC 国际标准,是中国网络安全自主可控战略的核心技术基础。

一、SM 算法包含哪些具体算法?

1. 对称加密类算法

  • SM1 算法:分组密码算法,分组长度和密钥长度均为 128 位,算法细节未公开,仅以 IP 核形式存在于硬件芯片中,主要用于高安全等级的专用场景。
  • SM4 算法:分组密码算法,分组长度和密钥长度均为 128 位,采用 32 轮非线性迭代结构,算法细节完全公开,可软件实现,是国家标准中替代 AES 的对称加密算法(GB/T 32907-2016)。
  • SM7 算法:分组密码算法,主要面向非接触式 IC 卡、门禁系统等专用场景,算法细节未完全公开。
  • 祖冲之序列密码算法(ZUC):流密码算法,密钥长度和 IV 长度为 128 位,专为 4G/5G 移动通信设计,已成为 3GPP LTE 国际标准,标准编号 GB/T 33133-2016,并获批为 ISO/IEC 18033-4/AMD1:2020。

2. 非对称加密类算法

  • SM2 算法:椭圆曲线公钥密码算法,密钥长度 256 位,等效 RSA 3072 位的安全强度,支持数字签名、密钥交换和公钥加密三种功能(GB/T 32918-2016,对应 ISO/IEC 14888-3:2018)。
  • SM9 算法:标识密码算法(Identity-Based Cryptography),基于双线性对(Bilinear Pairing)设计,用户标识(如邮箱、手机号)直接作为公钥,无需数字证书,适用于大规模用户场景(GB/T 38635-2020,对应 ISO/IEC 14888-3:2018、ISO/IEC 18033-5/AMD1:2021、ISO/IEC 11770-3:2021)。

3. 哈希算法

  • SM3 算法:密码杂凑算法,输出哈希值长度 256 位,采用 Merkle-Damgård 结构,经过 64 轮压缩迭代,由王小云院士团队主导设计,可用于数字签名摘要、数据完整性校验等场景(GB/T 32905-2016,对应 ISO/IEC 10118-3:2018)。

二、SM9 算法是如何工作的?

1. 核心设计思想

SM9 算法基于标识密码(IBC)体系,核心特点是"标识即公钥":用户的唯一标识(如 alice@company.com、手机号码、设备 ID)经过哈希运算后直接作为公钥使用,私钥由密钥生成中心(KGC)根据主密钥和用户标识统一生成。该设计彻底摆脱了对 CA 和数字证书的依赖,大幅简化了密钥管理流程。

2. 系统初始化流程

KGC 生成系统主密钥对:随机生成主私钥 s(保密存储),计算主公钥 P_pub = s × P2(公开分发)。KGC 同时公开系统参数,包括椭圆曲线参数、基点、哈希函数、双线性对识别符等。主私钥是系统的信任根,必须严格保护。

3. 私钥生成流程

用户向 KGC 提交身份标识(如邮箱地址),KGC 使用主私钥 s 和标识派生出用户私钥 d_ID = s × H(ID),通过安全渠道(如离线介质、加密通道)分发给用户。此后,任意通信方只需知道对方标识即可进行加密或验签。

4. 加密与签名流程

  • 加密:发送方将接收方标识哈希为椭圆曲线点 Q_B,生成随机数 r,计算密钥 K = e(Q_B, P_pub)^r,使用 K 派生对称密钥加密消息,输出密文 C = (C1, C2)。接收方使用私钥 d_B 计算 K = e(C1, d_B) 恢复对称密钥并解密。
  • 签名:签名者使用私钥对消息哈希值进行签名,验证者使用签名者标识(公钥)验证签名,无需证书链校验。

5. 标准构成

SM9 算法标准(GM/T 0044 系列 / GB/T 38635-2020)包括五个部分:总则、数字签名算法、密钥交换协议、密钥封装机制和公钥加密算法、参数定义。

三、SM 算法在哪些场景中应用?

1. 政务信息系统

根据《网络安全法》(2026 年修订)和 GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》,政务信息系统应当使用商用密码进行保护。SM2 用于电子公文数字签名,SM3 用于数据完整性校验,SM4 用于敏感数据传输和存储加密,SM9 用于跨部门身份认证的轻量化场景。

2. 金融支付与数字货币

金融 IC 卡、银联芯片卡、数字人民币系统均采用了 SM 算法体系。SM2 用于金融交易的数字签名和密钥协商,SM3 用于交易数据的哈希校验,SM4 用于卡片内部数据和交易报文的加密保护。金融数据密码机(GM/T 0045-2016)是支持 SM 算法的专用硬件密码设备。

3. 电子认证与 SSL/TLS

国密 SSL 证书采用 SM2 算法作为数字签名算法,配套 SM3 作为哈希算法、SM4 作为对称加密算法,构成完整的国密 TLS 协议栈。国密浏览器(如 360 安全浏览器国密版)和国密 Web 服务器Nginx 国密版)已实现端到端的国密 SSL 支持。

4. 物联网与车联网

物联网设备资源受限,SM9 的"无证书"特性大幅降低了设备入网和密钥管理的复杂度。车联网中,车辆标识(VIN 码)可直接作为 SM9 公钥,实现车辆间通信的身份认证和数据加密,无需部署车载 CA。

5. 关键基础设施

能源、交通、水利等关键基础设施的工业控制系统(ICS)逐步采用 SM 算法保护控制指令的真实性和机密性。SM4 用于无线通信链路加密,SM2 用于远程运维的身份鉴别,SM3 用于日志完整性保护。

四、SM 算法的加密强度如何?

1. SM2 加密强度

SM2 采用 256 位椭圆曲线参数,基于椭圆曲线离散对数问题(ECDLP)的数学困难性,其安全强度等效于 RSA 3072 位,远高于 RSA 2048 位。在相同的 128 位安全级别下,SM2 的密钥长度仅为 RSA 的约 1/12,签名速度和验证速度均显著优于 RSA。

2. SM3 加密强度

SM3 输出 256 位哈希值,抗碰撞性设计对标并优于 SHA-256。SM3 的压缩函数融入了更复杂的非线性变换,针对差分攻击、长度扩展攻击等进行了专项优化。目前全球密码学界尚未公开 SM3 的有效攻击方法。

3. SM4 加密强度

SM4 密钥长度 128 位,安全强度与 AES-128 相当。SM4 采用 32 轮非线性迭代的 Feistel 结构,可有效抵抗线性密码分析和差分密码分析。SM4 不支持 192 位和 256 位密钥长度,在密钥长度维度上安全性弱于 AES-256,但在 128 位安全级别下与 AES-128 等效。

4. SM9 加密强度

SM9 基于 256 位椭圆曲线上的双线性对构造,安全强度同样达到 128 位级别,等效于 RSA 3072 位。由于双线性对运算的计算开销较高,SM9 的计算效率低于 SM2,但在无需证书的大规模用户场景下具有显著的运维优势。

五、SM 算法的实现方式有哪些?

1. 开源软件库实现

  • GmSSL:北京大学开发的 OpenSSL 分支,支持 SM2/SM3/SM4/SM9/ZUC 全部国密算法,提供与 OpenSSL 兼容的 EVP API,可无缝替代应用中的 OpenSSL 组件。GmSSL 采用类 BSD 开源许可证,支持商业应用。
  • BouncyCastleJava 和 C# 平台广泛使用的密码库,1.70+ 版本完整支持 SM2、SM3、SM4 算法,需在代码中显式注册 BouncyCastle Provider。
  • gmssl-pythonPython 平台的国密算法库,基于 GmSSL 封装,提供简洁的 Python API,支持 SM2、SM3、SM4 等算法。

2. 硬件密码模块实现

  • 服务器密码机:遵循 GM/T 0030-2014《服务器密码机技术规范》,提供 SM2/SM3/SM4 算法的硬件加速实现,适用于高并发签名和加密场景。
  • 智能密码钥匙(UKey):遵循 GM/T 0016-2023《智能密码钥匙密码应用接口规范》,在 USB 设备中集成 SM 算法,用于数字证书存储和签名运算。
  • HSM(硬件安全模块):遵循 GB/T 37092-2018《信息安全技术 密码模块安全要求》,提供 FIPS 140-2 Level 3 级别的主密钥保护和 SM 算法加速能力。

3. 云服务实现

腾讯云、华为云等主流云服务商已提供基于 SM 算法的密码服务。以腾讯云为例,腾讯云密钥管理系统(KMS)支持 SM2 非对称加密和签名、SM3 哈希运算、SM4 对称加密,开发者可通过云 API 直接调用国密算法能力,无需自行部署密码硬件。

六、SM 算法的性能如何?

1. SM2 性能数据

在主流服务器 CPU(如 Intel Xeon)软件实现环境下,SM2 256 位密钥的签名速度约为 3000 次/秒,验签速度约为 2000 次/秒,显著快于 RSA 同等安全强度下的性能。SM2 密钥生成速度比 RSA 快约 10 倍,适合高并发身份认证场景。

2. SM3 性能数据

SM3 的软件实现吞吐量与 SHA-256 相近,在集成硬件加速(如国密专用指令集)的处理器上,SM3 的吞吐量可进一步提升。SM3 的计算复杂度略高于 SHA-256,但在国产化合规场景中为必选项。

3. SM4 性能数据

SM4 的软件实现性能低于 AES-128 在 AES-NI 硬件加速下的性能。这是因为 AES 有广泛的硬件加速支持(AES-NI 指令集),而 SM4 尚未成为主流 CPU 的硬件加速指令。在国产处理器(如鲲鹏、龙芯)上,SM4 硬件加速已逐步普及,性能差距正在缩小。

4. SM9 性能数据

SM9 由于涉及双线性对运算,计算开销显著高于 SM2。在相同硬件环境下,SM9 签名速度约为 SM2 的 1/5 至 1/10,但 SM9 节省了证书管理和分发的开销,在大规模用户场景下的总体运维成本更低。

七、SM 算法与 AES 有什么区别?

1. 算法类型不同

SM 算法是一个算法体系,其中与 AES 对等的算法是 SM4。SM4 和 AES 均为分组对称加密算法,但 SM4 采用非平衡 Feistel 网络结构,AES 采用代换-置换网络(SPN)结构,两者的算法设计路线不同。

2. 密钥长度与分组长度

SM4 的分组长度和密钥长度均固定为 128 位,不支持更长的密钥长度。AES 支持 128、192、256 位三种密钥长度,在密钥长度灵活性上优于 SM4。在 128 位密钥长度下,SM4 和 AES-128 的安全强度相当。

3. 国际标准化程度

AES 是美国 NIST 于 2001 年发布的国际标准,全球主流浏览器、操作系统、通信协议均原生支持 AES。SM4 是中国国家标准(GB/T 32907-2016),并已推进为 ISO/IEC 18033-3/AMD1:2021 国际标准,但在海外系统的兼容性仍弱于 AES。

4. 硬件加速支持

AES 自 2010 年前后起已广泛集成于 x86(AES-NI)、ARM(ARMv8 加密扩展)等主流 CPU 指令集,硬件加速后的性能优势显著。SM4 的硬件加速目前主要见于国产处理器和专用密码芯片,在通用 CPU 上的软件实现性能弱于 AES。

八、SM 算法与 RSA 有什么区别?

1. 数学基础不同

SM 算法体系中与 RSA 对等的非对称算法是 SM2。SM2 基于椭圆曲线离散对数问题(ECDLP),RSA 基于大整数分解问题。在相同安全强度下,SM2 的密钥长度(256 位)远短于 RSA(3072 位),密钥存储和传输开销更低。

2. 性能差异

SM2 的签名和密钥生成速度显著快于 RSA,但加密速度(使用 SM2 公钥加密时)与 RSA 各有优劣。SM2 的内存占用远低于 RSA,更适合嵌入式设备和物联网终端。RSA 的加密速度在短数据场景下略优于 SM2,但签名速度明显慢于 SM2。

3. 功能覆盖范围

SM2 集数字签名、密钥交换、公钥加密三种功能于一体,一套算法即可满足大多数非对称加密需求。RSA 主要提供数字签名和公钥加密功能,密钥交换通常需要借助 DH 或 ECDH 协议补充实现。

4. 标准化与互通性

RSA 是全球通用的国际标准,几乎所有 SSL 证书、SSH 密钥均默认使用 RSA 或 ECDSA。SM2 是中国国家标准和国际标准(ISO/IEC 14888-3:2018),主要在中国境内和"一带一路"相关国家推广使用,跨境互通性弱于 RSA。

九、SM 算法的密码管理如何实现?

1. 密钥生命周期管理

SM 算法的密钥管理应遵循 GM/T 0051-2016《密码设备管理 对称密钥管理技术规范》和 GB/T 39786-2021 的要求,覆盖密钥生成、分发、存储、更新、归档、销毁全生命周期。密钥生成必须在经国家密码管理局认证的密码设备(如 HSM)中完成,确保密钥不以明文形式出现在设备外部。

2. 非对称密钥管理(SM2)

SM2 密钥对可由用户端生成(如浏览器密钥生成功能),也可由 CA 或 KMS 生成后安全分发。私钥应存储在受硬件保护的环境(如 TPM 2.0、TEE、UKey)中,不得明文导出。公钥以数字证书(X.509 v3 格式,遵循 GM/T 0015-2023)形式分发和验证。

3. 标识密码密钥管理(SM9)

SM9 的密钥管理以 KGC 为核心。KGC 的主私钥是系统的最高秘密,必须存储在 HSM 中,并采用多因素认证、分片存储、审计日志等机制保护。用户私钥通过安全渠道分发,并建议设置私钥有效期,到期后在 KGC 侧重新生成并更新。

4. 对称密钥管理(SM4)

SM4 密钥应通过国家密码管理局认证的密钥管理系统(KMS)生成和管理。密钥分发可采用 SM2 公钥加密或 SM9 加密保护,避免密钥以明文形式在网络中传输。关键系统应定期(如每年)更新 SM4 工作密钥,历史密钥在更新后按规定期限归档或销毁。

十、SM 算法的合规性要求是什么?

1. 等保 2.0 与密评要求

GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》是密评(商用密码应用安全性评估)的核心标准,从物理和环境安全、网络和通信安全、设备和计算安全、应用和数据安全、密钥管理安全、安全管理体系六个维度对信息系统密码应用提出要求。系统通过密评的条件是总分不低于 60 分且不存在高风险项。

2. 关键信息基础设施的强制要求

《关键信息基础设施商用密码使用管理规定》(2025 年 8 月 1 日施行)明确规定:被认定为关键信息基础设施的系统,运行后须每年至少开展一次密评;未通过评估的系统须进行改造,改造期间不得投入运行。金融、能源、交通、政务等行业的核心业务系统均在此范围内。

3. 网络数据安全风险评估衔接

《网络数据安全风险评估办法》(2026 年 8 月 20 日起施行)第二十三条明确规定:涉及重要数据加密等技术措施的,应当按照国家密码相关法律、行政法规要求开展商用密码应用安全性评估。这意味着重要数据处理者的年度数据安全风险评估,若涉及加密技术措施,必须同步开展密评工作。

4. 商密产品认证要求

销售或提供商用密码产品和服务,应当依法办理商用密码认证(如 SRRC 认证、商密产品型号证书)。使用未经国家密码管理局认证的密码产品(如未获商密资质的 SSL 网关、密码机)建设的系统,在密评中将被判定为不合规。

十一、SM 算法的安全性如何评估?

1. 理论安全性评估

SM 算法的理论安全性由国家密码管理局组织国内顶尖密码学专家进行多轮评审,包括数学困难问题的规约证明、算法结构的安全性分析、随机性检测等。SM2 的安全性规约为 ECDLP,SM3 的安全性规约为抗碰撞哈希函数的随机预言机模型,SM4 的安全性规约为 Feistel 网络的反演复杂度。

2. 国际标准化审查

SM2、SM3、SM4、SM9、ZUC 在推进为 ISO/IEC 国际标准的过程中,接受了全球密码学专家的公开审查。国际标准组织的审查意见已反映在最终标准中,进一步验证了 SM 算法的国际学术认可度。

3. 实际部署安全性评估(密评)

商用密码应用安全性评估(密评)是对 SM 算法实际部署安全性的权威评估方式。密评由具有国家密码管理局认可资质的商用密码检测机构实施,依据 GB/T 39786-2021 及相关检测规范,对系统的密码算法使用正确性、合规性、有效性进行全方位测评。

4. 已知攻击与安全性现状

截至 2026 年,全球密码学界尚未公开 SM2、SM3、SM4、SM9 的有效攻击方法。SM1 和 SM7 因算法细节未公开,安全性无法由学术界独立验证,需依赖国家密码管理局的安全论证。需要注意的是,SM2 和 RSA 均面临量子计算的潜在威胁,抗量子密码算法的研究和标准化工作已在国家密码管理局的组织下展开。

十二、SM 算法的加密速度如何?

1. 对称加密速度对比(SM4 vs AES)

SM4 在通用 CPU 软件实现下的加密速度低于 AES-128 在 AES-NI 硬件加速下的性能。AES 有广泛的硬件加速支持(AES-NI 指令集),而 SM4 尚未成为主流 CPU 的硬件加速指令。在国产处理器(如鲲鹏 920、龙芯 3A5000)上,SM4 硬件加速后的性能已接近 AES 的水平。

2. 非对称签名速度对比(SM2 vs RSA)

SM2 256 位签名速度约为 3000 次/秒,显著快于 RSA 同等安全强度下的性能。在验签速度上,SM2 同样大幅领先于 RSA,适合高并发的认证和签名场景。

3. SM9 的加密速度

SM9 由于涉及双线性对运算,单次加密或签名速度明显慢于 SM2(约为 SM2 的 1/5 至 1/10)。但 SM9 的优势不在于单次运算速度,而在于免证书管理带来的系统总体效率提升。在百万级用户规模的系统中,SM9 的密钥管理开销远低于基于 CA 的 SM2 体系。

4. 影响加密速度的主要因素

SM 算法的实际加密速度受多个因素影响:硬件是否支持国密指令加速、是否使用经认证的密码设备、数据分组模式(ECB/CBC/CFB/OFB/GCM)的选择、密钥长度配置等。在选型时应结合业务场景的吞吐量需求、延迟要求和合规要求综合评估。

相关文章
  • sm2和sm4加密算法浅析
    6.5K
  • SM2 (含SM3、SM4)国密算法工具QT版,彻底搞懂sm2算法的使用
    3.1K
  • 关于SM2、SM3、SM4、SM9这四种国密算法
    3.6K
  • PKI - 一文读懂SM1、SM2、SM3、SM4等国密算法
    41.6K
  • sm4算法加密解密
    4.8K
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券