跳到主要内容
ecdsa.com
可接受短 Weierstrass 形式

SM2

SM2 是中国的 256 位椭圆曲线,与 SM2 签名算法、SM2 密钥交换算法以及 SM3 哈希算法配套使用。

SM2 是形如 y² = x³ + ax + b 的短 Weierstrass 曲线,定义在 256 位素域上,其素数阶子群为 256 位,余因子为 1;估计安全级别为 128 位。状态:安全,但仅限特定地区或小众场景。

该曲线是 p = 2^256 − 2^224 − 2^96 + 2^64 − 1 上的 y² = x³ − 3x + b,2010年由中国国家商用密码管理办公室(OSCCA)发布,后被标准化为 GB/T 32918。OpenSSL 称之为 SM2,TLS 则将其列为 curveSM2。

SM2 签名算法不是 ECDSA:签名者先对用户标识和公钥做哈希,得到值 Z_A,并将其拼接在消息之前,而且签名方程也不同,因此 SM2 密钥无法配合 ECDSA 验证器使用。RFC 8998 将 SM2 和 SM3 引入 TLS 1.3(组 41,签名方案 sm2sig_sm3),RFC 9563 则将它们作为算法 17 引入 DNSSEC。

各标准中的名称

标准名称
GB/T 32918.5-2017SM2
OpenSSLSM2
IANA TLScurveSM2

对象标识符

域参数

256 位素域 · 约 128 位安全强度

域素数 p
0xfffffffeffffffffffffffffffffffffffffffff00000000ffffffffffffffff
系数 a
0xfffffffeffffffffffffffffffffffffffffffff00000000fffffffffffffffc
系数 b
0x28e9fa9e9d9f5e344d5a9e4bcf6509a7f39789f515ab8f92ddbcbd414d940e93
基点 x 坐标
0x32c4ae2c1f1981195f9904466a39c9948fe30bbff2660be1715a4589334c74c7
基点 y 坐标
0xbc3736a2f4f6779c59bdcee36b692153d0a9877cc62a474002df32e52139f0a0
基点的阶 n
0xfffffffeffffffffffffffffffffffff7203df6b21c6052b53bbf40939d54123
余因子 h
0x1

用于

  • Chinese commercial cryptography (SM2/SM3/SM4)
  • TLS 1.3 (RFC 8998)
  • DNSSEC (algorithm 17)

注册表中的标识符

TLS 支持的组
curveSM2 0x0029curveSM2MLKEM768 0x11EE
TLS 签名方案
sm2sig_sm3 0x0708
DNSSEC 算法编号
SM2SM3 17

标准与参考资料

全部曲线