标准搜索结果: 'GM/T 0130-2023'
| 标准编号 | GM/T 0130-2023 (GM/T0130-2023) | | 中文名称 | 基于SM2算法的无证书及隐式证书公钥机制 | | 英文名称 | Certificateless and implicit-certificate-based public key mechanisms based on the SM2 algorithms | | 行业 | Chinese Industry Standard (推荐) | | 中标分类 | L80 | | 字数估计 | 28,214 | | 发布日期 | 2023-12-04 | | 实施日期 | 2024-06-01 | | 发布机构 | 国家密码管理局 |
GM/T 0130-2023: 基于SM2算法的无证书及隐式证书公钥机制
ICS 35.030
CCSL80
中华人民共和国密码行业标准
基于SM2算法的无证书及
隐式证书公钥机制
2023-12-04发布
2024-06-01实施
国家密码管理局 发 布
目次
前言 Ⅲ
引言 Ⅳ
1 范围 1
2 规范性引用文件 1
3 术语和定义 1
4 符号和缩略语 2
4.1 符号 2
4.2 缩略语 3
5 机制参数和辅助函数 3
5.1 概述 3
5.2 椭圆曲线系统参数 4
5.3 辅助函数 4
5.4 用户标识信息 4
6 密钥生成机制及流程 5
6.1 主密钥生成机制 5
6.2 用户密钥对生成机制 5
6.3 用户密钥对生成流程 5
6.4 用户密钥对校验机制 6
6.5 用户密钥对校验流程 7
7 数字签名机制 7
7.1 数字签名的生成机制 7
7.2 数字签名的验证机制 8
8 公钥加密机制 8
8.1 加密机制 8
8.2 解密机制 8
附录A(资料性) 机制数据示例 9
附录B(资料性) 机制在隐式证书应用中的应用示例 15
附录C(资料性) 机制在工业互联网标识解析系统中的应用示例 18
附录D(资料性) 密钥生成中心用户密钥的确定性生成方法 21
参考文献 22
前言
本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定
起草。
本文件由密码行业标准化技术委员会提出并归口。
本文件起草单位:深圳奥联信息安全技术有限公司、兴唐通信科技有限公司、国汽(北京)智能网联
汽车研究院有限公司、国家工业信息安全发展研究中心、中汽数据(天津)有限公司、中国电力科学研究
院有限公司、北京信安世纪科技股份有限公司、中国石油勘探开发研究院、北京汽车研究总院有限公司、
北京数字认证股份有限公司、北京国脉信安科技有限公司、国家电网能源互联网技术研究院、中国测绘
科学研究院、中国科学院信息工程研究所、北京邮电大学、中国大唐集团科学技术研究总院有限公司、
大唐微电子技术有限公司、大唐移动通信设备有限公司、大唐高鸿数据网络技术股份有限公司、格尔软
件股份有限公司、大唐电信科技股份有限公司、中国信息通信研究院、中国移动研究院、中安网脉(北京)
技术股份有限公司、广州汽车集团股份有限公司汽车工程研究院、中汽研软件测评(天津)有限公司、联
通智网科技股份有限公司、上汽通用五菱汽车股份有限公司、握奇数据股份有限公司、三未信安科技股
份有限公司、中国联通中讯邮电咨询设计院有限公司、青岛国创智能家电研究院有限公司、国家信息安
全技术研究中心、北京江南天安科技有限公司、博雅中科(北京)信息技术有限公司、安徽问天量子科技
股份有限公司。
本文件主要起草人:程朝辉、万兆泽、刘建行、陈雪鸿、赵万里、翟峰、汪宗斌、冯梅、王冲华、袁峰、
李志虎、马照亭、刘奇旭、谭儒、徐国爱、张永强、郑强、李峰、郑丽娟、王妮娜、张金池、陈中林、周光涛、
巩军、邵学彬、邓宇、徐晖、沈天珺、于润东、田野、李增欣、但波、熊开新、张渊、车业蒙、王首媛、王亮、
李冰、金添、郭忠泉、浦雨三、李雪雁、刘会议。
引 言
无证书公钥系统不依赖数字证书验证用户的标识和公钥绑定关系的真实性并且密钥生成中心不具有密
钥委托功能。扩展后的无证书公钥密码模型和安全定义允许基于标准公钥密码算法构造无证书公钥
机制。
计算得出证书拥有者的公钥。
本文件描述基于SM2算法构造的无证书公钥机制和隐式证书公钥机制。
本文件的发布机构提请注意,声明符合本文件时,可能涉及与第6章、第7章相关的ZL2017
10792638.7专利的使用。
本文件的发布机构对于该专利的真实性、有效性和范围无任何立场。
该专利持有人已向本文件的发布机构承诺,他愿意同任何申请人在合理且无歧视的条款和条件
下,就专利授权许可进行谈判。该专利持有人的声明已在本文件的发布机构备案。相关信息可以通过
以下联系方式获得:
专利持有人姓名:深圳奥联信息安全技术有限公司
地址:深圳市宝安区宝兴路海纳百川B座16楼
请注意除上述专利外,本文件的某些内容仍可能涉及专利。本文件的发布机构不承担识别专利的
责任。
基于SM2算法的无证书及
隐式证书公钥机制
1 范围
本文件规定基于SM2算法的无证书及隐式证书公钥机制,包括密钥生成与校验机制、数字签名机
制、公钥加密机制。
本文件规定的数字签名机制适用于商用密码应用中的数字签名和验证,加密机制适用于商用密码
应用中的消息加解密。本文件规定的机制特别适合带宽和计算资源受限的应用环境。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于
本文件。
GB/T 32918.1-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第1部分:总则
GB/T 32918.2-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第2部分:数字签名算法
GB/T 32918.4-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第4部分:公钥加密算法
GB/T 32918.5-2017 信息安全技术 SM2椭圆曲线公钥密码算法 第5部分:参数定义
GB/T 32905 信息安全技术 SM3密码杂凑算法
GB/T 32915 信息安全技术 二元序列随机性检测方法
3 术语和定义
GB/T 32918.1、GB/T 32918.2、GB/T 32918.4界定的以及下列术语和定义适用于本文件。
3.1
密钥生成中心 keygenerationcenter;KGC
负责选择椭圆曲线系统参数、生成主密钥并产生用户部分私钥和声明公钥的可信机构。
3.2
标识 identity
由实体无法否认的信息组成,如实体的可识别名称、电子邮箱、身份证号、电话号码、街道地址
等,可唯一确定一个实体身份的信息。
标识可进一步包括其他辅助信息,如标识用途、标识有效期等。
注:[来源:GB/T 38635.1-2020,3.1]
3.3
主密钥 masterkey
处于无证书密码系统密钥分层结构最顶层的密钥,包括系统主私钥和系统主公钥,其中系统主公钥
公开,系统主私钥由KGC秘密保存。
3.4
用户的声明公钥 user’sclaimedpublickey
用于与椭圆曲线系统参数、系统主公钥、用户的标识一起计算用户实际公钥的公开值。
注:用户的声明公钥在隐式证书中也称为公钥还原数据。
3.5
用户的实际公钥 user’srealpublickey
由椭圆曲线系统、系统主公钥、用户的标识和用户的声明公钥一起计算得出的公钥值。
注:用户实际公钥和用户私钥在指定的椭圆曲线系统参数下是一一对应的。
3.6
电子认证服务机构
对数字证书进行全生命周期管理的实体。
[来源:GM/Z4001-2013,2.145]
3.7
隐式证书 implicitcertificate
包含用户标识、公钥还原数据和签发者标识等信息但不包含证书认证机构数字签名的一种数据
结构。
3.8
包含在隐式证书中用于计算还原用户实际公钥的数据。
4 符号和缩略语
4.1 符号
下列符号适用于本文件。
A,B:使用无证书公钥密码系统的两个用户
C:公钥加密的密文
d'A:用户A的部分私钥
dA:用户A的私钥
E(Fq):Fq 上椭圆曲线E 的所有有理点(包括无穷远点O)组成的集合
e:密码杂凑算法作用于消息M 以及相关前缀数据的输出值
Fq:包含q个元素的有限域
G:椭圆曲线的一个基点,其阶为素数
Hv():消息摘要长度为v比特的密码杂凑算法
HA:关于用户A的标识、部分椭圆曲线系统参数和系统主公钥的杂凑值
ICA:用户A的隐式证书,其至少包括用户A的标识、公钥还原数据和隐式证书签发者标识
IDA:用户A的标识
KDF:密钥派生函数
ks:KGC秘密,用于派生伪随机数
ms:系统主私钥
M:待签名消息或待加密消息
M':待验证消息
modn:模n运算。例如,23mod7=2
n:基点G 的阶[n是#E(Fq)的素因子]
O:椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元
Ppub:系统主公钥
param:椭圆曲线系统参数
PA:用户A的实际公钥
WA:用户A的声明公钥
q:有限域Fq 中元素的数目
tA:KGC为用户A生成的部分私钥
UA:用户A生成的部分公钥
a,b:Fq 中的元素,它们定义Fq 上的一条椭圆曲线E
x‖y:x与y的拼接,其中x、y可以是比特串或字节串
xG,yG:点G 的x轴值和y轴值
[x]:顶函数,不小于x的最小整数。例如,[7]=7,[8.3]=9
(r,s):发送的签名
(r',s'):收到的签名
[k]P:椭圆曲线上点P 的k倍点,即,[k]P=
P+P++P
k个
,k是正整数
ENC(param,M,PA):公钥加密算法,其使用椭圆曲线系统参数param、公钥PA 对消息M 进行
加密
DEC(param,C,dA):公钥解密算法,其使用椭圆曲线系统参数param、私钥dA 解密密文C
SIGN(param,ZA,M,dA):数字签名生成算法,其使用椭圆曲线系统参数param、杂凑值ZA、私
钥dA 对消息M 进行签名并输出(r,s)
VERIFY(param,ZA,PA,M',(r',s')):数字签名验证算法,其使用椭圆曲线系统参数param、杂
凑值ZA、公钥PA 对消息M'的签名(r',s')进行验证并输
出签名正确性
4.2 缩略语
下列缩略语适用于本文件。
LHS:本地Handle服务(LocalHandleService)
本文件规定的公钥机制包括密钥生成与校验机制、数字签名机制和公钥加密机制。其中密钥生成
与校验机制包括主密钥的生成机制以及用户密钥对的生成与校验机制和流程。主密钥由 KGC生
成,包括系统主私钥和系统主公钥。用户的私钥和声明公钥由KGC和用户协同生成。用户公开其用
户标识和声明公钥,其实际公钥由椭圆曲线系统参数、系统主公钥、用户标识和用户的声明公钥根据本
文件规定的方法计算生成。
本文件规定的密钥生成机制是一种可用于生成隐式证书应用中所需密钥数据的机制。密钥数据包
括CA的密钥对、用户公钥还原数据和私钥。校验机制可用于校验隐式证书中用户公钥还原数据和私
钥的正确性。隐式证书用于分发用户标识、公钥还原数据等。
无证书以及基于隐式证书的数字签名机制和公钥加密机制分别基于标准的基础数字签名算法
(SIGN 和VERIFY)和基础公钥加密算法(ENC 和DEC)构造。本文件规定基础数字签名算法和基础
公钥加密算法为GB/T 32918.2-2016和GB/T 32918.4-2016规定的SM2椭圆曲线公钥密码算法。
本文件规定的数字签名机制可实现对消息的数字签名和验证。本文件规定的公钥加密机制可实现对消
息的加解密。规定机制的数据示例见附录A。
无证书公钥机制中的用户标识的格式可参考GM/T 0090。隐式证书的格式和编码方式以及隐式
证书内容与本文件中实体标识的对应关系不在本文件的范围内。隐式证书公钥机制和无证书公钥机制
的应用参考示例分别见附录B和附录C。
5.2 椭圆曲线系统参数
椭圆曲线系统参数包括有限域Fq 的规模q(当q=2m 时,还包括元素表示法的标识和约化多项
式);定义椭圆曲线E(Fq)的方程的两个元素a、b∈Fq、E(Fq)上的基点G=(xG,yG)(G≠O)、G 的
阶n及其他可选项(如n的余因子等)。
椭圆曲线系统参数及其验证应符合 GB/T 32918.1-2016中第5章及 GB/T 32918.5-2017的
规定。
5.3 辅助函数
5.3.1 概述
本文件规定的无证书公钥机制中涉及以下辅助函数:密码杂凑算法、密钥派生函数、随机数发生
器,使用以下基础算法:数字签名生成算法SIGN 和数字签名验证算法VERIFY、公钥加密算法ENC
和公钥解密算法DEC。
5.3.2 密码杂凑算法
本文件规定使用的密码杂凑算法遵循GB/T 32905的要求。
5.3.3 密钥派生函数
本文件规定使用的密钥派生函数遵循GB/T 32918.4-2016中第5章的要求。
5.3.4 随机数发生器
本文件规定使用的随机数发生器产生的随机数的随机性应符合GB/T 32915要求。
5.3.5 数字签名生成和验证算法
本文件规定使用的数字签名生成算法 SIGN 和数字签名验证算法 VERIFY 分别遵循
GB/T 32918.2-2016中第6章和第7章的要求。
5.3.6 公钥加密和解密算法
本文件规定使用的公钥加密算法ENC 和公钥解密算法DEC 分别遵循GB/T 32918.4-2016中第
6章和第7章的要求。
5.4 用户标识信息
用户A具有长度为entlenA 比特的标识IDA,记ENTLA 是由整数entlenA 转换而成的两个字节。
在本文件规定的密钥生成机制的KGC、数字签名机制的签名者和验证者以及公钥加密机制中的发送者
都采用密码杂凑算法求得用户A的杂凑值HA。按GB/T 32918.1-2016中4.2.6和4.2.5给出的方
法,将椭圆曲线方程参数a、b、G 的坐标xG、yG 和Ppub的坐标xPub、yPub的数据类型转换为比特串,计算
HA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xPub‖yPub)。
6 密钥生成机制及流程
6.1 主密钥生成机制
KGC使用随机数ms∈[1,n-1]作为系统主私钥,计算系统主公钥Ppub=[ms]G。
KGC应采取必要安全措施保障主私钥ms的安全性。
注:在隐式证书系统中,ms和Ppub分别是CA的签名私钥和签名公钥。
6.2 用户密钥对生成机制
用户A和KGC一起协同生成用户的密钥对:用户私钥dA 和声明公钥WA。两者应实现以下运算
步骤:
A1:用户A用随机数发生器产生随机数d'A∈[1,n-1];
A2:用户A计算UA=[d'A]G,并将标识IDA 和UA 提交KGC;
KGC1:KGC计算HA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xPub‖yPub);
KGC2:KGC用随机数发生器产生随机数w∈[1,n-1];
KGC3:KGC计算WA=[w]G+UA;
KGC4:KGC按GB/T 32918.1-2016中4.2.6和4.2.5给出的方法将WA 的坐标xWA、yWA的数据
类型转换为比特串,计算λ=H256(xWA‖yWA‖HA)modn,按 GB/T 32918.1-2016中
4.2.4和4.2.3给出的方法将λ的数据类型转换为整数;
KGC5:KGC计算tA=(w+λ*ms)modn,并将tA 和WA 安全地返回给用户A;
A3:用户A计算dA=(tA+d'A)modn;
A4:如果0< dA< n-1,则输出(dA,WA);否则返回A1。
生成加密密钥对时,KGC可使用确定性方法生成tA 和WA。生成方法见附录D。
KGC将tA 返回用户A时可使用UA 作为公钥使用加密方法ENC 加密包括tA 的数据后将密文传
递到用户A。用户A使用d'A 解密密文后还原包括tA 的数据。
注:在隐式证书系统中,步骤KGC3 生成的WA 为隐式证书中的公钥还原数据,步骤A3 生成用户私钥。
6.3 用户密钥对生成流程
用户密钥对生成流程见图1。
图1 用户密钥对生成流程
6.4 用户密钥对校验机制
为了验证生成的密钥对(dA,WA)的正确性,用户A应实现以下运算步骤:
A1:计算HA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xPub‖yPub);
A2:按GB/T 32918.1-2016中4.2.6和4.2.5给出的方法将WA 的坐标xWA、yWA的数据类型转换
为比特串,计算λ=H256(xWA‖yWA‖HA)modn,按 GB/T 32918.1-2016中4.2.4和4.2.3给
出的方法将λ的数据类型转换为整数;
A3:计算PA=WA+[λ]Ppub;
A4:计算P'A=[dA]G;
A5:检查PA=P'A 是否成立,若成立则验证通过;否则验证不通过。
注:步骤A3 生成的PA 为用户的实际公钥。
6.5 用户密钥对校验流程
用户密钥对校验流程见图2。
图2 用户密钥对校验流程
7 数字签名机制
7.1 数字签名的生成机制
设待签名的消息为M,为了获取消息M 的数字签名(r,s),作为签名者的用户A应实现以下运算
步骤。
A1:在无证书系统中,按GB/T 32918.1-2016中4.2.6和4.2.5给出的方法将WA 的坐标xWA、yWA
的数据类型转换为比特串,执行SIGN(param,HA,xWA‖yWA‖M,dA)并输出签名(r,s)。
在隐式证书系统中,执行SIGN(param,ZE,ICA‖M,dA)并输出签名(r,s),其中ZE 为
空串。
7.2 数字签名的验证机制
为了检验收到的消息M'及其数字签名(r's'),作为验证者的用户B应实现以下运算步骤:
B1:计算HA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xPub‖yPub);
B2:按GB/T 32918.1-2016中4.2.6和4.2.5给出的方法将WA 的坐标xWA、yWA的数据类型转换
为比特串,计算λ=H256(xWA‖yWA‖HA)modn,按GB/T 32918.1-2016中4.2.4和4.2.3给
出的方法将λ的数据类型转换为整数;
B3:计算PA=WA+[λ]Ppub;
B4:在无证书系统中,执行VERIFY[param,HA,xWA‖yWA‖M',PA,(r',s')]并输出结果。在隐
式证书系统中,执行VERIFY[param,ZE,ICA‖M',PA,(r',s')]并输出结果,其中ZE 为
空串。
注:SM2数字签名验证机制涉及对公钥PA 的点乘计算。若机制实现允许,步骤B3 中PA 的计算可推迟到数字签
名验证阶段并采用快速方法计算多个点乘之和。
8 公钥加密机制
8.1 加密机制
设需要发送的消息为比特串M,为了对明文M 加密并将密文发送给解密者用户A,作为加密者的
用户B应实现以下运算步骤:
B1:计算HA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xPub‖yPub);
B2:按GB/T 32918.1-2016中4.2.6和4.2.5给出的方法将WA 的坐标xWA、yWA的数据类型转换
为比特串,计算λ=H256(xWA‖yWA‖HA)modn,按GB/T 32918.1-2016中4.2.4和4.2.3给
出的方法将λ的数据类型转换为整数;
B3:计算PA=WA+[λ]Ppub;
B4:执行ENC(param,M,PA)并输出结果。
注:SM2加密机制涉及对公钥PA 的点乘计算。若机制实现允许,步骤B3 中PA 的计算可推迟到加密阶段并采用
快速方法计算多个点乘之和。
8.2 解密机制
为了对密文C 进行解密,作为解密者的用户A应实现以下运算步骤:
A1:执行DEC(param,C,dA)并输出结果。
附 录 A
(资料性)
机制数据示例
A.1 概述
本附录选用GB/T 32905给出的密码杂凑算法。
本附录选用GB/T 32918.5给出的SM2算法参数。
本附录中,所有用16进制表示的数,左边为高位,右边为低位。
本附录中,字符串采用GB/T 1988编码,消息和明文采用16进制表示。
A.2 无证书系统密钥生成机制数据示例
椭圆曲线系统参数(param):
G=(xG,yG):
主密钥:
Ppub=[ms]G=(xPub,yPub):
用户密钥对生成过程数据:
UA=[d'A]G=(xU,yU):
IDA:Alice
HA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xPub‖yPub):
WA=[w]G+UA=(xWA,yWA):
λ=H256(xWA‖yWA‖HA)modn:
dA=(tA+d'A)modn:
用户公钥:
PA=WA+[λ]Ppub=(xP,yP):
A.3 无证书系统数字签名机制数据示例
IDA:Alice
WA=(xWA,yWA):
无证书签名过程示例:
HA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xPub‖yPub):
SIGN(param,HA,xWA‖yWA‖M,O,dA)即SM2数字签名生成过程示例:
e=H256(HA‖xWA‖yWA‖M):
[k]G=(x1,y1):
(r,s):
无证书验签过程示例:
HA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xPub‖yPub):
λ=H256(xWA‖yWA‖HA)modn:
PA=WA+[λ]Ppub=(xP,yP):
VERIFY(param,HA,xWA‖yWA‖M,PA,(r',s'))即SM2数字签名验证过程示例:
e'=H256(HA‖xWA‖yWA‖M):
t=......
|