1. 概述
2023年12月国家密码管理局在第45号公告[1]中发布了自2024年6月1日起实施的GM/T 0130—2023《基于SM2算法的无证书及隐式证书公钥机制》[2]等25项密码行业标准。SECG(Standards for Efficient Cryptography Group)于2014年发布ECQV草案V1.2[3]。
这两种大致分为如下几个部分(见下图,暂略去签名验签)。后文将分析对比两种方案的差异。
图1-1 方案的主要组成部分
- 建立系统:KGC执行,生成系统参数和主公私钥对。
- 请求证书:用户执行,是签发证书的第一步。用户生成证书请求数据和私钥碎片。
- 生成证书:KGC执行,是签发证书的第二步。KGC生成用户证书/声明公钥,以及用户私钥碎片。
- 接收证书:用户执行,生成用户公私钥对。其中可以调用“提取公钥”以另一种方式来计算用户的公钥数据
- 提取公钥:任何人都可以执行,利用证书/声明公钥等计算用户公钥。
注:签发证书 = 请求证书 + 生成证书
2. 方案对比
2.1 对比说明
为方便对比,将ECQV的符号/记号调整为尽可能与GM/T 130一致。
下面的用户A为签名端/解密端,需要生成自己的私钥。
2.2 建立系统的对比
GM/T 130 | ECQV | |
建立系统生成主密钥对 | KGC执行: ms:主私钥,随机生成 PPUB:主公钥,计算PPUB = [ms]G, G是基点 | KGC执行: 同左 |
2.3 签发证书的对比(请求证书 + 生成证书)
GM/T 130 | ECQV | |
签发证书 | 请求证书用户A执行: A1:随机dA`; A2:UA = [dA`]G | 请求证书用户A执行: 同左 |
生成证书KGC执行: K1:见下[调整到K4步中] K2:随机w; K3:WA = [w]G + UA; K4:HA = H(…, IDA, …);[K1步] Cert = WA || HA λ = H(Cert) mod n K5:tA = (w + λ*ms) mod n | 生成证书KGC执行: K1:无 K2:随机w; K3:WA = [w]G + UA; K4: Cert = Encode(WA, IDA, *) λ = H(Cert) mod n K5:tA = (λ*w + ms) mod n | |
用户A(签名端)执行: A3:dA = (tA + dA`) mod n; | 用户A(签名端)执行: A3:dA = (tA + λ*dA`) mod n; |
2.4 接收证书的对比
GM/T 130 | ECQV | |
接收证书 | 用户A执行: 注:HA = H(…, IDA, …); Cert = WA || HA A1:λ = H(Cert) mod n A2:dA = (tA + dA`) mod n; A3:PA = [dA]G A4:调用“提取公钥”计算出PA`; 验证PA = PA`是否成立。 | 用户A执行: 注: Cert = Encode(WA, IDA, *) A1:λ= H(Cert) mod n A2:dA = (tA + λ*dA`) mod n; A3:PA = [dA]G A4:调用“提取公钥”计算出PA`; 验证PA = PA`是否成立。 |
2.5 提取公钥的对比
GM/T 130 | ECQV | |
提取公钥 | 任何人执行: 注:HA = H(…, IDA, …); Cert = WA || HA X1:λ = H(Cert) mod n X2:PA=WA+[λ]Ppub | 任何人执行: 注: Cert = Encode(WA, IDA, *) X1:λ = H(Cert) mod n X2:PA=[λ]WA+Ppub |
注:私钥计算公式差异必然导致公钥计算公式差异。两种方案公户公私钥的对比见下节。
2.6 用户公私钥的对比
公私钥的差异见下。
图2-1 用户公私钥对方案的对比
参考文献
- 国家密码管理局公告(第45号)[EB/OL]. (2023-12-23).https://www.oscca.gov.cn/sca/xxgk/2023-12/23/content_1061160.shtml
- GM/T 0130-2023. 基于SM2算法的无证书及隐式证书公钥机制(征求意见稿),2023.
- SECG. SEC 4: Elliptic Curve Qu-Vanstone Implicit Certicate Scheme (ECQV) Version (Draft) 1.2[EB/OL]. 2024. https://secg.org/draft-sec4-1.2.pdf