密钥生成方法及相关方法、计算机设备和存储介质与流程

文档序号:32756203发布日期:2022-12-31 03:43阅读:109来源:国知局
密钥生成方法及相关方法、计算机设备和存储介质与流程

1.本发明属于数据安全技术领域,特别涉及一种sm9用户的签名密钥的密钥生成方法及相关方法、计算机设备和存储介质。


背景技术:

2.sm9标识密码算法是国家密码管理局于2016年发布的一种基于标识的密码算法。sm9标识密码算法使用用户标识作为用户签名的公钥,用户私钥由密钥生成中心(kgc)根据用户标识和kgc生成的主私钥生成。由于使用用户标识作为用户签名公钥,与传统的基于证书的公钥基础设施(public key infrastructure,pki)体系相比,sm9标识密码算法在证书管理环节得到了一定的简化。
3.sm9标识密码算法包括数字签名、密钥交换、密钥封装以及加解密算法。其中,用户签名密钥由kgc根据用户标识和kgc的签名主私钥生成。因此kgc承担了整个系统中用户签名密钥的生成。上述技术的问题在于,用户对用户签名密钥的生成无法进行控制,进而影响用户签名密钥的安全性。
4.尽管通过使用双kgc的方式,由用户控制用户签名密钥的生成,从而可解决了单kgc下,该kgc掌握了所有用户的签名密钥的安全性的问题。但是在云环境、移动互联网环境下,用户在移动设备上要想安全存储和使用用户签名密钥,需要使用usbkey等硬件设备,给用户的使用带来不便。


技术实现要素:

5.为了解决上述问题,本发明提供一种密钥生成方法。
6.本发明提供的密钥生成方法,包括如下步骤:
7.一、生成系统参数;
8.二、基于所述系统参数,由第一通信方和第二通信方协同工作生成用户签名私钥dsa、用户签名主公钥并加密下发用户加密私钥dea。
9.进一步,
10.所述步骤一包括如下步骤:
11.s1.通过第一密钥生成中心kgc1生成第一系统参数,通过通过第二密钥生成中心kgc2生成第二系统参数,
12.其中,
13.所述第一系统参数包括第一签名主私钥ks1和第一签名主公钥p
pubs1
,以及第一加密主私钥ke1和第一加密主公钥p
pube1

14.所述第一签名主私钥ks1为随机整数,且ks1∈[1,n-1],其中n为素数,设群g2是阶为n的加法循环群,则所述第一签名主公钥p
pubs1
为群g2中的元素,且满足
[0015]
p
pubs1
=[ks1]
×
p2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1),
[0016]
所述第一加密主私钥ke1为随机整数,且ke1∈[1,n-1],设群g1是阶为n的加法循环
群,则所述第一加密主公钥p
pube1
为群g1中的元素,且满足
[0017]
p
pube1
=[ke1]
×
p1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2),
[0018]
式(1)和(2)中,p1为群g1的生成元,p2为群g2的生成元,方括号[]的含义代表椭圆曲线上的倍点运算,后面各等式中方括号[]的含义均与所述式(1)中方括号[]的含义相同,
[0019]
所述第二系统参数包括第二签名主私钥ks2和第二签名主公钥p
pubs2
,所述第二签名主私钥ks2为随机整数,且ks2∈[1,n-1],且满足
[0020]
p
pubs2
=[ks2]
×
p2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3);
[0021]
s2.通过所述第一密钥生成中心kgc1和第二密钥生成中心kgc2分别计算得到公共主密钥p
pubs

[0022]
其中
[0023]
通过所述第一密钥生成中心kgc1计算p
pubs
=[ks1]
×
p
pubs2

[0024]
通过所述第二密钥生成中心kgc2计算p
pubs
=[ks2]
×
p
pubs1

[0025]
s3.选择公共参数α,所述公共参数α为模n的二次非剩余;
[0026]
s4.将所述第一签名主公钥p
pubs1
,第一加密主公钥p
pube1
,第二签名主公钥p
pubs2
,公共主密钥p
pubs
和公共参数α公开发布,
[0027]
所述步骤二包括:计算得到
[0028]
h1=h1(ida||hid,n)
[0029]
其中,h1(ida||hid,n)为第一密码函数,ida为用户标识,||表示将数据的字节串合并,hid为函数识别符,
[0030]
若h1是模n的平方元,采取方法aa生成第一部分用户签名私钥ds
a1
、第二部分用户签名私钥ds
a2
、第一用户签名主公钥p
pubsa
并加密下发所述用户加密私钥dea,并且所述用户加密私钥dea被分拆为第一部分用户加密私钥de
a1
、第二部分用户加密私钥de
a2
,所述第一用户签名主公钥p
pubsa
即为所述用户签名主公钥;
[0031]
若h1不是模n的平方元,采取方法bb生成第三部分用户签名私钥ds
aa1
、第四部分用户签名私钥ds
aa2
、第二用户签名主公钥p
pubsaa
并加密下发所述用户加密私钥dea,并且所述用户加密私钥dea被分拆为第三部分用户加密私钥de
aa1
、第四部分用户加密私钥de
aa2
,所述第二用户签名主公钥p
pubsaa
即为所述用户签名主公钥。
[0032]
进一步,
[0033]
所述方法aa中,h1是模n的平方元,即h1≡(h2)mod n,≡为同余号,其中,x mod y代表x对y的求余运算,且设h是h2的两个平方根中较大的一个,所述方法aa包括步骤:
[0034]
a1、所述第一通信方向所述第二通信方发送协同生成密钥申请;
[0035]
a2、所述第二通信方生成256比特的第一随机数ds
a2
,ds
a2
∈[1,n-1],由p
’1=[(ds
a2
)-1
mod n]
×
p1计算得到第一数据p
’1,向所述第一通信方发送所述第一数据p
’1,所述第二通信方保存所述第一随机数ds
a2
作为所述第二通信方的第二部分用户签名私钥;
[0036]
a3、所述第一通信方生成256比特的第二随机数ra,ra∈[1,n-1],由q=[ra]
×
p
’1计算得到第二数据q,所述第一通信方向所述第一密钥生成中心kgc1发送所述第一数据p
’1、第二数据q和用户标识ida;
[0037]
a4、所述第一密钥生成中心kgc1接收到所述第一数据p
’1、第二数据q和用户标识
ida后,计算第一用户签名密钥生成数据和所述用户加密私钥dea,所述第一用户签名密钥生成数据包括s和t;
[0038]
a5、所述第一通信方向所述第二密钥生成中心kgc2发送所述第一用户签名密钥生成数据中的t,所述第二密钥生成中心kgc2由
[0039]
r=[(h+ks2)-1
mod n]
×
t
[0040]
计算得到r,并将r发送给所述第一通信方;
[0041]
a6、所述第一通信方由
[0042]
ds
a1
=p’1-[(r
a-1
×
h1×
s)mod n]
×r[0043]
计算得到所述第一通信方的第一部分用户签名私钥ds
a1

[0044]
a7、所述第一通信方和第二通信方分别由
[0045]
p
pubsa
=[h]
×
(p
pubs1
+p
pubs2
)+p
pubs
[0046]
计算得到所述第一用户签名主公钥p
pubsa
,所述第一用户签名主公钥p
pubsa
即为所述用户签名主公钥;
[0047]
a8、所述第一通信方随机生成第二随机整数d1∈[1,n-1],并计算d1=[d1]
×
p2和de
a1
=d1+n
dea
,然后将第一私钥坐标加密数据e和d1发送给所述第二通信方,保存de
a1
作为所述第一通信方的第一部分用户加密私钥;
[0048]
a9、所述第二通信方利用
[0049]
s’=[(ds
a2
)-1
mod n]
×
p
pube1
[0050]
计算得到s’,设s’的坐标为(x
s’,y
s’),将x
s’,y
s’转换为字节串,并计算k’=kdf(x
s’||y
s’,128),其中,kdf是密钥派生函数,k’是128比特的字节串;
[0051]
a10、所述第二通信方解密所述第一私钥坐标加密数据e得到字节串:x
de’a
||y
de’a
=sm4_dec(k’,e),将所述字节串x
de’a
||y
de’a
转换为域元素得到噪声化第一用户加密私钥de’a
,其中,sm4_dec(k’,e)表示使用sm4解密算法和128比特的密钥k’,对密文明文e进行解密计算并输出明文;
[0052]
a11、第二通信方利用
[0053]
de
a2
=de’a-d1[0054]
计算得到所述第二通信方的第二部分用户加密私钥de
a2
并保存。
[0055]
进一步,
[0056]
所述步骤a4中,所述计算包括如下步骤:
[0057]
a41、所述第一密钥生成中心kgc1生成256比特的第一随机整数r,r∈[1,n-1],由
[0058]
s=(r
×
(h+ks1)-1
)mod n
[0059]
和t=[r-1
mod n]
×q[0060]
计算得到所述第一用户签名密钥生成数据s和t;
[0061]
a42、所述第一密钥生成中心kgc1使用所述第一加密主私钥ke1和用户标识ida,利用
[0062]
t1=h1(ida||hid,n)+ke1,
[0063]
t2=(ke1×
t
1-1
)mod n,
[0064]
dea=[t2]
×
p2,
[0065]
计算得到所述用户加密私钥dea;
[0066]
a43、所述第一密钥生成中心kgc1生成g2上的第一随机点n
dea
,且n
dea
不等于所述用户加密私钥dea,并计算所述噪声化第一用户加密私钥de'a:
[0067]
de'a=de
a-n
dea

[0068]
a44、所述第一密钥生成中心kgc1计算s=[ke1]
×
p
’1,设s的坐标为(xs,ys),将xs,ys转换为字节串,并计算k=kdf(xs||ys,128),其中kdf是所述密钥派生函数,k是128比特的字节串;
[0069]
a45、设所述噪声化第一用户加密私钥de'a的坐标为(x
de'a
,y
de'a
),所述第一密钥生成中心kgc1将x
de'a
,y
de'a
转换为第一坐标字节串,并加密所述第一坐标字节串得到所述第一私钥坐标加密数据e:
[0070]
e=sm4_enc(k,x
de'a
||y
de'a
),
[0071]
其中,sm4_enc(k,x
de'a
||y
de'a
)表示使用sm4加密算法和128比特的密钥k,对明文x
de'a
||y
de'a
进行加密计算并输出密文;
[0072]
a46、所述第一密钥生成中心kgc1将所述第一用户签名密钥生成数据s和t、第一私钥坐标加密数据e和第一随机点n
dea
发送给所述第一通信方,
[0073]
所述第一部分用户签名私钥ds
a1
和第二部分用户签名私钥ds
a2
,满足关系:
[0074]
[ds
a2
]
×
ds
a1
=dsa,
[0075]
所述第一部分用户加密私钥de
a1
和第二部分用户加密私钥de
a2
满足关系:
[0076]
dea=de
a1
+de
a2

[0077]
进一步,
[0078]
所述方法bb中,h1是模n的非平方元,则αh1是模n的平方元,即αh1≡(hh2)mod n,且设hh是hh2的两个平方根中较大的一个,所述方法bb包括步骤:
[0079]
b1、所述第一通信方向第二通信方发送协同生成密钥申请;
[0080]
b2、所述第二通信方生成256比特的第三随机数ds
aa2
,ds
aa2
∈[1,n-1],由pp
’1=[(ds
aa2
)-1
mod n]
×
p1计算得到第三数据pp
’1,并向所述第一通信方发送所述第三数据pp
’1,所述第二通信方保存所述第三随机数ds
aa2
作为所述第二通信方的第四部分用户签名私钥;
[0081]
b3、所述第一通信方生成256比特的第四随机数rra,rra∈[1,n-1],由qq=[rra]
×
pp
’1计算得到第四数据qq,所述第一通信方向所述第一密钥生成中心kgc1发送所述第三数据pp
’1、第四数据qq和用户标识ida;
[0082]
b4、所述第一密钥生成中心kgc1接收到所述第三数据pp
’1、第四数据qq和用户标识ida后,计算第二用户签名密钥生成数据(ss和tt)和用户加密私钥dea,所述第二用户签名密钥生成数据包括ss和tt;
[0083]
b5、所述第一通信方向所述第二密钥生成中心kgc2发送所述第二用户签名密钥生成数据中的tt,所述第二密钥生成中心kgc2由
[0084]
rr=[(hh+ks2)-1
mod n]
×
tt
[0085]
计算得到rr,并将rr发送给所述第一通信方;
[0086]
b6、所述第一通信方由
[0087]
ds
aa1
=pp’1-[(rr
a-1
×
h1×
α
×
ss)mod n]
×
rr
[0088]
计算得到所述第一通信方的第三部分用户签名私钥ds
aa1

[0089]
b7、所述第一通信方和第二通信方分别由
[0090]
p
pubsaa
=[(α-1
)mod n]
×
([hh]
×
(p
pubs1
+p
pubs2
)+p
pubs
)
[0091]
计算得到所述第二用户签名主公钥p
pubsaa
,所述第二用户签名主公钥p
pubsaa
即为所述用户签名主公钥;
[0092]
b8、所述第一通信方生成第四随机整数dd1∈[1,n-1],并计算dd1=[dd1]
×
p2和de
aa1
=dd1+nn
dea
,将第二私钥坐标加密数据ee和dd1发送给所述第二通信方,保存de
aa1
作为所述第一通信方的第三部分用户加密私钥;
[0093]
b9、所述第二通信方利用
[0094]
ss’=[(ds
aa2
)-1
mod n]
×
p
pube1
[0095]
计算得到ss’,设ss’的坐标为(x
ss’,y
ss’),将x
ss’,y
ss’转换为字节串,并计算kk’=kdf(x
ss’||y
ss’,128),其中kdf是密钥派生函数,kk’是128比特的字节串;
[0096]
b10、所述第二通信方解密所述第二私钥坐标加密数据ee得到字节串:x
de’aa
||y
de’aa
=sm4_dec(kk’,ee),将所述字节串x
de’aa
||y
de’aa
转换为域元素得到噪声化第二用户加密私钥de’aa
,其中,sm4_dec(kk’,ee)表示使用sm4解密算法和128比特的密钥kk’,对密文明文ee进行解密计算并输出明文;
[0097]
b11、所述第二通信方利用
[0098]
de
aa2
=de’aa-dd1[0099]
计算得到所述第二通信方的第四部分用户加密私钥de
aa2
并保存。
[0100]
进一步,
[0101]
所述步骤b4中,所述计算包括如下步骤:
[0102]
b41、所述第一密钥生成中心kgc1生成256比特的第三随机整数rr,rr∈[1,n-1],由
[0103]
ss=(rr
×
(hh+ks1)-1
)mod n
[0104]
和tt=[rr-1
mod n]
×
qq
[0105]
计算得到所述第二用户签名密钥生成数据ss和tt;
[0106]
b42、所述第一密钥生成中心kgc1使用所述第一加密主私钥ke1和用户标识ida,利用
[0107]
t1=h1(ida||hid,n)+ke1,
[0108]
t2=(ke1×
t
1-1
)mod n,
[0109]
dea=[t2]
×
p2,
[0110]
计算得到所述用户加密私钥dea,
[0111]
b43、所述第一密钥生成中心kgc1生成g2上的第二随机点nn
dea
,且nn
dea
不等于所述用户加密私钥dea,并计算噪声化第二用户加密私钥de'
aa
:de'
aa
=de
a-nn
dea

[0112]
b44、所述第一密钥生成中心kgc1计算ss=[ke1]
×
pp
’1,设ss的坐标为(x
ss
,y
ss
),将x
ss
,y
ss
转换为字节串,并计算kk=kdf(x
ss
||y
ss
,128),其中kdf是所述密钥派生函数,kk是128比特的字节串;
[0113]
b45、设所述噪声化第二用户加密私钥de'
aa
的坐标为(x
de'aa
,y
de'aa
),所述第一密钥生成中心kgc1将x
de'aa
,y
de'aa
转换为第二坐标字节串,并加密所述第二坐标字节串得到所述第二私钥坐标加密数据ee:
[0114]
ee=sm4_enc(kk,x
de'aa
||y
de'aa
),
[0115]
其中,sm4_enc(kk,x
de'aa
||y
de'aa
)表示使用sm4加密算法和128比特的密钥kk,对明文x
de'aa
||y
de'aa
进行加密计算并输出密文;
[0116]
b46、所述第一密钥生成中心kgc1将所述第二用户签名密钥生成数据ss和tt、第二私钥坐标加密数据ee和第二随机点nn
dea
发送给所述第一通信方,
[0117]
所述第三部分用户签名私钥ds
aa1
和第四部分用户签名私钥ds
aa2
满足关系:
[0118]
[ds
aa2
]
×
ds
aa1
=dsa,
[0119]
所述第三部分用户加密私钥de
aa1
和第四部分用户加密私钥de
aa2
满足关系:
[0120]
dea=de
aa1
+de
aa2

[0121]
本发明还提供一种数字签名计算方法,其中,
[0122]
设用户标识为ida,且设待签名消息原文为m,利用h1=h1(ida||hid,n)计算得到h1,其中,h1是第一密码函数,||表示将数据的字节串合并,hid为函数识别符,n为素数,
[0123]
若h1是模n的平方元,采用上述的密钥生成方法得到第一部分用户签名私钥ds
a1
和第二部分用户签名私钥ds
a2
,然后进行方法cc,
[0124]

[0125]
若h1不是模n的平方元,采用上述的密钥生成方法得到第三部分用户签名私钥ds
aa1
和第四部分用户签名私钥ds
aa2
,然后进行方法dd,
[0126]
所述方法cc包括如下步骤:
[0127]
cc1、第一通信方生成256比特的第五随机整数k1,k1∈[1,n-1],计算u=e(p1,p
pubsa
)
k1
,并将所述u、待签名消息原文m和用户标识ida发送给第二通信方,其中,设g1是阶为n的加法循环群、g2是阶为n的加法循环群、g
t
是阶为n的乘法循环群,则e是从g1×
g2到g
t
的双线性对,p1是群g1的生成元,p
pubsa
为第一用户签名主公钥;
[0128]
cc2、所述第二通信方生成256比特的第六随机整数k2、第七随机整数k3,其中k2∈[1,n-1],k3∈[1,n-1],然后计算w=u
k2
×
e(p1,p
pubsa
)
k3

[0129]
cc3、所述第二通信方计算hhh=h2(m||w,n),s1=(k2
×
ds
a2
)mod n,s2=((k3-hhh)
×
ds
a2
)mod n,然后,所述第二通信方将hhh,s1和s2发送给所述第一通信方,其中,h2是第二密码函数,x mod y代表x对y的求余运算;
[0130]
cc4、所述第一通信方利用
[0131]
s=[k1
×
s1+s2]
×
ds
a1
[0132]
计算得到s,输出数字签名(hhh,s);
[0133]
所述方法dd包括如下步骤:
[0134]
dd1、第一通信方生成256比特的第八随机整数kk1,kk1∈[1,n-1],计算uu=e(p1,p
pubsaa
)
kk1
,并将所述uu、待签名消息原文m和用户标识ida发送给第二通信方,其中,设g1是阶为n的加法循环群、g2是阶为n的加法循环群、g
t
是阶为n的乘法循环群,则e是从g1×
g2到g
t
的双线性对,p1是群g1的生成元,p
pubsaa
为第二用户签名主公钥;
[0135]
dd2、所述第二通信方生成256比特的第九随机整数kk2、第十随机整数kk3,其中kk2∈[1,n-1],kk3∈[1,n-1],然后计算ww=uu
kk2
×
e(p1,p
pubsaa
)
kk3

[0136]
dd3、所述第二通信方计算hhhh=h2(m||ww,n),ss1=(kk2
×
ds
aa2
)mod n,ss2=((kk3-hhhh)
×
ds
aa2
)mod n,然后,所述第二通信方将hhhh,ss1和ss2发送给所述第一通信方,其中,h2是第二密码函数,x mod y代表x对y的求余运算;
[0137]
dd4、所述第一通信方利用
[0138]
ss=[kk1
×
ss1+ss2]
×
ds
aa1
[0139]
计算得到ss,输出数字签名(hhhh,ss)。
[0140]
本发明还提供一种数字签名验证方法,其中,
[0141]
利用h1=h1(ida||hid,n)计算得到h1,h1是第一密码函数,||表示将数据的字节串合并,hid为函数识别符,n为素数,
[0142]
若h1是模n的平方元,采用上述的密钥生成方法得到第一用户签名主公钥p
pubsa
,然后由第一通信方使用所述第一用户签名主公钥p
pubsa
、函数识别符hid,用户标识ida,消息m和数字签名sig为输入参数,进行数字签名验证,
[0143]

[0144]
若h1不是模n的平方元,采用上述的密钥生成方法得到第二用户签名主公钥p
pubsaa
,然后由所述第一通信方使用所述第二用户签名主公钥p
pubsaa
、函数识别符hid,用户标识ida,消息m和数字签名sig为输入参数,进行数字签名验证。
[0145]
本发明还提供一种密钥封装方法,其中采用上述的密钥生成方法进行密钥封装,包括:封装者使用用户标识idb和第一密钥生成中心kgc1的第一加密主公钥p
pube1
进行的密钥封装计算。
[0146]
本发明还提供一种密钥解封装方法,其中采用上述的密钥生成方法进行密钥解封装,其中,接收者aaa收到密钥k的封装密文ccc后,所述接收者aaa作为第一通信方使用第一部分用户加密私钥de
a1
,第二通信方使用第二部分用户加密私钥de
a2
进行协同计算,包括:
[0147]
gg1、所述第一通信方将所述封装密文ccc发送给所述第二通信方;
[0148]
gg2、所述第二通信方验证ccc是g1上的点,g1是阶为n的加法循环群,n为素数;
[0149]
gg3、所述第二通信方计算w
’2=e(ccc,de
a2
),设g2是阶为n的加法循环群、g
t
是阶为n的乘法循环群,则e是从g1×
g2到g
t
的双线性对;
[0150]
gg4、所述第二通信方将w
’2发送给所述第一通信方;
[0151]
gg5、所述第一通信方计算w’=e(ccc,de
a1
)
×w’2;
[0152]
gg6、所述第一通信方计算出封装的密钥k’=kdf(ccc||w’||id
aaa
,klen),id
aaa
为所述接收者aaa的用户标识,kdf是密钥派生函数,||表示将数据的字节串合并,klen为所述密钥k的封装比特长度。
[0153]
本发明还提供一种数据加密方法,其中采用上述的密钥生成方法进行密钥封装,包括:加密者使用数据的解密者bbb的用户标识idb和第一密钥生成中心kgc1的第一加密主公钥p
pube1
对明文m进行加密计算。
[0154]
本发明还提供一种数据解密方法,其种采用上述的密钥生成方法进行数据解密,其中,数据的解密者即接收者a
132
收到密文c
132
后,所述接收者a
132
作为第一通信方使用第一部分用户加密私钥de
a1
,第二通信方使用第二部分用户加密私钥de
a2
进行协同计算,包括:
[0155]
hh1、所述第一通信方将所述密文c
132
发送给所述第二通信方;
[0156]
hh2、所述第二通信方验证c
132
是g1上的点,g1是阶为n的加法循环群,n为素数;
[0157]
hh3、第二通信方计算ww
’2=e(c
132
,de
a2
),设g2是阶为n的加法循环群、g
t
是阶为n的乘法循环群,则e是从g1×
g2到g
t
的双线性对;
[0158]
hh4、所述第二通信方将ww
’2发送给所述第一通信方;
[0159]
hh5、所述第一通信方计算ww’=e(c
132
,de
a1
)
×
ww
’2;
[0160]
hh6、所述第一通信方计算得到明文m’。
[0161]
本发明还提供一种计算机设备,包括储存器、第一处理器及储存在所述存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一计算机程序被所述第一处理器执行时实现下列方法的一种或几种:
[0162]
上述的密钥生成方法;
[0163]
上述的数字签名计算方法;
[0164]
上述的数字签名验证方法;
[0165]
上述的密钥封装方法;
[0166]
上述的密钥解封装方法;
[0167]
上述的数据加密方法;
[0168]
上述的数据解密方法。
[0169]
本发明还提供一种计算机可读存储介质,用于储存第二计算机程序,所述第二计算机程序可被至少一个第二处理器所执行,以使所述至少一个第二处理器执行下列方法的一种或几种:
[0170]
上述的密钥生成方法;
[0171]
上述的数字签名计算方法;
[0172]
上述的数字签名验证方法;
[0173]
上述的密钥封装方法;
[0174]
上述的密钥解封装方法;
[0175]
上述的数据加密方法;
[0176]
上述的数据解密方法。
[0177]
本发明提供的密钥生成方法为签名密钥协同生成方法,是通过第一通信方和第二通信方协同计算来实现。其中,第一通信方和第二通信方向第一密钥生成中心和第二密钥生成中心申请生成用户签名密钥后,第一通信方和第二通信方分别生成并存储部分用户签名密钥。通过本发明可使得上述两个通信方协同生成签名密钥及计算数字签名;从而实现了移动终端用户在不需要使用usbkey等硬件设备的情况下,对用户签名密钥的安全存储和使用。本发明生成签名密钥时,第一密钥生成中心、第二密钥生成中心、第一通信方、第二通信方中任何一方都不知晓用户的签名私钥,且第一通信方、第二通信方中任何一方都不知晓用户的加密私钥。从而保证了用户签名密钥的密钥委托问题,也保证了用户签名密钥和加密私钥在移动设备上的安全保护和使用。因此,本发明解决了在双kgc下,sm9签名私钥在云计算、移动互联网等环境下移动终端对用户签名密钥的安全存储和使用管理。
[0178]
采用本发明提供的密钥生成方法,在用户加密私钥的下发过程中,第一通信方和第二通信方分别生成对应的部分用户加密私钥。在此基础上,第一通信方和第二通信方可通过协同计算完成密钥解封装和数据解密计算。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
[0179]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0180]
图1示出了根据本发明实施例的密钥生成方法的数据传递关系示意图。
具体实施方式
[0181]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0182]
除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术;本技术的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。
[0183]
下面参照附图来详细说明本发明提供的sm9用户的密钥生成方法。图1为本发明提供的密钥生成方法的数据传递关系示意图。参见图1,所述密钥生成方法包括以下步骤:
[0184]
一、生成系统参数;
[0185]
s1.通过双密钥生成中心kgc1和kgc2分别生成系统参数。
[0186]
通过第一密钥生成中心kgc1生成第一系统参数,所述第一系统参数包括第一签名主私钥ks1和第一签名主公钥p
pubs1
,以及第一加密主私钥ke1和第一加密主公钥p
pube1
。第一签名主私钥ks1为随机整数,且ks1∈[1,n-1],其中n为素数。设群g2是阶为n的加法循环群,则p
pubs1
为群g2中的元素,且满足
[0187]
p
pubs1
=[ks1]
×
p2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1),
[0188]
第一加密主私钥ke1为随机整数,且ke1∈[1,n-1],其中n为素数。设群g1是阶为n的加法循环群,则p
pube1
为群g1中的元素,且满足
[0189]
p
pube1
=[ke1]
×
p1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2),
[0190]
式(1)和(2)中,p1为群g1的生成元,p2为群g2的生成元,方括号[]的含义代表椭圆曲线上的倍点运算,具体参见标准《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》中的第4节。本发明中,后面各等式中方括号[]的含义均与上述式(1)中方括号[]的含义相同,代表椭圆曲线上的倍点运算。
[0191]
同理,通过第二密钥生成中心kgc2生成第二系统参数,第二系统参数包括第二签名主私钥ks2和第二签名主公钥p
pubs2
。第二签名主私钥ks2为随机整数,且ks2∈[1,n-1],且满足
[0192]
p
pubs2
=[ks2]
×
p2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)。
[0193]
s2.通过双密钥生成中心kgc1和kgc2分别计算得到公共主密钥p
pubs

[0194]
通过第一密钥生成中心kgc1计算p
pubs
=[ks1]
×
p
pubs2

[0195]
通过第二密钥生成中心kgc2计算p
pubs
=[ks2]
×
p
pubs1
。1mod n]
×
p1计算得到第一数据p
’1,向第一通信方发送第一数据p
’1,其中,p1是群g1的生成元,第二通信方保存第一随机数ds
a2
作为第二通信方的第二部分用户签名私钥;
[0210]
a3、第一通信方生成256比特的第二随机数ra,ra∈[1,n-1],由q=[ra]
×
p
’1计算得到第二数据q,第一通信方向第一密钥生成中心kgc1发送第一数据p
’1、第二数据q和用户标识ida;
[0211]
a4、第一密钥生成中心kgc1接收到第一数据p
’1、第二数据q和用户标识ida后,计算第一用户签名密钥生成数据(s和t)和用户加密私钥dea,所述计算包括如下步骤:
[0212]
a41、第一密钥生成中心kgc1生成256比特的第一随机整数r,r∈[1,n-1],由
[0213]
s=(r
×
(h+ks1)-1
)mod n
[0214]
和t=[r-1
mod n]
×q[0215]
计算得到s和t,
[0216]
a42、第一密钥生成中心kgc1按照《gb/t 38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》第7.1节,使用第一加密主私钥ke1和用户标识ida,利用
[0217]
t1=h1(ida||hid,n)+ke1,
[0218]
t2=(ke1×
t
1-1
)mod n,
[0219]
dea=[t2]
×
p2,
[0220]
计算得到用户加密私钥dea,
[0221]
a43、第一密钥生成中心kgc1生成g2上的第一随机点n
dea
,且n
dea
不等于用户加密私钥dea,并计算噪声化第一用户加密私钥de'a:
[0222]
de'a=de
a-n
dea

[0223]
引入噪声化第一用户加密私钥de'a的目的在于使用第一随机点n
dea
对用户加密私钥dea进行噪声混淆,
[0224]
a44、第一密钥生成中心kgc1计算s=[ke1]
×
p
’1,设s的坐标为(xs,ys),利用《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》第7.2.6节的方法将xs,ys转换为字节串,并计算k=kdf(xs||ys,128),其中kdf是《gb/t38635.2-2020》中《信息安全技术sm9标识密码算法第2部分:算法》第5.3.6节的密钥派生函数,k是128比特的字节串,
[0225]
a45、设噪声化第一用户加密私钥de'a的坐标为(x
de'a
,y
de'a
),第一密钥生成中心kgc1利用《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》第7.2.6节的方法将x
de'a
,y
de'a
转换为第一坐标字节串,并使用k和sm4密码算法加密第一坐标字节串得到第一私钥坐标加密数据e:
[0226]
e=sm4_enc(k,x
de'a
||y
de'a
),
[0227]
其中,sm4_enc(k,x
de'a
||y
de'a
)表示使用《gb/t 32907-2016》——《信息安全技术sm4分组密码算法》中定义的sm4加密算法和128比特的密钥k,对明文x
de'a
||y
de'a
进行加密计算并输出密文,
[0228]
a46、第一密钥生成中心kgc1将第一用户签名密钥生成数据s和t、第一私钥坐标加密数据e和第一随机点n
dea
发送给第一通信方;
[0229]
a5、第一通信方向第二密钥生成中心kgc2发送第一用户签名密钥生成数据中的t,第二密钥生成中心kgc2由
[0230]
r=[(h+ks2)-1
mod n]
×
t
[0231]
计算得到r,并将r发送给第一通信方;
[0232]
a6、第一通信方由
[0233]
ds
a1
=p’1-[(r
a-1
×
h1×
s)mod n]
×rꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0234]
计算得到第一通信方的第一部分用户签名私钥ds
a1

[0235]
其中ds
a1
满足以下等式:
[0236]
ds
a1
=p’1-[(h1×
(h+ks1)-1
×
(h+ks2)-1
)mod n]
×
p
’1[0237]
=p’1-[(h1×
(h1+h
×
(ks1+ks2)+ks1×
ks2)-1
)mod n]
×
p
’1;
[0238]
a7、第一通信方和第二通信方分别由
[0239]
p
pubsa
=[h]
×
(p
pubs1
+p
pubs2
)+p
pubs
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0240]
计算得到第一用户签名主公钥p
pubsa
,此时,所述第一用户签名主公钥p
pubsa
即为所述用户签名主公钥,
[0241]
其中p
pubsa
满足以下等式
[0242]
p
pubsa
=[(h
×
(ks1+ks2)+ks1×
ks2)mod n]
×
p2;
[0243]
a8、第一通信方随机生成第二随机整数d1∈[1,n-1],并计算d1=[d1]
×
p2和de
a1
=d1+n
dea
,将第一私钥坐标加密数据e和d1发送给第二通信方,保存de
a1
作为第一通信方的第一部分用户加密私钥;
[0244]
a9、第二通信方利用
[0245]
s’=[(ds
a2
)-1
mod n]
×
p
pube1
[0246]
计算得到s’,设s’的坐标为(x
s’,y
s’),利用《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》第7.2.6节的方法将x
s’,y
s’转换为字节串,并计算k’=kdf(x
s’||y
s’,128),k’是128比特的字节串;
[0247]
a10、第二通信方使用k’和sm4密码算法解密第一私钥坐标加密数据e得到字节串:
[0248]
x
de’a
||y
de’a
=sm4_dec(k’,e),
[0249]
再使用《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》第7.2.7节的方法将解密的字节串x
de’a
||y
de’a
转换为域元素得到噪声化第一用户加密私钥de’a
。其中,sm4_dec(k’,e)表示使用《gb/t 32907-2016》中的sm4解密算法和128比特的密钥k’,对密文明文e进行解密计算并输出明文;
[0250]
a11、第二通信方利用
[0251]
de
a2
=de’a-d1[0252]
计算得到第二通信方的第二部分用户加密私钥de
a2
并保存。
[0253]
从上述计算中可得到第一通信方的第一部分用户签名私钥ds
a1
和第二通信方的第二部分用户签名私钥ds
a2
,满足关系:
[0254]
[ds
a2
]
×
ds
a1
=p
1-[(h1×
(h1+h
×
(ks1+ks2)+ks1×
ks2)-1
)mod n]
×
p1=dsa。
[0255]
经过步骤a8-a11,第一通信方和第二通信方各自生成部分用户加密私钥,可用于协同进行密钥解封装和数据解密。
[0256]
需注意,采取方法aa时,用户签名私钥dsa是用户a的实际签名私钥,分拆为第一部分用户签名私钥ds
a1
和第二部分用户签名私钥ds
a2
两部分,但是,用户签名私钥dsa在执行本发明的整个流程中,都不会出现,第一通信方和第二通信方中任一通信方和第一密钥生成
2020》——《信息安全技术sm9标识密码算法第2部分:算法》第7.2.6节的方法将x
de'aa
,y
de'aa
转换为第二坐标字节串,并使用kk和sm4密码算法加密第二坐标字节串得到第二私钥坐标加密数据ee:
[0279]
ee=sm4_enc(kk,x
de'aa
||y
de'aa
),
[0280]
其中,sm4_enc(kk,x
de'aa
||y
de'aa
)表示使用《gb/t 32907-2016》——《信息安全技术sm4分组密码算法》中定义的sm4加密算法和128比特的密钥kk,对明文x
de'aa
||y
de'aa
进行加密计算并输出密文。
[0281]
b46、第一密钥生成中心kgc1将所述第二用户签名密钥生成数据ss和tt、第二私钥坐标加密数据ee和第二随机点nn
dea
发送给第一通信方;
[0282]
b5、第一通信方向第二密钥生成中心kgc2发送所述第二用户签名密钥生成数据中的tt,第二密钥生成中心kgc2由
[0283]
rr=[(hh+ks2)-1
mod n]
×
tt
[0284]
计算得到rr,并将rr发送给第一通信方;
[0285]
b6、第一通信方由
[0286]
ds
aa1
=pp’1-[(rr
a-1
×
h1×
α
×
ss)mod n]
×
rr
ꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0287]
计算得到第一通信方的第三部分用户签名私钥ds
aa1

[0288]
其中,ds
aa1
满足以下等式:
[0289]
ds
aa1
=pp’1-[(h1×
α
×
(hh+ks1)-1
×
(hh+ks2)-1
)mod n]
×
pp
’1[0290]
=pp’1-[(h1×
(h1+α-1
×
hh
×
(ks1+ks2)+α-1
×
ks1×
ks2)-1
)mod n]
×
pp
’1;
[0291]
b7、第一通信方和第二通信方分别由
[0292]
p
pubsaa
=[(α-1
)mod n]
×
([hh]
×
(p
pubs1
+p
pubs2
)+p
pubs
)
ꢀꢀꢀꢀꢀ
(6)
[0293]
计算得到第二用户签名主公钥p
pubsaa
,此时,所述第二用户签名主公钥p
pubsaa
即为所述用户签名主公钥,
[0294]
其中,p
pubsaa
满足以下等式:
[0295]
p
pubsaa
=[(α-1
×
hh
×
(ks1+ks2)+α-1
×
ks1×
ks2)mod n]
×
p2;
[0296]
b8、第一通信方生成第四随机整数dd1∈[1,n-1],并计算dd1=[dd1]
×
p2和de
aa1
=dd1+nn
dea
,将第二私钥坐标加密数据ee和dd1发送给第二通信方,保存de
aa1
作为第一通信方的第三部分用户加密私钥;
[0297]
b9、第二通信方利用
[0298]
ss’=[(ds
aa2
)-1
mod n]
×
p
pube1
[0299]
计算得到ss’,设ss’的坐标为(x
ss’,y
ss’),利用《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》第7.2.6节的方法将x
ss’,y
ss’转换为字节串,并计算kk’=kdf(x
ss’||y
ss’,128),其中kdf是《gb/t 38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》第5.3.6节的密钥派生函数,kk’是128比特的字节串;
[0300]
b10、第二通信方使用kk’和sm4密码算法解密第二私钥坐标加密数据ee得到字节串:
[0301]
x
de’aa
||y
de’aa
=sm4_dec(kk’,ee),
[0302]
再使用《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》第7.2.7节的方法将解密的字节串x
de’aa
||y
de’aa
转换为域元素得到噪声化第二用户加密
私钥de’aa
,其中,sm4_dec(kk’,ee)表示使用《gb/t 32907-2016》中的sm4解密算法和128比特的密钥kk’,对密文明文ee进行解密计算并输出明文;
[0303]
b11、第二通信方利用
[0304]
de
aa2
=de’aa-dd1[0305]
计算得到第二通信方的第四部分用户加密私钥de
aa2
并保存。
[0306]
从上述计算中可得到第一通信方的第三部分用户签名私钥ds
aa1
和第二通信方的第四部分用户签名私钥ds
aa2
满足关系:
[0307]
[ds
aa2
]
×
ds
aa1
=p
1-[(h1×
(h1+h
×
(ks1+ks2)+ks1×
ks2)-1
)mod n]
×
p1=dsa。
[0308]
经过步骤b8-b11,第一通信方和第二通信方各自生成部分用户加密私钥,可用于协同进行密钥解封装和数据解密。
[0309]
需注意,采取方法bb时,用户签名私钥dsa是用户a的实际签名私钥,分拆为第三部分用户签名私钥ds
aa1
和第四部分用户签名私钥ds
aa2
两部分,但是,用户签名私钥dsa在执行本发明的整个流程中,都不会出现,第一通信方和第二通信方中任一通信方和第一密钥生成中心kgc1和第二密钥生成中心kgc2中任一密钥生成中心都不能单独计算或得到dsa。
[0310]
第一通信方的第三部分用户加密私钥de
aa1
和第二通信方的第四部分用户加密私钥de
aa2
满足关系:
[0311]
dea=de
aa1
+de
aa2

[0312]
本发明还提供一种数字签名计算方法,所述数字签名计算方法采用上述的密钥生成方法,且在所述数字签名计算方法中,为第一通信方使用第一部分用户签名私钥ds
a1
(或使用第三部分用户签名私钥ds
aa1
),第二通信方使用第二部分用户签名私钥ds
a2
(或第四部分用户签名私钥ds
aa2
)协同计算数字签名。所述数字签名计算方法中,设定用户标识ida,且设待签名消息原文为m,则利用
[0313]
h1=h1(ida||hid,n)
[0314]
计算得到h1,根据h1是否为模n的平方元,分别采取方法cc或方法dd,其中,h1。
[0315]
方法cc、若h1是模n的平方元,则第一通信方使用第一部分用户签名私钥ds
a1
,第二通信方使用第二部分用户签名私钥ds
a2
,具体包括如下步骤:
[0316]
cc1、第一通信方生成256比特的第五随机整数k1,k1∈[1,n-1],计算u=e(p1,p
pubsa
)
k1
,并将数据u、m和ida发送给第二通信方,其中,e是从g1×
g2到g
t
的双线性对,具体可见《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》第6.1节;
[0317]
cc2、第二通信方生成256比特的第六随机整数k2、第七随机整数k3,其中k2∈[1,n-1],k3∈[1,n-1],然后计算w=u
k2
×
e(p1,p
pubsa
)
k3

[0318]
cc3、第二通信方计算hhh=h2(m||w,n),s1=(k2
×
ds
a2
)mod n,s2=((k3-hhh)
×
ds
a2
)mod n,其中h2是《gb/t 38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》5.3.2.3中定义的密码函数(即第二密码函数),第二通信方将hhh,s1和s2发送给第一通信方;
[0319]
cc4、第一通信方利用
[0320]
s=[k1
×
s1+s2]
×
ds
a1
[0321]
计算得到s,输出数字签名(hhh,s)。
[0322]
方法dd、若h1不是模n的平方元,则第一通信方使用第三部分用户签名私钥ds
aa1

第二通信方使用第四部分用户签名私钥ds
aa2
,具体包括如下步骤:
[0323]
dd1、第一通信方生成256比特的第八随机整数kk1,kk1∈[1,n-1],计算uu=e(p1,p
pubsaa
)
kk1
,并将数据uu、m和ida发送给第二通信方;
[0324]
dd2、第二通信方生成256比特的第九随机整数kk2、第十随机整数kk3,其中kk2∈[1,n-1],kk3∈[1,n-1],然后计算ww=uu
kk2
×
e(p1,p
pubsaa
)
kk3

[0325]
dd3、第二通信方计算hhhh=h2(m||ww,n),ss1=(kk2
×
ds
aa2
)mod n,ss2=((kk3-hhhh)
×
ds
aa2
)mod n,第二通信方将hhhh,ss1和ss2发送给第一通信方;
[0326]
dd4、第一通信方利用
[0327]
ss=[kk1
×
ss1+ss2]
×
ds
aa1
[0328]
计算得到ss,输出数字签名(hhhh,ss)。
[0329]
本发明还提供一种数字签名验证方法,所述数字签名验证方法采用上述的密钥生成方法,且所述数字签名验证方法采用上述第一用户签名主公钥p
pubsa
或第二用户签名主公钥p
pubsaa
,识别符hid,用户标识ida,消息m和数字签名(hhhh,ss)为输入参数,对消息m进行数字签名验证。所述数字签名验证方法中,利用
[0330]
h1=h1(ida||hid,n)
[0331]
计算得到h1,根据h1是否为模n的平方元,分别采取方法ee或方法ff。
[0332]
方法ee、若h1是模n的平方元,则第一通信方使用第一用户签名主公钥p
pubsa
、函数识别符hid,用户标识ida,消息m和数字签名sig为输入参数,按照《gb/t38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》第6.4节的算法进行验证。根据第一用户签名主公钥p
pubsa
、第一通信方使用的第一部分用户签名私钥ds
a1
和第二通信方使用的第二部分用户签名私钥ds
a2
的关系,可知若消息未被篡改,则数字签名可验证通过。
[0333]
方法ff、若h1不是模n的平方元,则第一通信方使用第二用户签名主公钥p
pubsaa
、函数识别符hid,用户标识ida,消息m和数字签名sig为输入参数,按照《gb/t38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》第6.4节的算法进行验证。根据第二用户签名主公钥p
pubsaa
、第一通信方使用的的第三部分用户签名私钥ds
aa1
和第二通信方使用的部分用户签名私钥ds
aa2
的关系,可知若消息未被篡改,则数字签名可验证通过。
[0334]
本发明还提供一种密钥封装方法,所述密钥封装方法采用上述的密钥生成方法,且在所述密钥封装方法中,封装者为了封装比特长度为klen(klen为整数)的密钥k后发送给用户标识为idb的接收者aaa,使用用户标识idb和第一密钥生成中心kgc1的第一加密主公钥p
pube1
按照《gb/t 38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》第8.2节进行的密钥封装计算,输出(kkk,ccc),其中kkk是封装后的密钥,ccc是封装的密文。
[0335]
本发明还提供一种密钥解封装方法,所述密钥解封装方法采用上述的密钥生成方法,且在所述密钥解封装方法中,接收者aaa收到密钥k的封装密文ccc后,接收者aaa作为第一通信方,使用其第一部分用户加密私钥de
a1
和第二通信方(使用第二部分用户加密私钥de
a2
)进行协同计算以恢复出密钥k’的过程。计算过程如下:
[0336]
gg1、第一通信方(接收者aaa)将ccc发送给第二通信方;
[0337]
gg2、第二通信方验证ccc是g1上的点;
[0338]
gg3、第二通信方计算w
’2=e(ccc,de
a2
);
[0339]
gg4、第二通信方将w
’2发送给第一通信方;
[0340]
gg5、第一通信方计算w’=e(ccc,de
a1
)
×w’2;
[0341]
gg6、第一通信方按照《gb/t 38635.1-2020》——《信息安全技术sm9标识密码算法第1部分:总则》中第8.4节,计算出封装的密钥k’=kdf(ccc||w’||id
aaa
,klen)。id
aaa
为接收者aaa的用户标识。
[0342]
本发明还提供一种数据加密方法,所述数据加密方法采用上述的密钥生成方法,且在所述数据加密方法中,加密者使用数据的解密者bbb的用户标识idb和第一密钥生成中心kgc1的第一加密主公钥p
pube1
按照《gb/t 38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》第9.2节,对明文m进行加密计算后,输出密文c
132
=c1||c3||c2。
[0343]
本发明还提供一种数据解密方法,所述数据解密方法采用上述的密钥生成方法,且在所述数据加密方法中,数据的解密者即接收者a
132
收到密文c
132
=c1||c3||c2后,接收者a
132
作为第一通信方,使用其第一部分用户加密私钥de
a1
和第二通信方(使用第二部分用户加密私钥de
a2
)进行协同计算解密出明文m的过程。计算过程如下:
[0344]
hh1、第一通信方(接收者a
132
)将c
132
发送给第二通信方;
[0345]
hh2、第二通信方验证c
132
是g1上的点;
[0346]
hh3、第二通信方计算ww
’2=e(c
132
,de
a2
);
[0347]
hh4、第二通信方将ww
’2发送给第一通信方;
[0348]
hh5、第一通信方计算ww’=e(c
132
,de
a1
)
×
ww
’2;
[0349]
hh6、第一通信方按照《gb/t 38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》第9.4节中的b3-b5计算得到明文m’并输出,其中,《gb/t 38635.2-2020》——《信息安全技术sm9标识密码算法第2部分:算法》第9.4节b3-b5中的ω’为ww’。
[0350]
本发明还提供一种计算机设备,包括储存器、第一处理器及储存在所述存储器上并可在所述第一处理器上运行的第一计算机程序,第一计算机程序被第一处理器执行时实现上述的密钥生成方法、数字签名计算方法、数字签名验证方法、密钥封装方法、密钥解封装方法、数据加密方法和数据解密方法中的一中方法或几种方法。
[0351]
本发明还提供一种计算机可读存储介质,用于储存第二计算机程序,第二计算机程序可被至少一个第二处理器所执行,以使至少一个第二处理器执行上述的密钥生成方法、数字签名计算方法、数字签名验证方法、密钥封装方法、密钥解封装方法、数据加密方法和数据解密方法中的一中方法或几种方法。
[0352]
本发明提供的签名密钥生成方法通过第一通信方和第二通信方分别产生部分用户签名密钥,并通过与第一密钥生成中心和第二密钥生成中心分别进行通信来生成用户签名密钥。用户签名密钥分别部分存储在第一通信方和第二通信方中。在用户签名密钥生成过程中,第一通信方、第二通信方、第一密钥生成中心和第二密钥生成中心中的任何一方均不能计算出完整的用户签名密钥,从而既实现了用户对签名密钥的有效控制,解决了在单kgc下,kgc对用户签名密钥的完全掌控,即用户密钥的托管问题,又实现了在云计算、移动互联网等环境下,用户移动终端对用户签名密钥的安全生成、存储和使用。
[0353]
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1