本发明涉及通信技术领域,具体涉及数字签名方法及装置。
背景技术:
在计算机通信中,当接收者收到一个消息时往往需要验证消息在传输过程中有没有被篡改,有时接收者还需要确认消息发送者的身份,所有这些都可以通过数字签名来实现。数字签名可以用来证实消息确实是由发送者签发的,而且当数字签名用于存储数据或程序时,可以用来验证数据或程序的完整性。
其中,中国专利公开号为cn108737323a的专利文件中,公开了一种数字签名方法、装置及系统,包括:发送端获取共享量子密钥,共享量子密钥是发送端与签名服务器共享的量子密钥;发送端利用共享量子密钥对明文数据进行加密获得密文;发送端向签名服务器发送签名请求,签名请求包括明文数据和密文。然而,发明人发现该方案中提出使用签名服务器来进行身份的认证和签名,以保证数据传输的安全性;但是由于涉及到第三方中转数据(即,签名服务器),签名服务器需要分别和发送端以及接收端多次协商量子密钥,导致数字签名的效率较低。
技术实现要素:
有鉴于此,本发明实施例提供了一种数字签名方法及装置,以解决数字签名的效率较低的问题。
根据第一方面,本发明实施例提供了一种数字签名方法,包括:
接收签名端的第一数字签名请求,所述第一数字签名请求中携带有第一密文认证信息,所述第一密文认证信息为所述签名端对第一明文认证信息进行摘要计算后,依次利用第一私钥和第二公钥加密得到的;
利用第二私钥对所述第一密文认证信息进行解密,得到第一中间认证信息,所述第二私钥与所述第二公钥对应;
利用第一公钥对所述第一中间认证信息进行解密,得到所述签名端的第一消息摘要,并向所述签名端发送成功解密的第一应答消息,所述第一公钥与所述第一私钥对应,所述成功解密的第一应答消息用于表示身份认证成功并向所述签名端请求第一明文认证信息;
接收所述签名端发送的加密第一明文认证信息,所述加密第一明文认证信息为所述签名端利用第一共享密钥加密得到的;
利用所述第一共享密钥对所述加密第一明文认证信息进行解密,得到所述第一明文认证信息;
对所述第一明文认证信息进行摘要计算,得到第二消息摘要;
判断所述第一消息摘要与所述第二消息摘要是否相同;
当所述第一消息摘要与所述第二消息摘要相同时,确定签名成功。
本发明实施例提供的数字签名方法,对摘要计算后的第一明文认证信息采用双重加密,无需利用第三方进行身份认证,保证了认证信息安全;具体地,如果解密成功则对签名端的身份认证成功,由此发送第一明文认证信息,进行数字签名;如果解密失败,则返回解密失败的应答,签名端不会发送后续内容;通过在身份认证成功之后,签名端再发送后续内容,在保证认证信息安全的前提下,提高了数字签名的效率。
结合第一方面,在第一方面第一实施方式中,所述接收签名端的第一数字签名请求之前,还包括:
获取量子共享密钥;
获取加密第一共享密钥以及加密第一公钥;其中,所述加密第一共享密钥为所述签名端利用所述第一私钥对所述第一共享密钥加密得到的,所述加密第一公钥为所述签名端利用所述量子共享密钥对所述第一公钥加密后得到的;
利用所述量子共享密钥对所述加密第一公钥进行解密,得到所述第一公钥;
利用所述第一公钥对所述加密第一共享密钥进行解密,得到所述第一共享密钥。
本发明实施例提供的数字签名方法,由于量子共享密钥为签名端以及验证端所共有,对于加密第一公钥而言,验证端利用该量子共享密钥即可解密出第一公钥以及第一共享密钥,避免了量子密钥的多次协商,提高了数字签名的效率。
结合第一方面第一实施方式,在第一方面第二实施方式中,所述接收签名端的第一数字签名请求之前,还包括:
生成密钥对;所述密钥对包括第二私钥以及第二公钥;
采用所述量子共享密钥对所述第二公钥进行加密,以得到加密第二公钥;
将所述加密第二公钥发送给所述签名端。
本发明实施例提供的数字签名方法,采用量子共享密钥对第二公钥进行加密,由于量子的安全性,从而能够保证第二公钥传输的安全性。
结合第一方面,或第一方面第一实施方式,或第一方面第二实施方式,在第一方面第三实施方式中,还包括:
对第二明文认证信息进行摘要计算,得到第三消息摘要;
依次利用第二私钥和第一公钥对所述第三消息摘要进行加密,得到第二密文认证信息;
向所述签名端发送第二数字签名请求,所述第二数字签名请求中携带有所述第二密文认证信息;
接收所述签名端发送的成功解密的第二应答消息,所述成功解密的第二应答消息用于表示身份认证成功并向所述验证端请求所述第二明文认证信息;
将加密第二明文认证信息发送给签名端,以使得所述签名端根据所述加密第二明文认证信息以及所述第二密文认证信息确定所述验证端的数字签名是否成功;其中,所述加密第二明文认证信息为利用第二共享密钥加密得到的。
本发明实施例提供的数字签名方法,通过对第三消息摘要进行二次加密,即第二私钥对第三消息摘要进行加密,在此基础上再利用第一公钥进行二次加密,提高了第三消息摘要在传输过程中的安全性;此外,通过双向数字签名方法以同时验证签名端和验证端,防止验证方单方面的抵赖,以保证数据的真实性。
结合第一方面第三实施方式,在第一方面第四实施方式中,所述依次利用第二私钥和第一公钥对所述第三消息摘要进行加密,得到第二密文认证信息,包括:
利用所述第二私钥对所述第三消息摘要进行加密,得到第二中间认证信息;
利用所述第一公钥对所述第二中间认证信息进行加密,以得到所述第二密文认证信息。
本发明实施例提供的数字签名方法,通过双向数字签名方法以同时验证签名端和验证端,防止验证方单方面的抵赖,以保证数据的真实性。
结合第一方面第四实施方式,在第一方面第五实施方式中,还包括:
生成第二共享密钥;
利用所述第二私钥对所述第二共享密钥进行加密,得到加密第二共享密钥;
将所述加密第二共享密钥发送给所述签名端。
根据第二方面,本发明实施例还提供了一种数字签名装置,包括:
第一接收模块,用于接收签名端的第一数字签名请求,所述第一数字签名请求中携带有第一密文认证信息,所述第一密文认证信息为所述签名端对第一明文认证信息进行摘要计算后,依次利用第一私钥和第二公钥加密得到的;
第一解密模块,用于利用第二私钥对所述第一密文认证信息进行解密,得到第一中间认证信息,所述第二私钥与所述第二公钥对应;
第二解密模块,用于利用第一公钥对所述第一中间认证信息进行解密,得到所述签名端的第一消息摘要,并向所述签名端发送成功解密的第一应答消息,所述第一公钥与所述第一私钥对应,所述成功解密的第一应答消息用于表示身份认证成功并向所述签名端请求第一明文认证信息;
第二接收模块接收所述签名端发送的加密第一明文认证信息,所述加密第一明文认证信息为所述签名端利用第一共享密钥加密得到的;
第三解密模块,用于利用所述第一共享密钥对所述加密第一明文认证信息进行解密,得到所述第一明文认证信息;
摘要模块,用于对所述第一明文认证信息进行摘要计算,得到第二消息摘要;
判断模块,用于判断所述第一消息摘要与所述第二消息摘要是否相同;
确定模块,用于当所述第一消息摘要与所述第二消息摘要相同时,确定签名成功。
本发明实施例提供的数字签名装置,对摘要计算后的第一明文认证信息采用双重加密,无需利用第三方进行身份认证,保证了认证信息安全;具体地,如果解密成功则对签名端的身份认证成功,由此发送第一明文认证信息,进行数字签名;如果解密失败,则返回解密失败的应答,签名端不会发送后续内容;通过在身份认证成功之后,签名端再发送后续内容,在保证认证信息安全的前提下,提高了数字签名的效率。
根据第三方面,本发明实施例还提供了一种电子设备,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行本发明第一方面,或第一方面任一项实施方式中所述的数字签名方法。
根据第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行本发明第一方面,或第一方面任一项实施方式中所述的数字签名方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的数字签名方法的流程图;
图2是根据本发明实施例的数字签名方法的流程图;
图3是根据本发明实施例的数字签名公钥交换结构图;
图4是根据本发明实施例的数字签名方法的流程图;
图5是根据本发明实施例的数字签名方法的流程图;
图6是根据本发明实施例的数字签名装置的结构框图;
图7是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的数字签名方法,是在签名端与验证端之间进行数字签名的验证。数字签名可以是验证端对签名端的验证,也可以是签名端对验证端的验证,也可以是签名端与验证端双方的验证。
此外,对本发明实施例中所涉及的密钥具体说明如下:
(1)第一私钥与第一公钥对应,为签名端所有;
(2)第二私钥与第二公钥对应,为验证端所有;
(3)第一共享密钥为对称密钥,为签名端所有;
(4)第二共享密钥为对称密钥,为验证端所有;
(5)量子共享密钥为签名端与验证端所共有。
上述的第一公钥、第一私钥、第二公钥、第二私钥、第一共享密钥、第二共享密钥以及量子共享密钥在每次数字签名时都会更新,以保证密钥的安全性。
根据本发明实施例,提供了一种数字签名方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种数字签名方法,可用于电子设备中,如手机、平板电脑等,图1是根据本发明实施例的数字签名方法的流程图,如图1所示,该流程包括如下步骤:
s101,接收签名端的第一数字签名请求。
其中,所述第一数字签名请求中携带有第一密文认证信息,第一密文认证信息为签名端对第一明文认证信息进行摘要计算后,依次利用第一私钥和第二公钥加密得到的。
具体地,数字签名的验证是在验证端与签名端之间,即端与端之间,不涉及第三方,因此验证端所获取到的第一数字签名请求为签名端所发送的。在第一数字签名请求中所携带的第一密文认证信息是签名端利用第一私钥对摘要计算后的第一明文认证信息进行第一次加密,得到第一中间认证信息;再利用第二公钥对第一中间认证信息进行第二次加密,得到第一密文认证信息。可选地,第二公钥可以事先验证端发送给签名端的,也可以是在进行数字签名之前,签名端与验证端协商出的,或是通过签名端通过其他方式获得的。
其中,摘要计算后的第一明文认证信息称之为第一消息摘要,利用第一私钥对第一消息摘要加密后,得到第一中间认证信息,利用第二公钥对第一中间认证信息加密后,得到第一密文认证信息。用于摘要计算的消息摘要函数可以是md5,也可以是sha-1,也可以是sm3等等。
在加密时所采用的加密算法可以是国密算法,也可以是其他加密算法,在此并不做任何限定。第一明文认证信息可以是签名端所生成的预设长度的字符、数字或其组合等等,在此并不限定第一明文认证信息的形式。
s102,利用第二私钥对第一密文认证信息进行解密,得到第一中间认证信息。
其中,第二私钥与第二公钥对应。请参见s101中第一密文认证信息的形成过程,因此采用与第二公钥对应的第二私钥对第一密文认证信息进行解密,即可得到第一中间认证信息。
s103,利用第一公钥对第一中间认证信息进行解密,得到签名端的第一消息摘要,并向签名端发送成功解密的第一应答消息。
其中,第一公钥与第一私钥对应,所述成功解密的第一应答消息用于表示身份认证成功并向签名端请求第一明文认证信息。请参见s101中第一密文认证信息的形成,因此采用与第一私钥对应的第一公钥对第一中间认证信息进行解密,即可得到第一消息摘要。可选地,第一公钥可以是签名端发送给验证端的,也可以是在进行数字签名之前,签名端与验证端协商得到的,或者是验证端通过其他方式获得的。
具体地,验证端若能够成功解密得到第一消息摘要,则向签名端发送成功解密的第一应答消息,后续签名端在接收到第一应答消息后,向验证端发送加密第一明文认证信息;验证端若无法成功解密,则会报错,停止数字签名的验证,不再进行后续步骤。
s104,接收签名端发送的加密第一明文认证信息。
其中,所述加密第一明文认证信息为签名端利用第一共享密钥加密得到的。验证端在s103中进行身份认证成功后,向签名端发送第一应道消息,告知签名端可以发送第一明文认证信息,那么验证端即可接收到签名端发送的加密第一明文认证信息。
s105,利用第一共享密钥对加密第一明文认证信息进行解密,得到第一明文认证信息。
验证端在接收到签名端发送的加密第一明文认证信息之后,相应地利用第一共享密钥进行解密,即可得到第一明文认证信息。
可选地,第一共享密钥可以是签名端发送给验证端的,也可以是签名端与验证端协商得到的,或者是验证端通过其他方式获得的。
s106,对第一明文认证信息进行摘要计算,得到第二消息摘要。
验证端利用相同的消息摘要函数对第一明文认证信息进行摘要计算后,得到第二消息摘要。其中,第一消息摘要是签名端对第一明文认证信息进行摘要计算后得到的,第二消息摘要是验证端对解密后的加密第一明文认证信息利用同样的摘要计算方法得到的。
s107,判断第一消息摘要与第二消息摘要是否相同。
验证端在得到第二消息摘要之后,将第二消息摘要与第一消息摘要进行对比,以确定所获取到的第一消息摘要与验证端所形成的第二消息摘要是否相同当第一消息摘要与第二消息摘要相同时,执行s108;否则,确定签名端的数字签名失败。
s108,确定签名成功。
本实施例提供的数字签名方法,对摘要计算后的第一明文认证信息采用双重加密,无需利用第三方进行身份认证,保证了认证信息安全;具体地,如果解密成功则对签名端的身份认证成功,由此发送第一明文认证信息,进行数字签名;如果解密失败,则返回解密失败的应答,签名端不会发送后续内容;通过在身份认证成功之后,签名端再发送后续内容,在保证认证信息安全的前提下,提高了数字签名的效率。
在本实施例中还提供了一种数字签名方法,可用于电子设备中,如手机、平板电脑等,图2是根据本发明实施例的数字签名方法的流程图,如图2所示,该流程包括如下步骤:
s201,获取量子共享密钥。
签名端以及验证端是通过量子密钥机获取量子共享密钥的。其中,签名端以及验证端可以是从同一个量子密钥机中获取量子共享密钥。
具体地,如图3所示,签名端以及验证端向量子密钥机发起量子密钥请求,量子密钥机在接收到该量子密钥请求之后,分别向签名端以及验证端分发量子密钥,该量子密钥用于后续对公钥进行加解密。其中,在本发明实施例中将该量子密钥称之为量子共享密钥。
s202,获取加密第一公钥以及加密第一共享密钥。
其中,所述加密第一共享密钥为签名端利用第一私钥对第一共享密钥加密得到的,所述加密第一公钥为签名端利用量子共享密钥对第一公钥加密后得到的。
具体地,如上文所述,验证端以及签名端在每次需要进行数字签名验证时,可以向量子加密机请求量子密钥,量子加密机向验证端以及签名端分配相同的量子共享密钥,以用于对各自所产生的公钥进行加密。
验证端所获取到的加密第一公钥是签名端采用量子共享密钥对第一公钥加密后得到的;验证端所获取到的加密第一共享密钥是签名端采用第一私钥对其所产生的第一共享密钥进行加密得到的,所述的第一共享密钥用于在一次数字签名验证中对所有认证信息的加密,即同一次数字签名验证中签名端可能需要向验证端进行多次认证信息的发送,而签名端所发送的所有认证信息都可以采用第一共享密钥进行加密。
例如,量子共享密钥表示为kq,签名端所生成的一对密钥kd,即kd=(第一公钥,第一私钥),可以表示为kd=(kdpb,kdpv);通过量子共享密钥kq对第一公钥进行加密,所得到的加密第一公钥可以表示为c1=e(kdpb,kq);第一共享密钥可以表示为kdsym,加密第一共享密钥可以表示为c9=e(kdsym,kdpv)。
s203,利用量子共享密钥对加密第一公钥进行解密,得到第一公钥。
由于加密第一公钥为量子共享密钥对第一公钥加密后得到的,因此,验证端采用量子共享密钥对加密第一公钥进行解密,即可得到第一公钥。
s204,利用第一公钥对加密第一共享密钥进行解密,得到第一共享密钥。
由于加密第一共享密钥为第一私钥对第一共享密钥加密后得到的,因此,验证端在得到第一公钥之后,采用第一公钥对加密第一共享密钥进行解密即可得到第一共享密钥。
s205,生成密钥对。
其中,所述密钥对包括第二私钥以及第二公钥。
例如,验证端生成一对密钥kc,即kc=(第二公钥,第二私钥),可以表示为kc=(kcpb,kcpv)。
s206,采用量子共享密钥对第二公钥进行加密,以得到加密第二公钥。
验证端采用量子加密机所分配的量子共享密钥对第二公钥进行加密,所得到的加密第二公钥可以表示为c2=e(kcpb,kq)。其中,加密所采用的加密算法可以是国密算法,也可以是其他加密算法;在本实施例用优选国密算法。
s207,将加密第二公钥发送给签名端。
验证端在得到加密第二公钥之后,将加密第二公钥发送给签名端,以便于签名端利用该第二公钥对第一消息摘要进行加密。
s208,接收签名端的第一数字签名请求。
例如,签名端采用国密算法sm3摘要算法,对第一明文认证信息m0进行消息摘要,得到md0,目的防止签名端认证数据被篡改,保证认证数据的完整性。其中,第一中间认证信息可以表示为c4=e(md0,kdpv),第一密文认证信息可以表示为c5=e(c4,kcpb)。
其余详细请参见图1所示实施例的s101,在此不再赘述。
s209,利用第二私钥对第一密文认证信息进行解密,得到第一中间认证信息。
其中,第二私钥与第二公钥对应。详细请参见图1所示实施例的s102,在此不再赘述。
s210,利用第一公钥对第一中间认证信息进行解密,得到所述签名端的第一消息摘要,并向所述签名端发送成功解密的第一应答消息。详细请参见图1所示实施例的s103,在此不再赘述。
s211,接收签名端发送的加密第一明文认证信息。
其中,所述加密第一明文认证信息为签名端利用第一共享密钥加密得到的。例如,签名端所生成的第一明文认证信息可以表示为m0,加密第一明文认证信息可以表示为c3=e(m0,kdsym)。
s212,利用第一共享密钥对加密第一明文认证信息进行解密,得到第一明文认证信息。
由于加密第一明文认证信息为第一共享密钥对第一明文认证信息进行加密后得到的,因此,验证端采用第一共享密钥进行解密即可得到的第一明文认证信息,该第一明文认证信息为签名端所产生的。
s213,对第一明文认证信息进行摘要计算,得到第二消息摘要。
验证端采用与签名端形成第一消息摘要的消息摘要函数对第一明文认证信息进行消息摘要,得到第二消息摘要md'0。例如,签名端采用sm3摘要算法对第一明文认证信息进行消息摘要得到第一消息摘要,验证端在解密得到第一明文认证信息之后,同样采用sm3摘要算法对第一明文认证信息进行消息摘要,得到第二消息摘要md'0。因此,第一消息摘要md0为签名端所形成的,而第二消息摘要md'0为验证端所形成的;且第一消息摘要md0以及第二消息摘要md'0都是基于第一明文认证信息所形成的。
s214,判断第一消息摘要与所述第二消息摘要是否相同。
验证端对比第一消息摘要md0与第二消息摘要md'0,判断两者是否相同。当第一消息摘要md0与第二消息摘要md'0相等时,执行s215;否则,确定签名端的数字签名失败。
s215,确定签名端的数字签名成功。
在第一明文认证信息的基础上得到第二消息摘要md'0,与从签名端获取到的第一消息摘要进行对比,能够验证信息的完整性。
与图1所示实施例相比,本实施例提供的数字签名方法,由于量子共享密钥为签名端以及验证端所共有,对于加密第一公钥而言,验证端利用该量子共享密钥即可解密出第一公钥以及第一共享密钥,避免了量子密钥的多次协商,提高了数字签名的效率;此外,采用量子共享密钥对第二公钥进行加密,由于量子的安全性,从而能够保证第二公钥传输的安全性。
在本实施例中提供了一种数字签名方法,可用于电子设备中,如手机、平板电脑等,图4是根据本发明实施例的数字签名方法的流程图,如图4所示,该流程包括如下步骤:
s301,获取量子共享密钥。详细请参见图2所示实施例的s201,在此不再赘述。
s302,获取加密第一公钥以及加密第一共享密钥。
其中,所述加密第一共享密钥为签名端利用第一私钥对第一共享密钥加密得到的,所述加密第一公钥为签名端利用量子共享密钥对第一公钥加密后得到的。加密第一公钥以及加密第一共享密钥为签名端发送给验证端的,详细请参见图2所示实施例的s202,在此不再赘述。
s303,利用量子共享密钥对加密第一公钥进行解密,得到第一公钥。详细请参见图2所示实施例的s203,在此不再赘述。
s304,利用第一公钥对加密第一共享密钥进行解密,得到第一共享密钥。详细请参见图2所示实施例的s204,在此不再赘述。
s305,生成密钥对。详细请参见图2所示实施例的s205,在此不再赘述。
s306,采用量子共享密钥对第二公钥进行加密,以得到加密第二公钥。详细请参见图2所示实施例的s206,在此不再赘述。
s307,将加密第二公钥发送给签名端。详细请参见图2所示实施例的s207,在此不再赘述。
s308,接收签名端的第一数字签名请求。详细请参见图2所示实施例的s208,在此不再赘述。
s309,利用第二私钥对第一密文认证信息进行解密,得到第一中间认证信息。
其中,第二私钥与第二公钥对应。详细请参见图2所示实施例的s209,在此不再赘述。
s310,利用第一公钥对第一中间认证信息进行解密,得到所述签名端的第一消息摘要,并向所述签名端发送成功解密的第一应答消息。详细请参见图2所示实施例的s210,在此不再赘述。
s311,接收签名端发送的加密第一明文认证信息。详细请参见图2所示实施例的s211,在此不再赘述。
s312,利用第一共享密钥对加密第一明文认证信息进行解密,得到第一明文认证信息。详细请参见图2所示实施例的s212,在此不再赘述。
s313,对第一明文认证信息进行摘要计算,得到第二消息摘要。详细请参见图2所示实施例的s213,在此不再赘述。
s314,判断第一消息摘要与所述第二消息摘要是否相同。详细请参见图2所示实施例的s214,在此不再赘述。
s315,确定签名端的数字签名成功。详细请参见图2所示实施例的s215,在此不再赘述。
s316,生成第二共享密钥。
其中,第二共享密钥为验证端所生成的,用于在依次数字签名验证中对所有认证信息的加密,即同一次数字签名验证中验证端可能需要向签名端进行多次认证信息的发送,而验证端所发送的所有认证信息都可以采用第二共享密钥进行加密。
验证端采用该第二共享密钥对第二明文认证信息进行加密,第二明文认证信息可以是验证端所生成的预设长度的字符、数字或其组合等等,在此并不限定第二明文认证信息的形式。
第二共享密钥可以表示为kcsym,第二明文认证信息可以表示为m1,加密第二明文认证信息可以表示为c6=e(m1,kcsym)。
s317,利用第二私钥对第二共享密钥进行加密,得到加密第二共享密钥。
验证端利用第二私钥kcpv对第二共享密钥kcsym进行加密,得到加密第二共享密钥c10,并将c10发送到签名端。
s318,将加密第二共享密钥发送给签名端。
验证端在得到加密第二共享密钥之后,将加密第二共享密钥发送给签名端,以便于签名端利用第二共享密钥对加密第二明文认证信息进行解密。
s319,对第二明文认证信息进行摘要计算,得到第三消息摘要。
验证端采用消息摘要算法对所生成的第二明文认证信息进行消息摘要,得到第三消息摘要,其中,消息摘要函数可以是md5,也可以是sha-1,也可以是sm3等等。
例如,验证端采用国密sm3摘要算法,对第二明文认证信息m1进行消息摘要,得到md1,目的防止验证端认证数据被篡改,保证验证端认证数据的完整性。
s320,依次利用第二私钥和第一公钥对所述第三消息摘要进行加密,得到第二密文认证信息。
验证端采用第二私钥以及第一公钥对第三消息摘要进行二次加密,得到第二密文认证信息,具体地,包括以下步骤:
s3201,利用第二私钥对第三消息摘要进行加密,得到第二中间认证信息。
验证端采用第二私钥kcpv对第三消息摘要md1进行数字签名,得到第二中间认证信息c7,可以表示为c7=e(md1,kcpv)。
s3202,利用第一公钥对第二中间认证信息进行加密,以得到第二密文认证信息。
验证端采用第一公钥kdpb对第二中间认证信息c7进行加密,得到加密得让数字签名c8,可以表示为c8=e(c7,kdpb)。
s321,向签名端发送第二数字签名请求。
其中,所述第二数字签名请求中携带有第二密文认证信息。验证端向签名端发送第二数字签名请求,用于签名端对验证端进行数字签名确认。
s322,接收签名端发送的成功解密的第二应答消息。
其中,所述成功解密的第二应答消息用于表示身份认证成功并向所述验证端请求第二明文认证信息。
签名端在向验证端发送成功解密的第二应答消息之前,需要对验证端的身份进行验证,只有在验证成功之后,才会向验证端发送成功解密的第二应当消息。关于签名端对验证端身份的具体确认,请参见图2所示实施例的s209-s210,在此不再赘述。
s323,将加密第二明文认证信息发送给签名端,以使得所述签名端根据加密第二明文认证信息以及第二密文认证信息确定验证端的数字签名是否成功。
其中,所述加密第二明文认证信息为利用第二共享密钥加密得到的。
具体地,验证端将加密第二明文认证信息c6以及第二密文认证信息c7发送给签名端,签名端根据加密第二明文认证信息以及第二密文认证信息确定验证端的数字签名是否成功的过程,请参见图2所示实施例的s212-s215,在此不再赘述。
与图2所示实施例相比,本实施例提供的数字签名方法,通过双向数字签名方法以同时验证签名端和验证端,防止验证方单方面的抵赖,以保证数据的真实性。
作为图2所示实施例的一个具体应用实例,以验证端(验证端)对签名端(签名端)的数字签名验证为例,该数字签名方法包括:
(1)对于签名端
签名端生成密钥对kd=(kdpb,kdpv),形成第一明文认证信息m0,签名端采用sm3摘要算法对第一明文认证信息m0进行信息摘要,得到第一消息摘要md0。签名端采用第一私钥kdpv对第一消息摘要进行数字签名,得到第一中间认证信息c4=e(md0,kdpv),采用第二公钥kcpb对第一中间认证信息进行加密,得到第一密文认证信息c5=e(c4,kcpb),将第一密文认证信息c5发送给验证端。
签名端在接收到验证端发送的成功解密的第一应答消息之后,采用第一公钥kdpb对第一明文认证信息m0进行加密,形成加密第一明文认证信息c3=e(m0,kdsym)发送给验证端。
(2)对于验证端
验证端采用第二私钥kcpv对第一密文认证信息c5进行解密,得到第一中间认证信息;再利用第一公钥kdpb对第一中间认证信息进行解密,得到第一消息摘要md0。若能够正确解密得到第一消息摘要md0,则向签名端发送成功解密的第一应答消息。若不能解密得到第一消息摘要md0,则表示此时签名端的身份认证失败,对于签名端的数字签名结束。
验证端向签名端发送成功解密的第一应答消息之后,接收签名端发送的加密第一明文认证信息c3,验证端对加密第一明文认证信息c3解密后进行信息摘要,得到第二消息摘要md1。
验证端对比第一消息摘要md0与第二消息摘要md'0,当第一消息摘要md0与第二消息摘要md'0相同时,确定签名端的数字签名成功;当第一消息摘要md0与第二消息摘要md'0不相同时,确定签名端的数字签名失败。
作为图4所示实施例的一个具体应用实例,以验证端与签名端进行双向数字签名验证为例,如图5所示,该数字签名方法包括:
s401,签名端将加密第一公钥c1发送给验证端
首先,签名端和验证端通过经典网络分别连接到量子密钥机上,通过量子密钥机量子密钥分配qkd技术,使得签名端和验证端获取到相同的量子共享密钥kq。
其次,签名端在每次进行数字签名时,会随机生成一对密钥kd=(kdpb,kdpv),采用国密sm2公钥算法,通过量子共享密钥kq对第一公钥kdpb进行sm4加密,得到c1=e(kdpb,kq),并将c1发送到验证端侧。
s402,验证端将加密第二公钥c2发送给签名端
同样,每次进行数字签名时,验证端随机生成一对密钥kc=(kcpb,kcpv),采用sm2公钥算法,通过量子共享密钥kq对第二公钥kcpb进行sm4加密,得到c2=e(kcpb,kq),并将c2发送到签名端侧。
签名端和验证端收到签名端发送的加密后的公钥c2以及c1,通过量子共享密钥kq对其进行解密,得到签名端的公钥kcpb以及kdpb。至此,签名端和验证端完成公钥的安全交换。
s403,签名端将第一密文认证信息c5发送给验证端
签名端采用国密sm3摘要算法,对第一明文认证信息m0进行消息摘要,得到第一消息摘要md0。然后用第一私钥kdpv对md0进行数字签名,得到第一中间认证信息c4=e(md0,kcpv),最后用验证端第二公钥kcpb对c4进行加密,得到第一密文认证信息c5,将c5发送到验证端。
接着,验证端收到c5后,先用第二私钥kcpv解密,得到第一中间认证信息c4,然后再用签名端第一公钥kdpb进行解密,得到签名端第一消息摘要md0。解密成功得到第一消息摘要md0说明此消息数据确实由签名端发送。
s404,验证端向签名端发送成功解密的第一应道消息。
s405,签名端将加密第一明文认证信息c3发送给验证端
下面,签名端对将要发送的第一明文认证信息m0,m0内容为用户名和密码。通过签名端随机产生第一共享密钥kdsym对m0进行sm4加密,得到加密之后的数据,即加密第一明文认证信息c3=e(m0,kdsym),并将c3发送到验证端。
s406,签名端将加密第一共享密钥c9发送给验证端
签名端使用第一私钥kdpv对第一共享密钥kdsym进行加密,得到加密第一共享c9,并将c9发送到验证端。
s407,验证端对签名端进行数字签名确认
验证端收到c9后,用签名端第一公钥kdpb进行解密,得到第一共享密钥kdsym,然后对c3进行解密,得到签名端第一认证消息m0。利用国密sm3算法,对m0进行消息摘要,得到第二消息摘要md'0,对比md0和md'0是否相等,如果相同,那么消息没有被篡改,确保数字签名过程中数据完整性;否则,数据被篡改。
s408,验证端将第二密文认证信息c8发送给签名端
同样,验证端采用国密sm3摘要算法,对第二明文认证信息m1进行消息摘要,得到第三消息摘要md1。然后用验证端第二私钥kcpv对md1进行数字签名,得到第二加密数据c7=e(md1,kdpv),最后用签名端第一公钥kdpb对c7进行加密,得到第二密文认证信息c8,将c8发送到签名端。
签名端收到c8后,先用第一私钥kdpv解密,得到第二加密数据c7,然后再用验证端第二公钥kcpb进行解密,得到验证端第三消息摘要md1。解密成功得到第三消息摘要md1说明,此消息数据确实由验证端发送。
s409,签名端向验证端发送成功解密的第二应答消息
s410,验证端将加密第二明文认证信息c6发送给签名端
验证端对将要发送的认证信息m1,m1内容为用户名和密码。通过验证端随机产生第二共享密钥kcsym对m1进行sm4加密,得到加密之后的数据c6=e(m1,kcsym),并将c6发送到签名端。
s411,验证端将加密第二共享密钥c10发送给签名端
验证端使用第二私钥kcpv对第二共享密钥kcsym进行加密,得到加密第二共享密钥c10,并将c10发送到签名端。
s412,签名端对验证端进行数字签名确认
签名端收到c10后,用验证端第二公钥kcpb进行解密,得到第二共享密钥kcsym,然后对c6进行解密,得到验证端第二认证消息m1。利用国密sm3算法,对m1进行消息摘要,得到第四消息摘要md1',对比md1和md1'是否相等,如果相同,那么消息没有被篡改,确保数字签名过程中数据完整性;否则,数据被篡改。
本实施例提供的数字签名方法,利用量子qkd得到量子共享密钥对数字签名中的公钥进行加密,使得公钥在网络上加密传输,第三方没有量子共享密钥无法破解,即使被截获篡改消息,也同样没有量子共享密钥对数据进行加密,验证端也会解密失败,无法完成数字签名的认证。此外,利用国密算法sm2、sm3和sm4进行加密,相比rsa和aes安全性更高。进一步地,结合国密算法和量子密钥实现签名方和验证方端到端的双向认证,并保证认证消息的完整性,防止认证消息被篡改。
在本实施例中还提供了一种数字签名装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种数字签名装置,如图6所示,包括:
第一接收模块51,用于接收签名端的第一数字签名请求,所述第一数字签名请求中携带有第一密文认证信息,所述第一密文认证信息为所述签名端对第一明文认证信息进行摘要计算后,依次利用第一私钥和第二公钥加密得到的。
第一解密模块52,用于利用第二私钥对所述第一密文认证信息进行解密,得到第一中间认证信息,所述第二私钥与所述第二公钥对应。
第二解密模块53,用于利用第一公钥对所述第一中间认证信息进行解密,得到所述签名端的第一消息摘要,并向所述签名端发送成功解密的第一应答消息,所述第一公钥与所述第一私钥对应,所述成功解密的第一应答消息用于表示身份认证成功并向所述签名端请求第一明文认证信息。
第二接收模块54,用于接收所述签名端发送的加密第一明文认证信息,所述加密第一明文认证信息为所述签名端利用第一共享密钥加密得到的。
第三解密模块55,用于利用所述第一共享密钥对所述加密第一明文认证信息进行解密,得到所述第一明文认证信息。
摘要模块56,用于对所述第一明文认证信息进行摘要计算,得到第二消息摘要。
判断模块57,用于判断所述第一消息摘要与所述第二消息摘要是否相同。
确定模块58,用于当所述第一消息摘要与所述第二消息摘要相同时,确定签名成功。
本实施例中的数字签名装置是以功能单元的形式来呈现,这里的单元是指asic电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本发明实施例还提供一种电子设备,具有上述图6所示的数字签名装置。
请参阅图7,图7是本发明可选实施例提供的一种电子设备的结构示意图,如图7所示,该电子设备可以包括:至少一个处理器61,例如cpu(centralprocessingunit,中央处理器),至少一个通信接口63,存储器64,至少一个通信总线62。其中,通信总线62用于实现这些组件之间的连接通信。其中,通信接口63可以包括显示屏(display)、键盘(keyboard),可选通信接口63还可以包括标准的有线接口、无线接口。存储器64可以是高速ram存储器(randomaccessmemory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器64可选的还可以是至少一个位于远离前述处理器61的存储装置。其中处理器61可以结合图6所描述的装置,存储器64中存储应用程序,且处理器61调用存储器64中存储的程序代码,以用于执行上述任一方法步骤。
其中,通信总线62可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。通信总线62可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器64可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器也可以包括非易失性存储器(英文:non-volatilememory),例如快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solid-statedrive,缩写:ssd);存储器64还可以包括上述种类的存储器的组合。
其中,处理器61可以是中央处理器(英文:centralprocessingunit,缩写:cpu),网络处理器(英文:networkprocessor,缩写:np)或者cpu和np的组合。
其中,处理器61还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,缩写:asic),可编程逻辑器件(英文:programmablelogicdevice,缩写:pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,缩写:fpga),通用阵列逻辑(英文:genericarraylogic,缩写:gal)或其任意组合。
可选地,存储器64还用于存储程序指令。处理器61可以调用程序指令,实现如本申请图1至图4实施例中所示的数字签名方法。
本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的数字签名方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。