融合量子密钥分发的SM2算法协同签名系统、方法及设备技术方案

技术编号:38040610 阅读:10 留言:0更新日期:2023-06-30 11:07
本发明专利技术公开了一种融合量子密钥分发的SM2算法协同签名系统、方法和装置,涉及密码应用技术领域。客户端使用SM2算法生成第一加密参数,根据加密公钥和第一量子密钥生成待签名消息的第一摘要,使用第二量子密钥对第一加密参数、待签名消息和第一摘要进行加密并生成对应第一完整性校验值,得到第一加密数据;服务端使用第二量子密钥对第一加密数据进行完整性校验和解密,使用SM2算法根据第一加密参数生成第二加密参数;客户端根据第二加密参数生成数字签名。协同签名双方的通信交互过程采用量子密钥分发系统提高了协同签名的安全性,客户端和服务端均直接对要签名的消息进行处理,降低了一方伪造欺诈的可能性。低了一方伪造欺诈的可能性。低了一方伪造欺诈的可能性。

【技术实现步骤摘要】
融合量子密钥分发的SM2算法协同签名系统、方法及设备


[0001]本专利技术涉及密码应用
,具体涉及一种融合量子密钥分发的SM2算法协同签名系统、方法及设备。

技术介绍

[0002]椭圆曲线密码(简称ECC)是一种基于在有限域上定义的椭圆曲线的数学难题的公开密钥体制。SM2算法是指由GB/T 32918

2016《信息安全技术SM2椭圆曲线公钥密码算法》标准中规定的椭圆曲线公钥密码算法,是ECC密码体制的一种具体算法。在云计算环境和SaaS化的应用中部署了大量软件实现的密码模块,对这些软件密码模块的使用涉及到SM2密码算法中私钥的安全性问题,以及由此带来的在开放环境中数字签名的可信性问题。为应对开放环境中私钥签名的安全性问题,一般来讲可以采用协同签名的技术,即由开放环境中的软件密码模块和封闭式的硬件密码模块(HSM,常见为密码机)分别存储部分私钥,两方联合才能对消息进行数字签名操作,任何一方均无法获取到另外一方私钥的任何信息,因此就算攻击者成功入侵位于开放环境中的软件密码模块,也不能伪造签名。
[0003]专利文件CN104243456A,公开了适用于云计算的基于SM2算法的签名及解密方法和系统,该方案中SM2算法产生数字签名(r,s),r仅由第二通信方基于消息摘要e产生,而第一通信方是在第二通信方传回的r基础上进行处理,而不是直接对消息摘要e进行处理,存在以下可能性:第二通信方基于e'产生r'并传回第一通信方进行签名处理,并将第一通信方最终发布的消息由e的原始消息替换为e'的原始消息,即达到了骗取第一通信方对其不知情的e',进行协同签名的目的。
[0004]现有技术中,实现协同签名需要在两个签名方之间传递一些重要的数据,这些数据的传输过程往往缺乏完整性保护,存在被篡改的可能性;而且,协同签名对消息和消息摘要的处理以其中一方为主,另外一方是在已经处理过的消息摘要基础上进行,存在消息摘要被替换伪造签名的情况,导致协同签名安全性较低。

技术实现思路

[0005]本专利技术的目的就在于解决上述
技术介绍
的问题,而提出一种融合量子密钥分发的SM2算法协同签名系统、方法及设备。
[0006]本专利技术的目的可以通过以下技术方案实现:
[0007]本专利技术实施例第一方面,首先提供了一种融合量子密钥分发的SM2算法协同签名系统,包括客户端、服务端和量子分发QKD网络;其中:
[0008]所述客户端,用于在预设存储介质中获取第一量子密钥和第二量子密钥,使用SM2算法生成第一加密参数,根据所述客户端和所述服务端密钥协商得到加密公钥和所述第一量子密钥生成待签名消息的第一摘要,使用所述第二量子密钥对所述第一加密参数、所述待签名消息和所述第一摘要进行加密并生成对应第一完整性校验值,得到第一加密数据发送给所述服务端;所述预设存储介质中保存有所述QKD网络注入的多个量子密钥;
[*]G,S1=D
c
‑1*(K1*D
c
‑1)mod n,将Q1和S1作为第一加密参数;
[0022]根据所述客户端和服务端密钥协商得到加密公钥和所述第一量子密钥生成待签名消息的第一摘要,包括:
[0023]基于GB/T 32918计算第一中间参数Z:
[0024]Z=HASH(ENTL
C
||ID
C
||ENTL
S
||ID
S
||x
G
||y
G
||x||y)
[0025]其中,ID
C
和ID
S
分别为所述客户端的用户标识和所述服务端的用户标识,ENTL
C
和ENTL
S
分别为用户标识的标识长度,x
G
和y
G
为椭圆曲线G点坐标,x和y为公钥P
G
的坐标;
[0026]根据Z和待签名消息M计算第二中间参数M


[0027]M

=Z||ID
key
||M
[0028]其中,ID
key
为第一量子密钥的密钥ID;
[0029]以第一量子密钥对M

进行带密钥杂凑运算得到待签名消息的第一摘要e:e=HMAC(M

,Key1)。
[0030]可选地,所述第二加密参数的计算过程为:服务端产生两个位于[1,n

1]之间的随机数K2和K3,计算Q2=K2*D
s
‑1[*]G,Q3=K3*D
s
[*]G,计算K2*D
s
‑1[*]Q1+Q3得到计算结果(x1,y1),即(K1*K2*D
c
‑1*D
s
‑1+K3*D
s
)[*]G),并计算r=x1+e mod n,其中,若r不等于0,则进一步计算S2=D
s
‑1*(K2*D
s
‑1)mod n,S3=D
s
‑1*(r+K3*D
s
)mod n,将Q2、Q3、S2和S3作为第二加密参数;若r等于0,则服务端可重新产生K2,并重新计算得到(x1,y1)和r,直到r不等于0为止;
[0031]根据所述第二加密参数生成数字签名包括:
[0032]计算K1*D
c
‑1[*]Q2+Q3得到计算结果(x1,y1)(即(K1*K2*D
c
‑1*D
s
‑1+K3*D
s
)[*]G),并计算r=x1+e mod n,进一步计算s=(D
c
‑1*S3+S2*S1‑
r)mod n,其中,若s不等于0且不等于n

r,则将(r,s)的数据类型按照GB/T 32918的方法转换为字节串作为对消息M的签名对外发布;若s等于0或等于n

r,则重新进行协同签名。
[0033]本专利技术实施例第三方面,还提供了一种融合量子密钥分发的SM2算法协同签名方法,所述方法应用于服务端,包括:
[0034]接收客户端发送的第一加密数据;所述第一加密数据的产生过程为:所述客户端使用SM2算法生成第一加密参数,在预设存储介质中获取第一量子密钥,根据所述客户端和服务端密钥协商得到加密公钥和所述第一量子密钥生成待签名消息的第一摘要,在预设存储介质中获取第二量子密钥,使用所述第二量子密钥对所述第一加密参数、所述待签名消息和所述第一摘要进行加密并生成对应第一完整性校验值,得到所述第一加密数据;所述预设存储介质中保存有所述QKD网络注入的多个量子密钥;
[0035]从所述QKD网络获取所述第二量子密钥,使用所述第二量子密钥对所述第一加密数据进行完整性校验和解密得到所述第一加密参数、所述待签名消息和所述第一摘要;
[0036]从本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种融合量子密钥分发的SM2算法协同签名系统,其特征在于,包括客户端、服务端和量子分发QKD网络;其中:所述客户端,用于在预设存储介质中获取第一量子密钥和第二量子密钥,使用SM2算法生成第一加密参数,根据所述客户端和所述服务端密钥协商得到加密公钥和所述第一量子密钥生成待签名消息的第一摘要,使用所述第二量子密钥对所述第一加密参数、所述待签名消息和所述第一摘要进行加密并生成对应第一完整性校验值,得到第一加密数据发送给所述服务端;所述预设存储介质中保存有所述QKD网络注入的多个量子密钥;所述服务端,用于从所述QKD网络获取所述第一量子密钥和所述第二量子密钥,使用所述第二量子密钥对所述第一加密数据进行完整性校验和解密得到所述第一加密参数、所述待签名消息和所述第一摘要,使用所述第一量子密钥生成所述待签名消息的第二摘要,所述第一摘要和所述第二摘要对比无误后,使用SM2算法根据所述第一加密参数生成第二加密参数,使用所述第二量子密钥对所述第二加密参数进行加密并生成对应第二完整性校验值,得到第二加密数据发送给所述客户端;所述客户端,还用于使用所述第二量子密钥对所述第二加密数据进行完整性校验和解密得到所述第二加密参数,根据所述第二加密参数生成数字签名。2.一种融合量子密钥分发的SM2算法协同签名方法,其特征在于,所述方法应用于客户端,包括:使用SM2算法生成第一加密参数,在预设存储介质中获取第一量子密钥,根据所述客户端和服务端密钥协商得到加密公钥和所述第一量子密钥生成待签名消息的第一摘要;所述预设存储介质中保存有所述QKD网络注入的多个量子密钥;在预设存储介质中获取第二量子密钥,使用所述第二量子密钥对所述第一加密参数、所述待签名消息和所述第一摘要进行加密并生成对应第一完整性校验值,得到第一加密数据;将所述第一加密数据发送给所述服务端;以使所述服务端,从所述QKD网络获取所述第一量子密钥和所述第二量子密钥,使用所述第二量子密钥对所述第一加密数据进行完整性校验和解密得到所述第一加密参数、所述待签名消息和所述第一摘要,使用所述第一量子密钥生成所述待签名消息的第二摘要,所述第一摘要和所述第二摘要对比无误后,使用SM2算法根据所述第一加密参数生成第二加密参数,使用所述第二量子密钥对所述第二加密参数进行加密并生成对应第二完整性校验值,得到第二加密数据发送给所述客户端;使用所述第二量子密钥对所述第二加密数据进行完整性校验和解密得到所述第二加密参数,根据所述第二加密参数生成数字签名。3.根据权利要求2所述的一种融合量子密钥分发的SM2算法协同签名方法,其特征在于,在使用SM2算法生成第一加密参数,在预设存储介质中获取第一量子密钥,根据所述客户端和服务端密钥协商得到加密公钥和所述第一量子密钥生成待签名消息的第一摘要之前,所述方法还包括:获取预先设置的SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G表示椭圆曲线E上n阶的基点;产生一个位于[1,n

1]之间的随机数,将产生的随机数作为D
C
,计算第一私钥数据P1=D
C
[*]G,[*]表示椭圆曲线点乘运算生成,在预设存储介质中获取第三量子密钥,使用所述
第三量子密钥对所述第一私钥数据进行加密并生成对应第三完整性校验值,得到协商数据;将所述协商数据发送给所述服务端;以使所述服务端,通过所述QKD网络获取所述第三量子密钥,使用所述第三量子密钥对所述协商数据进行完整性校验和解密得到所述第一私钥数据,产生一个位于[1,n

1]之间的随机数,将产生的随机数作为D
S
,计算公钥P
G
=D
S
[*]P1‑
G=(D
C
D
S

1)[*]G,并发布公钥。4.根据权利要求3所述的一种融合量子密钥分发的SM2算法协同签名方法,其特征在于,使用SM2算法生成第一加密参数具体为:产生一个位于[1,n

1]之间的随机数K1,以D
c
‑1为D
c
在Fq上的逆元,计算Q1=K1*D
c
‑1[*]G,S1=D
c
‑1*(K1*D
c
‑1)mod n,将Q1和S1作为第一加密参数;根据所述客户端和服务端密钥协商得到加密公钥和所述第一量子密钥生成待签名消息的第一摘要,包括:基于GB/T 32918计算第一中间参数Z:Z=HASH(ENTL
C
||ID
C
||ENTL
S
||ID
S
||x
G
||y
G
||x||y)其中,ID
C
和ID
S
分别为所述客户端的用户标识和所述服务端的用户标识,ENTL
C
和ENTL
S
分别为用户标识的标识长度,x
G
和y
G
为椭圆曲线G点坐标,x和y为公钥P
G
的坐标;根据Z和待签名消息M计算第二中间参数M

:M

=Z||ID
key
||M其中,ID
key
为第一量子密钥的密钥ID;以第一量子密钥对M

进行带密钥杂凑运算得到待签名消息的第一摘要e:e=HMAC(M

,Key1)。5.根据权利要求4所述的一种融合量子密钥分发的SM2算法协同签名方法,其特征在于,所述第二加密参数的计算过程为:服务端产生两个位于[1,n

1]之间的随机数K2和K3,计算Q2=K2*D
s
‑1[*]G,Q3=K3*D
s
[*]G,计算K2*D
s
‑1[*]Q1+Q3得到计算结果(x1,y1),即(K1*K2*D
c
‑1*D
s
‑1+K3*D
s
)[*]G),并计算r=x1+e mod n,其中,若r不等于0,则进一步计算S2=D
s
‑1*(K2*D
s
‑1)mod n,S3=D
s
‑1*(r+K3*D
s
)mod n,将Q2、Q3、S2和S3作为第二加密参数;若r等于0,则服务端可重新产生K2,并重新计算得到(x1,y1)和r,直到r不等于0为止;根据所述第二加密参数生成数字签名包括:计算K1*D
c
‑1[*]Q2+Q3得到计算结果(x1,y1)(即(K1*K2*D
c
‑1*D
s
‑1+K3*D
s
)[*]G),并计算r=x1+e mod n,进一步计算s=(D
c
...

【专利技术属性】
技术研发人员:罗俊
申请(专利权)人:中电信量子科技有限公司
类型:发明
国别省市:

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

1