GB/T 32918-2016 SM2 椭圆曲线公钥密码算法

标题:信息安全技术 SM2椭圆曲线公钥密码算法

发布组织:国家密码管理局 / 中国国家标准委

标准编号:GB/T 32918 系列(共5部分)

摘要:SM2 是基于椭圆曲线密码学(ECC)的公钥算法,包含数字签名、密钥交换和公钥加密三个部分。SM2 使用 256 位素数域椭圆曲线,安全性高于同等密钥长度的 RSA。

主要特性:

官方下载链接: 国家标准全文公开系统

关联工具: 非对称加密工具 (SM2)

GB/T 32918 (SM2) 规范详解

GB/T 32918《信息安全技术 公钥基础设施 SM2 椭圆曲线公钥密码算法》由国家密码管理局发布,是中国商用密码非对称加密标准。SM2 使用国密推荐的 256 位椭圆曲线(sm2p256v1),安全强度约等于 3072 位 RSA,但密钥更短、运算更快。

算法组成

GB/T 32918 分为五个部分:第 1 部分定义总则和数学基础;第 2 部分定义数字签名算法;第 3 部分定义密钥交换协议;第 4 部分定义公钥加密算法;第 5 部分定义参数定义和曲线规范。SM2 使用 SM3 作为默认哈希算法,配合使用构成完整的国密公钥密码体系。

曲线参数

SM2 推荐曲线 sm2p256v1 的参数:素数 p 是 256 位素数;a 和 b 是曲线方程 y^2 = x^3 + ax + b 的系数;G 是基点(生成元),坐标 (Gx, Gy) 各 256 位;n 是基点 G 的阶(也是 256 位素数)。私钥 d 是 [1, n-1] 范围内的随机数,公钥 PA = [d]G 是曲线上一点。

与 ECDSA 的区别

SM2 签名与标准 ECDSA(ANSI X9.62)有关键区别:SM2 在签名前对消息做 Z 预处理(Z = SM3(ENTL || ID || 曲线参数 || 公钥)),然后 e = SM3(Z || M),而 ECDSA 直接对消息哈希签名;SM2 的签名方程与 ECDSA 不同;SM2 使用固定的默认用户 ID 1234567812345678。这些差异意味着 ECDSA 的实现不能直接用于 SM2,需要专门的 SM2 库支持。本站 SM2 工具 支持在线生成密钥对和签名验签。

← 返回规范索引