一种敏捷的数字签名验签方法及系统与流程

文档序号:32012335发布日期:2022-11-02 18:50阅读:243来源:国知局
一种敏捷的数字签名验签方法及系统与流程

1.本技术涉及网络信息安全技术领域,具体涉及一种敏捷的数字签名验签方法及系统。


背景技术:

2.数字签名是加密技术与数字摘要技术的综合应用。简单地说,数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人伪造。它是对电子形式的消息进行签名的一种方法,只有信息的发送者才能产生别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息完整性的一个有效证明。通过数字签名技术能够验证消息文件在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。
3.目前,数字签名技术主要包括基于非对称密钥加密体制的数字签名与验证和基于哈希算法的数字签名与验证。如图1所示,基于非对称密钥加密体制的数字签名与验证的过程一般为:发送方首先将消息用自己的私钥进行加密得到数字签名,然后将数字签名和消息一起发送至接收单元。接收单元用发送方的公钥对数字签名进行解密,并将解密结果与接收的消息进行对比,如果相等,则签名验证成功。
4.如图2所示,基于哈希算法的数字签名与验证的过程一般为:发送方在发送消息时,通过哈希函数生成固定长度的消息摘要,然后用发送方的私钥对这个消息摘要进行加密作为消息的数字签名和消息一起发送给接收单元。接收单元首先用与发送方一样的哈希函数从接收到的原始消息中计算出消息摘要,接着再用公钥对数字签名进行解密,并将解密结果与计算获得的消息摘要进行对比,如果相等,则接收单元就能确认该消息是发送方的。
5.而上述两种数字签名方式其本质上都依赖于非对称密码体制,其安全性基于未证明的数学计算难题。如基于大整数因子分解问题的rsa算法以及基于椭圆曲线上离散对数计算问题(ecdlp)的ecc算法。随着经典计算力的快速提升以及量子算法的爆炸式发展,上述签密算法正逐渐被破解。
6.为了解决这一问题,名称为:一种量子密钥协商方法、系统、量子数字签名方法、系统,公开号为:cn114244500a的中国专利文献提出了一种量子数字签名方法,其内容主要为:发送方a将消息和数字签名发送给接收方b,接收方b将收到的来自发送方a的消息和数字签名连同自己的密钥s1一并发送给验证方c;验证方c在接收到接收方b的消息后,将密钥s2发给接收方b,通过接收方b和验证方c共同进行签名验证。该方法不依赖于非对称密码体制,且通过接收方b和验证方c共同进行验证,大大提高了签名验签完整性、真实性以及不可抵赖性等,确保签名验签的安全。
7.但是,在上述量子数字签名方法中,接收方b在获取发送方a发送的消息和数字签名后需要将消息发送至验证方c,而验证方c除了验签之外本身并不需要消息,因此验证方c
接收消息不仅会导致其内存资源被大量消耗,增加验证方c的存储负担,还会导致验证方c的验签效率降低。


技术实现要素:

8.基于此,有必要针对上述技术问题,提供一种敏捷的数字签名验签方法及系统。
9.第一方面,提供一种敏捷的数字签名验签方法,包括:
10.发送单元生成消息mess;
11.发送单元基于消息mess生成哈希值一h1(mess),并基于该哈希值一h1(mess)生成关于消息mess的验证码mac,然后将消息mess以及验证码mac发送至接收单元;
12.接收单元接收消息和验证码,分别记为消息mess

和验证码mac

,然后进行文件验证;
13.发送单元与量子ca共享一次性身份otid;
14.发送单元基于一次性身份otid和哈希值一h1(mess)生成三方签名文件sign,并基于三方签名文件sign生成哈希值二h2(sign),然后基于该哈希值二h2(sign)生成关于三方签名文件sign的签名摘要abstr,并将三方签名文件sign以及加密的签名摘要abstr发送至接收单元;
15.接收单元接收三方签名文件和加密的签名摘要,分别记为三方签名文件sign

和加密的签名摘要abstr

,然后与量子ca共同进行签名验证,如果量子ca和接收单元的签名验证均通过,则接收单元接受签名并存储接收的消息mess


16.在进一步的实施例中,所述发送单元基于消息mess生成哈希值一h1(mess),并基于该哈希值一h1(mess)生成关于消息mess的验证码mac,然后将消息mess以及验证码mac发送至接收单元的过程包括:
17.发送单元与接收单元共享n位的二进制随机数s1和2n位的二进制随机数t1,其中n为大于0的正整数;
18.发送单元本地生成n位的二进制随机数p1,并基于该随机数p1生成不可约多项式p1(x),然后将随机数s1作为输入随机数与不可约多项式p1(x)共同生成基于线性移位寄存器的哈希函数hash1;
19.发送单元通过哈希函数hash1对消息mess进行哈希运算获取哈希值一h1(mess),并基于该哈希值一h1(mess)生成关于消息mess的文件摘要dig,所述文件摘要dig表示为:dig=[h1(mess),p1];
[0020]
发送单元利用随机数t1对文件摘要dig进行异或加密得到消息mess的验证码mac,验证码mac表示为:然后将消息mess和验证码mac发送至接收单元。
[0021]
通过采用上述技术方案:基于不可约多项式以及输入随机数生成的哈希函数实现对验证码mac的安全性保证,在生成关于消息mess的验证码mac之前,接收方不会提前获知,从而避免了采用其他算法导致验证码mac容易被获知的风险,使得消息mess的完整性得以保证,防止消息mess被篡改、植入。
[0022]
在进一步的实施例中,所述接收单元接收消息和验证码,分别记为消息mess

和验证码mac

,然后进行文件验证的过程包括:
[0023]
接收单元接收消息和验证码,分别记为消息mess

和验证码mac


[0024]
接收单元利用其共享的随机数t1对验证码mac

进行异或解密获得文件摘要dig

,进而获得哈希值一h
′1(mess)和随机数p
′1;
[0025]
接收单元基于随机数p
′1生成不可约多项式p
′1(x),然后基于不可约多项式p
′1(x)和随机数s1生成新的基于线性移位寄存器的哈希函数hash
′1;
[0026]
接收单元利用新的哈希函数hash
′1对消息mess

进行哈希运算获得新的哈希值一h
′1(mess

),如果新的哈希值一h
′1(mess

)与哈希值一h
′1(mess)相等,则文件验证通过,接收单元存储消息mess

及哈希值一h
′1(mess);否则,文件验证失败,接收单元放弃消息mess


[0027]
通过采用上述技术方案:通过将新的哈希值一h
′1(mess

)与解密获得的mac

中的哈希值一h
′1(mess)进行对比,如果二者相等,则说明接收单元接收的消息mess

和与发送单元发送的消息mess相等,从而能够实现对接收的消息mess进行完整性验证。
[0028]
在进一步的实施例中,所述发送单元与量子ca共享一次性身份otid的过程包括:
[0029]
发送单元与量子ca共享m位的二进制随机数s3和2m位的二进制随机数t3,随机数t3表示为t3=[u,v],其中u和v都是m位的二进制随机数,并且,m为大于0的正整数;
[0030]
发送单元本地生成m位的随机数p3,并基于该随机数p3生成不可约多项式p3(x),然后将随机数s3作为输入随机数与不可约多项式p3(x)共同生成基于线性移位寄存器的哈希函数hash3;
[0031]
发送单元将从量子ca处获取的隐私身份pri代入哈希函数hash3生成关于该隐私身份pri的哈希值三h3(pri);
[0032]
发送单元基于哈希值三h3(pri)生成一次性证书otca,所述一次性证书otca表示为并将一次性证书otca发送至量子ca;
[0033]
量子ca接收一次性证书,记为一次性证书otca

,并进行身份验证:如果验证通过,则发送单元和量子ca获取相同的一次性身份否则,重新执行发送单元与量子ca共享一次性身份otid的过程。
[0034]
通过采用上述技术方案:基于隐私身份pri获取一次性身份otid,能够对隐私身份pri进行隐藏,避免隐私身份的暴露,从而提升三方签名文件sign的安全性;而随机数p3、s3以及t3变量的引入,为一次性身份otid的一次一变化提供可能,进一步提高了三方签名文件sign的安全性,并且无需引入其他变量;另外,在共享一次性身份otid的同时,对发送单元的隐私身份进行验证,确保一次性身份与隐私身份的关联。
[0035]
在进一步的实施例中,所述量子ca接收一次性证书,记为一次性证书otca

,并进行身份验证的过程包括:
[0036]
s61:量子ca获得对一次性证书,记为一次性证书otca

,并通过随机数t3对一次性证书otca

进行异或运算解密,进而获得解密后的哈希值三h3(pri)

和随机数p
′3;
[0037]
s62:量子ca根据随机数p
′3生成不可约多项式p
′3(x),然后基于不可约多项式p
′3(x)和随机数s3生成新的基于线性移位寄存器的哈希函数hash
′3;
[0038]
s63:量子ca将本地存储的隐私身份pri代入哈希函数hash
′3获取关于该隐私身份pri的新的哈希值三h
′3(pri);如果新的哈希值三h
′3(pri)与解密后的哈希值三h3(pri)

相等,则身份验证通过;否则,身份验证失败。
[0039]
通过采用上述技术方案:通过将新的哈希值三h
′3(pri)与哈希值三h3(pri)

进行
对比,如果二者相等,则说明发送单元发送的一次性证书otca所对应的隐私身份pri与量子ca存储的隐私身份pri相等,从而实现对用户单元的身份验证,进而确立一次性身份otid与用户单元的隐私身份pri的唯一对应关系,为三方签名文件的安全性提供保证。
[0040]
在进一步的实施例中,所述发送单元基于一次性身份otid和哈希值一h1(mess)生成三方签名文件sign,并基于三方签名文件sign生成哈希值二h2(sign),然后基于该哈希值二h2(sign)生成关于三方签名文件sign的签名摘要abstr,并将三方签名文件sign以及签名摘要abstr发送至接收单元的过程包括:
[0041]
发送单元与接收单元进行密钥协商,分别获得二进制的共享密钥x
ab
和共享密钥y
ab
;发送单元和量子ca进行密钥协商,分别获取二进制的共享密钥x
ac
和共享密钥y
ac
;其中,共享密钥x
ab
和共享密钥x
ac
的字符长度相同,共享密钥y
ab
和共享密钥y
ac
的字符长度相同,并且共享密钥y
ab
的字符长度是共享密钥x
ab
字符长度的两倍;
[0042]
发送单元将共享密钥x
ab
、共享密钥y
ab
、共享密钥x
ac
以及共享密钥y
ac
进行异或运算,得到密钥xa和密钥ya,异或运算的过程表示为:
[0043][0044][0045]
发送单元本地生成二进制随机数p2,并基于该随机数p2生成不可约多项式p2(x),然后将密钥xa作为输入随机数与不可约多项式p2(x)共同生成基于线性移位寄存器的哈希函数hash2;
[0046]
发送单元基于一次性身份otid和哈希值一h1(mess)生成三方签名文件sign,所述三方签名文件sign表示为:sign=[h1(mess),otid];并通过哈希函数hash2对三方签名文件sign进行哈希运算生成哈希值二h2(sign),然后基于该哈希值二h2(sign)生成签名摘要abstr,签名摘要abstr表示为abstr=[h2(sign),p2];
[0047]
发送单元通过密钥ya对签名摘要abstr进行异或加密,签名摘要abstr加密的过程表示为:然后将三方签名文件sign和加密的签名摘要abstr发送至接收单元。
[0048]
通过采用上述技术方案:在发送单元分别与接收单元以及量子ca进行密钥协商的情况下,生成关于一次性身份otid和哈希值一h1(mess)的三方签名文件sign,并计算其哈希值h2(sign),然后再生成签名摘要abstr,通过一次性身份进行签名,提高安全性;同时,便于后续进行三方验证。
[0049]
在进一步实施例中,所述接收单元接收三方签名文件和加密的签名摘要,分别记为三方签名文件sign

和加密的签名摘要abstr

,然后与量子ca共同进行签名验证的过程包括:
[0050]
接收单元接收三方签名文件和加密的签名摘要,分别记为三方签名文件sign

和加密的签名摘要abstr

,然后将三方签名文件sign

和加密的签名摘要abstr

连同共享密钥x
ab
以及共享密钥y
ab
一起通过认证信道发送至量子ca;
[0051]
量子ca接收三方签名文件、加密的签名摘要、共享密钥x
ab
以及共享密钥y
ab
,分别记为三方签名文件sign

、加密的签名摘要abstr

、共享密钥x

ab
以及共享密钥y

ab
,然后对共享密钥x

ab
、共享密钥y

ab
、共享密钥x
ac
以及共享密钥y
ac
进行异或运算,得到密钥xc和密钥yc,异或运算的过程表示为:
[0052][0053][0054]
量子ca利用密钥yc对加密签名摘要abstr

进行解密获取签名摘要[h2(sign)

,p2″
],进而获得哈希值二h2(sign)

以及随机数p
″2;然后基于随机数p
″2生成不可约多项式p
″2(x),然后将密钥xc作为输入随机数与不可约多项式p
″2(x)共同生成基于线性移位寄存器的哈希函数hash
″2;
[0055]
量子ca通过哈希函数hash2″
对接收的三方签名文件sign

进行哈希运算,生成哈希值二h
″2(sign

),并将运算获得的哈希值二h
″2(sign

)与解密获取的哈希值二h2(sign)

进行对比:如果相同,则量子ca的签名验证通过,量子ca将共享密钥x
ac
和共享密钥y
ac
连同量子ca的签名验证结果通过认证信道发送至接收单元;否则,量子ca的签名验证失败,量子ca直接将其签名验证结果通过认证信道发送至接收单元。
[0056]
通过采用上述技术方案:在验证过程中,接收单元将基于一次性身份otid的三方签名文件sign发送至量子ca进行签名验证,而无需将接收的消息mess

发送至量子ca,避免因接收的消息mess

内容过大导致量子ca内存过度占用,降低量子ca的存储负担,并且而提升签名验证的效率。
[0057]
在进一步的实施例中,所述接收单元接收三方签名文件和加密的签名摘要,分别记为三方签名文件sign

和加密的签名摘要abstr

,然后与量子ca共同进行签名验证的过程还包括:
[0058]
接收单元接收量子ca的签名验证结果,如果该签名验证结果为验证失败,接收单元拒绝签名,并放弃存储消息mess

;如果该签名验证结果为验证通过,则接收单元接收共享密钥x
ac
和共享密钥y
ac
,分别记为共享密钥x

ac
和共享密钥y

ac
,并对共享密钥x
ab
、共享密钥y
ab
、共享密钥x

ac
以及共享密钥y

ac
进行异或运算,得到密钥xb和密钥yb,异或运算的过程表示为:
[0059][0060][0061]
接收单元利用密钥yb对加密的签名摘要abstr

进行解密获取签名摘要[h2(sign)

,p
′2],进而获得解密的哈希值二h2(sign)

以及随机数p
′2;然后基于随机数p
′2生成不可约多项式p
′2(x),并将密钥xb作为输入随机数与不可约多项式p
′2(x)共同生成基于线性移位寄存器的哈希函数hash
′2;
[0062]
接收单元通过哈希函数hash
′2对接收的三方签名文件sign

进行哈希运算,生成哈希值二h
′2(sign

),并将哈希值二h
′2(sign

)与解密的哈希值二h2(sign)

进行对比:如果相同,则接收单元的签名验证通过,接收单元接受签名;否则,接收单元的签名验证失败,接收单元拒绝签名,并放弃存储消息消息mess


[0063]
通过采用上述技术方案:在量子ca签名验证通过的基础上,由接收单元进行签名验证,如果验证成功,则表明签名验签成功,从而确保消息mess签名的不可抵赖性。
[0064]
第二方面,提供一种敏捷的数字签名验签系统,包括通过量子安全网络互联的发送单元、接收单元以及量子ca;
[0065]
所述发送单元被设置为生成消息mess,并基于消息mess生成哈希值一h1(mess),
然后基于该哈希值一h1(mess)生成关于消息mess的验证码mac,最后将消息mess以及验证码mac发送至接收单元;所述发送单元还被设置为与量子ca共享一次性身份otid,并基于一次性身份otid和哈希值一h1(mess)生成三方签名文件sign,然后基于三方签名文件sign生成哈希值二h2(sign),最后基于该哈希值二h2(sign)生成关于三方签名文件sign的签名摘要abstr,并将三方签名文件sign以及加密的签名摘要abstr发送至接收单元;
[0066]
所述接收单元被设置为接收发送单元发送的消息和验证码,分别记为消息mess

和验证码mac

,然后进行文件验证;所述还被设置为接收发送单元发送的三方签名文件和加密的签名摘要,分别记为三方签名文件sign

和加密的签名摘要abstr

,然后与量子ca共同进行签名验证;
[0067]
所述量子ca被设置为向发送单元提供用户公开证书ca以及隐私身份pri。
[0068]
第三方面,提供一种计算机设备,包括:
[0069]
存储器,存储有计算机程序;
[0070]
处理器被设置为执行所述计算机程序时实现第一方面提供的数字签名验签方法。
[0071]
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面提供的数字签名验签方法。
[0072]
第五方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面提供的数字签名验签方法。
[0073]
有益效果:本技术提供的敏捷的数字签名验签方法,通过接收单元对发送单元发送的消息mess以及关于消息mess的验证码mac进行文件验证,确定消息mess的完整性和真实性,防止消息mess被篡改;同时,基于发送单元与量子ca共享的一次性身份otid以及对消息mess进行哈希运算的哈希值一h1(mess)生成三方签名文件sign,并通过接收单元和量子ca共同对三方签名文件sign进行签名验证;一方面,每次签名采用一次一变的一次性身份otid,提升签名验签的安全性;另一方面,量子ca基于定长的哈希值一h1(mess)进行签名验证,既能确保消息mess的不可抵赖性,又能避免消息mess内容过大导致量子ca内存被大量占用的问题,降低量子ca的存储负担,提升签名验签的效率和敏捷性。同时,本技术中,发送单元和量子ca能够在实现对发送单元的隐私身份pri进行验证的同时,进行一次性身份otid的共享,避免引入过多变量,进一步提高效率。
附图说明
[0074]
图1是基于非对称密钥加密体制的数字签名与验证的流程示意图。
[0075]
图2是基于哈希算法的数字签名与验证的流程示意图。
[0076]
图3是实施例1中的数字签名验签系统的结构示意图。
[0077]
图4是实施例1中的数字签名验签方法的流程示意图。
具体实施方式
[0078]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0079]
目前,数字签名技术主要包括基于非对称密钥加密体制的数字签名与验证以及基
于哈希算法的数字签名与验证。这两种数字签名方式其本质上都依赖于非对称密码体制,其安全性基于未证明的数学计算难题。随着经典计算力的快速提升以及量子算法的爆炸式发展,这种基于数学计算难题的签密方式,容易导致密钥被破译,导致数字签名验签存在安全风险。
[0080]
而为了解决这一问题,本公司已经提交了一件发明专利申请,该发明专利申请的名称为:一种量子密钥协商方法、系统、量子数字签名方法、系统,公开号为:cn114244500a。该专利申请提出了一种量子数字签名方法,内容主要为:发送方a将消息和数字签名发送给接收方b,接收方b将收到的来自发送方a的消息和数字签名连同自己的密钥s1一并发送给验证方c;验证方c在接收到接收方b的消息后,将密钥s2发给接收方b,通过接收方b和验证方c共同进行签名验证。该方法不依赖于非对称密码体制,且通过接收方b和验证方c共同进行验证,大大提高了签名验签完整性、真实性以及不可抵赖性等,确保签名验签的安全。但是,接收方b在获取发送方发送的消息和数字签名后需要将消息整个文件发送至验证方c,而验证方c除了验签之外,其实本身并不需要消息,因此验证方c接收消息不仅会导致其内存资源被大量消耗,增加验证方c的存储负担,还会导致验证方c的验签效率降低。
[0081]
为此,本技术提供一种敏捷的数字签名验签方法及系统,以对现有的数字签名验签技术进行改进。
[0082]
实施例1
[0083]
本实施例提供一种敏捷的数字签名验签方法。为了促进该数字签名验签方法的实现,如图3所示,本实施例提供一种敏捷的数字签名验签系统。数字签名验签系统包括发送单元、接收单元以及量子ca;并且,发送单元、接收单元以及量子ca之间通信互联。优选地,发送单元、接收单元以及量子ca之间通过量子安全网络实现通信互联。此处所说的量子安全网络是采用量子通信网络和经典通信网络共同构建而成的一种安全通信网络。其中,量子通信网络是采用量子密码的一种安全通信网络。如图4所示,本实施例将结合数字签名验签系统对数字签名验签的具体过程进行详细说明:
[0084]
s1:发送单元生成消息mess。
[0085]
具体的,发送单元能够根据业务的发生内容生成消息mess。消息mess包括消息文件doc以及用户公开证书ca。消息文件doc用于记载业务的实际内容,例如涉及交易、学术、医疗诊断、教育科学等信息内容。而用户公开证书ca则是通过权威机构颁发的,主要用于标识用户单元真实的公开身份。当然,消息mess中还包括时间戳,通过时间戳能够对消息mess中的关键内容进行时间标识。例如,本实施例中设定时间戳包括第一时间戳time1和/或第二时间戳time2。其中,第一时间戳time1用于标记消息mess的生成时间。而第二时间戳time2则用于标识消息mess的验签时间限制,在该时间限度内,进行验签有效;而超过该时间限度,则验签无效。通过设定验签时间,能够有效防止接收单元或者量子ca长时间不进行验签的问题,从而提升签名验签的效率。此外,消息mess中还可以包括消息文件的业务编号txid。通过该业务编号txid建立消息mess、验证码mac、一次性证书otca或一次性身份otid的索引关系。
[0086]
s2:发送单元基于消息mess生成哈希值一h1(mess),并基于该哈希值一h1(mess)生成关于消息mess的验证码mac,然后将消息mess以及验证码mac发送至接收单元。
[0087]
具体的,发送单元与接收单元共享n位的二进制随机数s1和2n位的二进制随机数
t1。其中,n为大于0的正整数,本实施例中n取值128。发送单元与量子ca之间通过量子安全网络进行随机数s1和随机数t1的中继。
[0088]
发送单元本地生成n位的二进制随机数p1,并基于该随机数p1生成不可约多项式p1(x)。具体的,发送单元依次用n为随机数p1的每一位对应多项式中除最高项意外的每一项的系数,生成一个gf(2)域中的n阶多项式。并且,最高项的系数为1。举例说明:假设随机数p1可以表示为[p
n-1
,p
n-2


,p1,p0]。同时,设定p0=1。则多项式p1(x)=xn+p
n-1
x
n-1
+p
n-2
x
n-2
+

+px+1。当然,需要对生成的多项式p1(x)进行验证,判断其是否为不可约多项式。验证过程表示为验证是否成立;式中函数gcd(a,b)表示求取gf(2)域上a和b的最大公因式,a和b表示任意两个多项式;[n/2]表示为对n/2取整。验证成立,表明多项式p1(x)为不可约多项式。否则,表明获取的多项式p1(x)不是不可约多项式,需要重新生成随机数p1,以构建不可约多项式p1(x)。然后,将随机数s1作为输入随机数与不可约多项式p1(x)一起生成基于线性反馈移位寄存器的哈希函数hash1。
[0089]
发送单元通过哈希函数hash1对消息mess进行哈希运算获取n位的哈希值一h1(mess)。然后,基于该哈希值一h1(mess)生成关于消息mess的文件摘要dig。文件摘要dig表示为:dig=[h1(mess),p1]。即文件摘要dig通过[h1(mess)字符串和p1字符串进行拼接,可以表示为h1(mess)+p1,也可以为p1+h1(mess),而最终获得的文件摘要dig的值为2n位的。发送单元利用2n位随机数t1对文件摘要dig进行异或加密消息mess的验证码mac,验证码mac表示为:然后将消息mess和验证码mac发送至接收单元。而为了降低传输压力,消息mess和验证码mac通过经典的认证信道进行传输,即通过经典的通信网络进行传输。
[0090]
s3:接收单元接收消息和验证码,分别记为消息mess

和验证码mac

,然后进行文件验证。为了对本实施例进行更好地说明,本实施例对文件的传输和接收的标记进行简单说明:设定i单元向j单元传送文件k,j单元接收的文件可能和i单元发送的并不完全一样,因此,设定j单元接收的文件为k

。在传输过程中如果文件没有被篡改或者植入,则文件k

与文件k相等;如果文件被篡改或者植入,则文件k

与文件k不相等。因此,将接收单元接收的消息和验证码分别记为消息mess

和验证码mac


[0091]
接收单元利用与发送单元共享的随机数t1对验证码mac

进行异或解密获得文件摘要dig

。验证码mac

进行异或解密的过程表示为:在对验证码mac

进行解密的情况下,获得n位的哈希值一h
′1(mess)和n位的随机数p
′1。接收单元基于随机数p
′1生成不可约多项式p
′1(x)。具体生成不可约多项式p
′1(x)的过程参照不可约多项式p1(x),此处不做赘述。然后基于不可约多项式p
′1(x)和共享的随机数s1生成新的基于线性反馈移位寄存器的哈希函数hash
′1。最后,接收单元利用新的哈希函数hash
′1对消息mess

进行哈希运算获得新的哈希值一h
′1(mess’)。此时,如果新的哈希值一h
′1(mess

)与解密获得的mac

中的哈希值一h
′1(mess)相等,文件验证通过,则说明接收单元接收的消息mess

与发送单元发送的消息mess相比,没有被篡改、被植入其他内容以及内容丢失问题,从而能够实现对接收的消息mess

的完整性验证,接收单元存储消息mess

及哈希值一h
′1(mess)。如果新的哈希值一h
′1(mess

)与解密获得的mac

中的哈希值一h
′1(mess)不相等,则文件验证失败,说明接收单元接收的消息mess

与发送单元发送的消息mess相比,被篡改、被植入了
其他内容或者内容丢失,接收单元放弃消息mess

。在生成关于消息mess的验证码mac之前,接收单元无法提前获知不可约多项式,从而增加了对验证码mac的安全性保证,避免了采用其他算法导致验证码mac容易被获知的风险,使得消息mess的完整性得以保证,防止消息mess被篡改、植入。
[0092]
s4:发送单元与量子ca共享一次性身份otid。
[0093]
发送单元与量子ca共享m位的二进制随机数s3和2m位的二进制随机数t3。其中,m为大于0的正整数。具体的,可以将t3看成两个m位的二进制随机数u和v组合而成,则随机数t3可以表示为t3=[u,v]其中,u和v的位数和m的位数相等,均为128位。然后,发送单元本地生成m位的二进制随机数p3,并基于该随机数p3生成不可约多项式p3(x)。生成不可约多项式p3(x)的过程参照不可约多项式p1(x)。生成不可约多项式p3(x)后,将随机数s3作为输入随机数与不可约多项式p3(x)共同生成基于线性反馈移位寄存器的哈希函数hash3。发送单元将从量子ca处获取的隐私身份pri代入哈希函数hash3生成关于该隐私身份pri的哈希值三h3(pri)。发送单元基于哈希值三h3(pri)生成一次性证书otca,该一次性证书otca表示为(pri)生成一次性证书otca,该一次性证书otca表示为然后,发送单元将生成的一次性证书otca发送至量子ca。
[0094]
量子ca接收该一次性证书,并记为一次性证书otca

。然后,量子ca通过随机数t3对一次性证书otca

进行异或运算,即进而获得哈希值三h3(pri)

和随机数p
′3。进一步地,量子ca根据随机数p
′3生成不可约多项式p
′3(x),并将与发送单元共享的随机数s3作为输入随机数与不可约多项式p
′3(x)一起生成新的基于线性反馈移位寄存器的哈希函数hash
′3。由于发送单元是从量子ca处获取隐私身份pri的,因此量子ca本地存储有发送单元的隐私身份pri。因此,当量子ca生成哈希函数hash
′3后,量子ca将本地存储的隐私身份pri代入哈希函数hash
′3获取关于该隐私身份pri的新的哈希值三h
′3(pri),然后再进行身份验证。如果新的哈希值三h
′3(pri)与哈希值三h3(pri)

相等,则身份验证通过,发送单元和量子ca获取相同的一次性身份otid。一次性身份otid表示为或者如果新的哈希值三h
′3(pri)与哈希值三h3(pri)

不相等,则身份验证失败,此时发送单元和量子ca重新执行共享一次性身份otid的步骤。
[0095]
由于一次性身份otid是通过基于线性反馈移位寄存器的哈希函数h3(pri)对隐私身份pri进行哈希运算,并进行异或加密获得。其安全性依赖于于不可约多项式p3(x)、作为输入随机数的随机数s3以及进行异或加密的随机数t3,且不可约多项式p3(x)依赖于发送单元本地生成的随机数p3,在生成一次性证书otid之前,量子ca以及其他接收方无法获知,因此能够保证一次性身份otid的安全性。而在使用一次性身份otid的情况下,能够对隐私身份pri进行隐藏,避免隐私身份pri的暴露,从而提升三方签名文件sign的安全性。另外,随机数p3、s3以及t3变量的引入,能够为一次性身份otid的一次一变化提供可能,进一步提高了三方签名文件sign的安全性,并且无需引入其他变量。而这种实现发送单元与量子ca之间共享一次性身份otid的同时,能够对发送单元的隐私身份进行身份验证,确保一次性身份与隐私身份的关联。通过对用户单元进行身份验证,能够确立一次性身份otid与用户单元的隐私身份pri的唯一对应关系,为三方签名文件的安全性提供保证。本技术所说的三方签名是指一方生成签名文件,另外两方接收签名并进行签名验签。
[0096]
s5:发送单元基于一次性身份otid和哈希值一h1(mess)生成三方签名文件sign,
并基于三方签名文件sign生成哈希值二h2(sign),然后基于该哈希值二h2(sign)生成关于三方签名文件sign的签名摘要abstr,并将三方签名文件sign以及加密的签名摘要abstr发送至接收单元。
[0097]
首先,发送单元与接收单元进行密钥协商,分别获得二进制的共享密钥x
ab
和共享密钥y
ab
;并且,发送单元和量子ca进行密钥协商,分别获取二进制的共享密钥x
ac
和共享密钥y
ac
。其中,共享密钥x
ab
和共享密钥x
ac
的字符长度相同,设为i位。i为大于0的正整数。本实施例中,i取值128位。共享密钥x
ab
和共享密钥y
ac
的字符长度相同,设为j位。共享密钥y
ab
的字符长度是共享密钥x
ab
字符长度的两倍,即j=2i。在此情况下,共享密钥y
ac
的字符长度是共享密钥x
ac
的字符长度的2倍。
[0098]
然后,发送单元将共享密钥x
ab
、共享密钥y
ab
、共享密钥x
ac
以及共享密钥y
ac
进行异或运算,得到密钥xa和密钥ya,异或运算的过程表示为:
[0099][0100][0101]
并且,发送单元本地生成二进制随机数p2,并基于该随机数p2生成不可约多项式p2(x),具体生成过程,可以参照不可约多项式p1(x)的生成过程。在生成不可约多项式p2(x)的基础上,将密钥xa作为输入随机数与不可约多项式p2(x)共同生成基于线性反馈移位寄存器的哈希函数hash2。
[0102]
再然后,发送单元基于一次性身份otid和哈希值一h1(mess)生成三方签名文件sign,三方签名文件sign具体表示为:sign=[h1(mess),otid]。该三方签名文件sign表示哈希值一h1(mess)的字符串和otid的字符串进行拼接形成。当然,实际应用中三方签名文件sign还应当包括其他必要的字段,这些必要的字段包括但不限于时间戳和/或业务号等信息。在此基础上,通过哈希函数hash2对三方签名文件sign进行哈希运算生成哈希值二h2(sign)。由此,生成关于该哈希值二h2(sign)的签名摘要abstr,签名摘要abstr具体表示为abstr=[h2(sign),p2]。
[0103]
最后,发送单元通过密钥ya对签名摘要abstr进行异或加密,签名摘要abstr加密的过程表示为:然后发送单元将三方签名文件sign和加密的签名摘要abstr通过经典的认证信道发送至接收单元。利用一次性身份otid对哈希值一h1(mess)进行签名形成三方签名文件sign,能够在签名的同时,实现一次一变化,从而提高签名的安全性。并进一步通过计算其哈希值h2(sign),然后再生成签名摘要abstr,加密后发送至接收单元,进一步为后续签名验证提升安全性。
[0104]
s6:接收单元接收三方签名文件和签名摘要,分别记为三方签名文件sign

和加密的签名摘要abstr

,然后与量子ca共同进行签名验证,如果量子ca和接收单元的签名验证均通过,则接收单元接受签名并存储接收的消息mess


[0105]
具体的,接收单元接收三方签名文件和签名摘要,分别记为三方签名文件sign

和签名摘要abstr

。此时,接收单元无法进行验证,而是先将三方签名文件sign

和加密的签名摘要abstr

连同共享密钥x
ab
以及共享密钥y
ab
一起发送至量子ca。
[0106]
量子ca接收接收单元发送的三方签名文件、加密的签名摘要、共享密钥x
ab
以及共享密钥y
ab
,分别记为三方签名文件sign

、加密的签名摘要abstr

、共享密钥x

ab
以及共享密钥y

ab
。此时,量子ca获得了4个完整的共享密钥,因此先对共享密钥x

ab
、共享密钥y

ab

共享密钥x
ac
以及共享密钥y
ac
进行异或运算,得到密钥xc和密钥yc,异或运算的过程表示为:
[0107][0108][0109]
然后,量子ca利用密钥yc对加密签名摘要abstr

进行解密:获取签名摘要[h2(sign)

,p
″2]。由此获得哈希值二h2(sign)

以及随机数p
″2。通过随机数p2″
生成不可约多项式p
″2(x),具体生成过程,此处不再赘述。最后将密钥xc作为输入随机数与不可约多项式p
″2(x)共同生成基于线性反馈移位寄存器的哈希函数hash
″2。
[0110]
最后,量子ca通过哈希函数hash
″2对接收的三方签名文件sign

进行哈希运算,生成哈希值二h
″2(sign

),并将运算获得的哈希值二h
″2(sign

)与解密获取的哈希值二h2(sign)

进行对比:如果相同,则量子ca对哈希值一h1(mess)的签名验证通过,量子ca将共享密钥x
ac
和共享密钥y
ac
连同验证通过的验证结果发送至接收单元。如果不同,量子ca的签名验证失败,量子ca直接将验证失败的签名验证结果通过经典的认证信道发送至接收单元。
[0111]
接收单元接收量子ca的签名验证结果,如果量子ca的签名验证结果为验证失败,则数字签名验签失败,接收单元拒绝接受签名,并放弃存储接收的消息mess

。如果量子ca的签名验证结果为验证通过,则接收单元接收共享密钥x
ac
和共享密钥y
ac
,分别记为共享密钥x

ac
和共享密钥y

ac
。接收单元也获得了4个完整的共享密钥。然后接收单元对共享密钥x
ab
、共享密钥y
ab
、共享密钥x

ac
以及共享密钥y

ac
进行异或运算,得到密钥xb和密钥yb,异或运算的过程表示为:
[0112][0113][0114]
接收单元利用密钥yb对加密的签名摘要abstr

进行解密:获取签名摘要[h2(sign)

,p
′2],进而获得哈希值二h2(sign)

以及随机数p
′2。通过随机数p
′2生成不可约多项式p
′2(x),并将密钥xb作为输入随机数与不可约多项式p
′2(x)共同生成基于线性反馈移位寄存器的哈希函数hash
′2。接收单元通过哈希函数hash
′2对接收的三方签名文件sign

进行哈希运算,生成哈希值二h
′2(sign

),并将哈希值二h
′2(sign

)与哈希值二h2(sign)

进行对比:如果相同,则验证通过,接收单元对哈希值一h1(mess)的签名验证通过,接收单元接受签名,并存储消息mess

,该接收的消息mess

即为发送单元发送的消息mess;否则,验证失败,接收单元拒绝签名,并放弃存储消息mess

,同时结束数字签名验签的过程或者重新执行数字签名验签的过程。在量子ca签名验证通过的基础上,由接收单元进行签名验证,如果验证成功,则表明签名验签成功,从而确保消息mess的不可抵赖性。并且,在上述数字签名验签的过程中,通过接收单元将基于一次性身份otid的三方签名文件sign发送至量子ca进行签名验证,而无需将接收的消息mess发送至量子ca,避免因消息mess内容过大导致量子ca内存过度占用,降低量子ca的存储负担,并且提升签名验证的效率,大大提高数字签名验签的敏捷性。此处所说的敏捷性是指签名验签的处理效率。
[0115]
本发明的实现,从文件验证、身份验证以及签名验证三方面采用一次一密技术以及一次一全域的哈希技术保证,能够抵御计算机算力提升所带来的攻击威胁,而为了进一
步提升整个签名验签过程的安全性,本实施例中的随机数优先采用量子随机数,使签名验签的安全性达到量子安全级别。
[0116]
应该理解的是,虽然上述实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。例如,步骤s1可以在步骤s3之前执行、可以与步骤s3同步执行甚至在步骤s3之后执行。并且,如上述实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0117]
实施例2
[0118]
本实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述实施例1中的数字签名验签方法。
[0119]
实施例3
[0120]
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例1中的数字签名验签方法。
[0121]
实施例4
[0122]
本实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述实施例1中的数字签名验签方法。
[0123]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1