SM2密钥生成法及相关方法、计算机设备和存储介质技术

技术编号:36191452 阅读:22 留言:0更新日期:2022-12-31 21:07
本发明专利技术提供了一种SM2密钥生成法以及相应的公钥恢复方法、数字签名生成方法、数字签名验证方法、数据加密方法、数据解密方法,并提供相应的计算机设备和计算机可读存储介质,所述SM2密钥生成法包括步骤:步骤一,步骤二和/或步骤三,其中,步骤一.建立系统参数;步骤二.基于所述系统参数,生成用户签名私钥ds

【技术实现步骤摘要】
SM2密钥生成法及相关方法、计算机设备和存储介质


[0001]本专利技术涉及信息安全
,尤其涉及一种SM2密钥生成法及相关方法、计算机设备和存储介质。

技术介绍

[0002]SM2密码算法是国家密码管理局发布的一种公钥密码算法。传统的基于证书的公钥基础设施(Public Key Infrastructure,PKI)体系,是使用数字证书,由可信第三方将公钥、用户身份信息和可辨别标识关联的系统。
[0003]然而,使用基于证书的PKI体系,证书管理对用户端的计算设备有较高的要求,在车辆网、物联网等应用场景中,使用基于证书的PKI体系会给用户端的计算设备带来较大的运算开销。为此,基于标识的密码算法体系使用用户的可辨别标识作为用户公钥,如国家密码管理局发布的SM9标识密码算法,以简化证书管理。但是,SM9标识密码算法本身对计算开销要求也较高。
[0004]为克服证书管理以及SM9标识密码算法中的高计算开销,本专利技术提供一种基于用户标识和密钥生成中心(key generation center,KGC)为用户生成SM2密钥以及签名验证、加解密的方法,使用SM2公钥算法并简化证书管理带来的高计算开销。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种SM2密钥生成法及相关方法、计算机设备和存储介质,以解决上述证书管理以及SM9标识密码算法中的高计算开销的问题。
[0006]本专利技术提供的SM2密钥生成法,包括步骤:步骤一,步骤二和/或步骤三,
[0007]其中,
[0008]步骤一.建立系统参数;
[0009]步骤二.基于所述系统参数,生成用户签名私钥ds
A

[0010]步骤三.基于所述系统参数,生成用户加密私钥de
A

[0011]进一步,所述步骤一包括如下步骤:
[0012]S11.用户和密钥生成中心KGC共享SM2算法的椭圆曲线E(Fq)参数G和n,其中,E(Fq)为定义在有限域Fq上的椭圆曲线,G表示所述椭圆曲线E(Fq)上阶为n的基点,n为素数;
[0013]S12.由所述密钥生成中心KGC生成系统主私钥ms和系统主公钥P
Pub
,其中,系统主公钥P
Pub
=[ms]×
G,方括号[]的含义代表所述椭圆曲线E(Fq)上的倍点运算,所述系统主公钥P
Pub
是所述椭圆曲线E(Fq)上的点,后面各计算式中的方括号[]的含义均代表所述椭圆曲线E(Fq)上的倍点运算;
[0014]S13.由所述密钥生成中心KGC随机选择第一私钥生成符kid0∈[1,n

1]和第二私钥生成符kid1∈[1,n

1],并且kid0和kid1不相等;
[0015]S14.所述密钥生成中心KGC公开所述系统主公钥P
Pub
、第一私钥生成符kid0和第二私钥生成符kid1。
[0016]进一步,所述步骤二包括如下步骤:
[0017]S21.所述用户产生第一随机数r
A
∈[1,n

1],计算U
A
=[r
A

G;
[0018]S22.所述用户将所述U
A
和所述用户的可辨别标识ID
A
提交给所述密钥生成中心KGC;;
[0019]S23.所述密钥生成中心KGC使用所述系统主私钥ms计算第一部分密钥值t
A
和第一公钥恢复数据W
A
,并将所述第一部分密钥值t
A
和第一公钥恢复数据W
A
发送给所述用户,并向所述用户返回第一密文Cipher1或第二密文Cipher2;
[0020]S24.所述用户收到所述第一密文Cipher1或第二密文Cipher2,解密后得到所述第一部分密钥值t
A
和所述第一公钥恢复数据W
A
,计算H
A
=H
256
(ENTL
A
‖ID
A
‖x
Pub
‖y
Pub
)和h
A
=H
256
(x
W
‖y
W
‖H
A
),计算所述用户签名私钥ds
A
=(h
A
×
t
A
+r
A
)mod n,保存用户签名私钥ds
A
和第一公钥恢复数据W
A
,其中,H
256
为输出为256比特的杂凑函数;ENTL
A
为2个字节表示的所述可辨别标识ID
A
的字节长度;‖表示字节串的拼接;x
Pub
,y
Pub
为所述系统主公钥P
Pub
的坐标;x
W
,y
W
为所述第一公钥恢复数据W
A
的坐标;x mod y代表x对y的求余运算。
[0021]进一步,所述步骤S23中,所述计算包括如下步骤:
[0022]A1.计算所述H
A
=H
256
(ENTL
A
‖ID
A
‖x
Pub
‖y
Pub
),并转换为字节串;
[0023]A2.生成第二随机数w∈[1,n

1];
[0024]A3.计算所述第一公钥恢复数据W
A
=[w]×
G+U
A
+[kid0]×
P
pub

[0025]A4.计算所述h
A
=H
256
(x
W
‖y
W
‖H
A
),并转换为字节串;
[0026]A5.将所述h
A
转换为整数,如果转换为整数后为0,则转至所述步骤A2;
[0027]A6.计算所述第一部分密钥值t
A
=(h
A
‑1×
(w+kid0×
ms)+kid0×
ms)modn,然后所述密钥生成中心KGC将所述第一部分密钥值t
A
和所述第一公钥恢复数据W
A
发送给所述用户,其中,包括发送方法B或发送方法C,
[0028]所述发送方法B包括如下步骤:
[0029]B1.计算K=[ms]×
U
A
,第一密钥k=KDF(x
K
||y
K
,128),其中,x
K
,y
K
为K的坐标,KDF是本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.SM2密钥生成法,其特征在于,包括步骤:步骤一,步骤二和/或步骤三,其中,步骤一.建立系统参数;步骤二.基于所述系统参数,生成用户签名私钥ds
A
;步骤三.基于所述系统参数,生成用户加密私钥de
A
。2.根据权利要求1所述的SM2密钥生成法,其特征在于,所述步骤一包括如下步骤:S11.用户和密钥生成中心KGC共享SM2算法的椭圆曲线E(Fq)参数G和n,其中,E(Fq)为定义在有限域Fq上的椭圆曲线,G表示所述椭圆曲线E(Fq)上阶为n的基点,n为素数;S12.由所述密钥生成中心KGC生成系统主私钥ms和系统主公钥P
Pub
,其中,系统主公钥P
Pub
=[ms]
×
G,方括号[]的含义代表所述椭圆曲线E(Fq)上的倍点运算,所述系统主公钥P
Pub
是所述椭圆曲线E(Fq)上的点,后面各计算式中的方括号[]的含义均代表所述椭圆曲线E(Fq)上的倍点运算;S13.由所述密钥生成中心KGC随机选择第一私钥生成符kid0∈[1,n

1]和第二私钥生成符kid1∈[1,n

1],并且kid0和kid1不相等;S14.所述密钥生成中心KGC公开所述系统主公钥P
Pub
、第一私钥生成符kid0和第二私钥生成符kid1。3.根据权利要求2所述的SM2密钥生成法,其特征在于,所述步骤二包括如下步骤:S21.所述用户产生第一随机数r
A
∈[1,n

1],计算U
A
=[r
A
]
×
G;S22.所述用户将所述U
A
和所述用户的可辨别标识ID
A
提交给所述密钥生成中心KGC;;S23.所述密钥生成中心KGC使用所述系统主私钥ms计算第一部分密钥值t
A
和第一公钥恢复数据W
A
,并将所述第一部分密钥值t
A
和第一公钥恢复数据W
A
发送给所述用户,并向所述用户返回第一密文Cipher1或第二密文Cipher2;S24.所述用户收到所述第一密文Cipher1或第二密文Cipher2,解密后得到所述第一部分密钥值t
A
和所述第一公钥恢复数据W
A
,计算H
A
=H
256
(ENTL
A
‖ID
A
‖x
Pub
‖y
Pub
)和h
A
=H
256
(x
W
‖y
W
‖H
A
),计算所述用户签名私钥ds
A
=(h
A
×
t
A
+r
A
)mod n,保存用户签名私钥ds
A
和第一公钥恢复数据W
A
,其中,H
256
为输出为256比特的杂凑函数;ENTL
A
为2个字节表示的所述可辨别标识ID
A
的字节长度;‖表示字节串的拼接;x
Pub
,y
Pub
为所述系统主公钥P
Pub
的坐标;x
W
,y
W
为所述第一公钥恢复数据W
A
的坐标;x mod y代表x对y的求余运算。4.根据权利要求3所述的SM2密钥生成法,其特征在于,所述步骤S23中,所述计算包括如下步骤:A1.计算所述H
A
=H
256
(ENTL
A
‖ID
A
‖x
Pub
‖y
Pub
),并转换为字节串;A2.生成第二随机数w∈[1,n

1];A3.计算所述第一公钥恢复数据W
A
=[w]
×
G+U
A
+[kid0]
×
P
pub
;A4.计算所述h
A
=H
256
(x
W
‖y
W
‖H
A
),并转换为字节串;A5.将所述h
A
转换为整数,如果转换为整数后为0,则转至所述步骤A2;A6.计算所述第一部分密钥值t
A
=(h
A
‑1×
(w+kid0×
ms)+kid0×
ms)mod n,然后所述密钥生成中心KGC将所述第一部分密钥值t
A
和所述第一公钥恢复数据W
A
发送给所述用户,其中,包括发送方法B或发送方法C,所述发送方法B包括如下步骤:
B1.计算K=[ms]
×
U
A
,第一密钥k=KDF(x
K
||y
K
,128),其中,x
K
,y
K
为K的坐标,KDF是密钥派生函数,所述第一密钥k是通过所述密钥派生函数生成的128比特的字节串;B2.将所述第一部分密钥值t
A
和第一公钥恢复数据W
A
的坐标x
W
、y
W
按照转换为字节串;B3.使用所述第一密钥k和SM4密码算法对明文t
A
||x
W
||y
W
进行加密得到所述第一密文Cipher1=SM4_ENC(k,t
A
||x
W
||y
W
),并将所述第一密文Cipher1发送给所述用户,其中,SM4_ENC(k,t
A
||x
W
||y
W
)表示使用SM4加密算法和128比特的所述第一密钥k,对所述明文t
A
||x
W
||y
W
进行加密计算并输出密文;所述发送方法C包括如下步骤:C1.将所述第一部分密钥值t
A
和第一公钥恢复数据W
A
的坐标x
W
、y
W
转换为字节串;C2.使用所述U
A
作为第三公钥,并使用SM2加密算法对明文t
A
||x
W
||y
W
进行加密后得到所述第二密文Cipher2=SM2_ENC(U
A
,t
A
||x
W
||y
W
),并将所述第二密文Cipher2发送给所述用户,其中,SM2_ENC(U
A
,t
A
||x
W
||y
W
)表示使用SM2加密算法和所述第三公钥U
A
,对所述明文t
A
||x
W
||y
W
进行加密计算并输出密文,所述步骤S24中,在进行所述解密时,若所述步骤S23中使用所述发送方法B,则解密方法为方法D,所述方法D包括如下步骤:D1.计算K

=[r
A
]
×
P
Pub
,第二密钥k

=KDF(x
K

||y
K

,128),其中,x
K

,y
K

为K

的坐标,所述第二密钥k

是通过所述密钥派生函数生成的128比特的字节串;D2.使用所述第二密钥k

和SM4密码算法对所述第一密文Cipher1进行解密得到明文:t
A
||x
W
||y
W
=SM4_DEC(k

,Cipher1),其中,SM4_DEC(k

,Cipher1)表示使用所述SM4解密算法和128比特的所述第二密钥k

,对所述第一密文Cipher1进行解密计算并输出明文;D3.将所述第一部分密钥值t
A
和第一公钥恢复数据W
A
的坐标x
W
、y
W
转换为整数,从而解密得到所述第一部分密钥值t
A
和所述第一公钥恢复数据W
A
;若所述步骤S23中使用所述发送方法C,则解密方法为方法E,所述方法E包括如下步骤:E1.使用所述第一随机数r
A
作为第一私钥,并使用SM2解密算法对所述第二密文Cipher2进行解密后得到明文:t
A
||x
W
||y
W
=SM2_DEC(r
A
,Cipher2);其中,SM2_DEC(r
A
,Cipher2)表示使用所述SM2解密算法和第一私钥r
A
,对所述第二密文Cipher2进行解密计算并输出明文;E2.将所述第一部分密钥值t
A
和第一公钥恢复数据W
A
的坐标x
W
、y
W
转换为整数,从而解密得到所述第一部分密钥值t
A
和所述第一公钥恢复数据W
A
。5.根据权利要求4所述的SM2密钥生成法,其特征在于,所述步骤三包括如下步骤:S31.所述用户产生一个第三随机数rr
A
∈[1,n

1],计算UU
A
=[rr
A
]
×
G;S32.所述用户将所述UU
A
和所述用户的可辨别标识ID
A
提交给所述密钥生成中心KGC;S33.所述密钥生成中心KGC使用所述系统主私钥ms计算第二部分签名密钥值tt
A
和第二公钥恢复数据WW
A
,并将所述第二部分签名密钥值tt
A
和第二公钥恢复数据WW
A
发送给所述用户,并向所述用户返回第三密文Cipher3或第四密文Cipher4;S34.用户收到所述第三密文Cipher3或第四密文Cipher4,解密后得到所述第二部分签名密钥值tt
A
和第二公钥恢复数据WW
A
,计算hh
A
=H
256
(x
WW
‖y
WW
‖H
A
),再计算所述用户加密私钥de
A<...

【专利技术属性】
技术研发人员:封维端袁峰张立圆
申请(专利权)人:北京无字天书科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1