一种数字签名、验证方法、装置及系统与流程

文档序号:24734503发布日期:2021-04-20 18:55阅读:106来源:国知局
一种数字签名、验证方法、装置及系统与流程

1.本发明涉及数据加密技术领域,具体涉及一种数字签名、验证方法、装置及系统。


背景技术:

2.随着互联网技术的飞速发展,为了保证安全性、公平性,签名验证技术也越来越多的应用到电商交易、文件审批上。
3.现有技术中申请号为201410616744.6的发明专利公开了一种数据签名方法、签名验证方法、数据签名设备及验证服务器,数据签名方法包括:当接收到第一签名请求时,提取其中的签名标识及待签名数据,生成待签名数据的摘要信息,并在预置的多个签名证书中,确定与签名标识对应的目标签名证书,利用目标签名证书,对摘要信息进行签名,从而获得第一签名数据,将第一签名数据及签名标识发往验证服务器,以供验证服务器对第一签名数据进行验证。可见,本发明可通过签名标记识别待签名数据,在一定程度上保证签名的安全性。即使签名标识被篡改,签名标识发送到验证服务器以验证是否存在骗签情况。该发明预置多个签名证书,至少包括交易签名证书及普通签名证书,分别对交易数据及普通数据签名。
4.现有技术中,利用哈希算法对明文以及标识进行哈希得到摘要信息,再使用签名证书对得到的摘要信息进行签名处理,本质上还是使用非对称加密算法进行签名,但是,sm9加密效率低,对硬件要求高,因此,现有技术存在签名效率较低的技术问题。


技术实现要素:

5.本发明所要解决的技术问题在于如何提供一种数字签名、验证方法、装置及系统以提高签名效率。
6.本发明通过以下技术手段实现解决上述技术问题的:
7.第一方面,本发明提供了一种数字签名方法,应用于用户端,所述用户端预先具有sm9私钥,所述方法包括:
8.获取用户端的动态标识,使用sm9私钥与所述动态标识的结合作为输入,使用sm3算法得到第一哈希结果;
9.将第一哈希结果作为密钥,使用sm4算法对明文进行加密,得到密文;
10.将sm9私钥、密文、时间戳的组合作为输入,使用sm3算法得到第二哈希结果,将所述第二哈希结果作为密文的加密签名;
11.将密文的加密签名、密文、动态标识、用户端的用户信息以及时间戳发送至应用系统,以使应用系统对密文的加密签名进行验证。
12.可选的,所述动态标识包括:
13.动态生成的随机数、预设字符集合中选择出的设定数量的子集合中的一种或组合。
14.第二方面,本发明还提供了一种数字签名验证方法,应用于应用系统,所述方法包
括:
15.接收用户端发送的加密签名、密文、动态标识、用户端的用户信息以及时间戳,将密文、用户端的用户信息以及时间戳发送至加密机,以使加密机用户端的用户信息查询得到sm9私钥,根据密文、查询得到的sm9私钥以及时间戳生成验证签名,并将所述验证签名发送至应用系统;
16.比对验证签名与所述加密签名是否一致;
17.若是,将所述动态标识发送至加密机,以使加密机利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统;
18.接收第三哈希值,将第三哈希值作为密钥解密所述密文,得到明文。
19.可选的,在执行所述将所述动态标识发送至加密机步骤时,所述方法还包括:
20.将用户信息发送至加密机,以使加密机根据所述用户信息查询得sm9私钥。
21.第三方面,本发明还提供了一种数字签名验证方法,应用于加密机,所述加密机中预先设有若干个用户信息sm9私钥对,所述方法包括:
22.接收应用系统发送的密文、用户端的用户信息以及时间戳,根据用户信息查询得到的sm9私钥,根据密文、查询得到的sm9私钥以及时间戳生成验证签名;并将所述验证签名发送至应用系统,以使应用系统比对验证签名与所述加密签名是否一致;
23.在比对验证签名与所述签名一致的情况下,接收动态标识;
24.利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统,以使应用系统将第三哈希值作为密钥解密所述密文,得到明文。
25.第四方面,本发明提供了一种数字签名装置,应用于用户端,所述用户端预先具有sm9私钥,所述装置包括:
26.获取模块,用于获取用户端的动态标识,使用sm9私钥与所述动态标识的结合作为输入,使用sm3算法得到第一哈希结果;
27.加密模块,用于将第一哈希结果作为密钥,使用sm4算法对明文进行加密,得到密文;
28.签名模块,用于将sm9私钥、密文、时间戳的组合作为输入,使用sm3算法得到第二哈希结果,将所述第二哈希结果作为密文的加密签名;
29.第一发送模块,用于将密文的加密签名、密文、动态标识、用户端的用户信息以及时间戳发送至应用系统,以使应用系统对密文的加密签名进行验证。
30.可选的,所述动态标识包括:
31.动态生成的随机数、预设字符集合中选择出的设定数量的子集合中的一种或组合。
32.第五方面,本发明提供了一种数字签名验证装置,应用于应用系统,所述装置包括:
33.第一接收模块,用于接收用户端发送的加密签名、密文、动态标识、用户端的用户信息以及时间戳,将密文、用户端的用户信息以及时间戳发送至加密机,以使加密机用户端的用户信息查询得到sm9私钥,根据密文、查询得到的sm9私钥以及时间戳生成验证签名,并将所述验证签名发送至应用系统;
34.比对模块,用于比对验证签名与所述加密签名是否一致,若是,触发第二发送模
块;
35.第二发送模块,用于将所述动态标识发送至加密机,以使加密机利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统;
36.第一接收模块,还用于接收第三哈希值,将第三哈希值作为密钥解密所述密文,得到明文。
37.可选的,第二发送模块,还用于:
38.将用户信息发送至加密机,以使加密机根据所述用户信息查询得sm9私钥。
39.第六方面,本发明提供了一种数字签名验证装置,应用于加密机,所述加密机中预先设有若干个用户信息sm9私钥对,所述装置包括:
40.第二接收模块,用于接收应用系统发送的密文、用户端的用户信息以及时间戳,根据用户信息查询得到的sm9私钥,根据密文、查询得到的sm9私钥以及时间戳生成验证签名;并将所述验证签名发送至应用系统,以使应用系统比对验证签名与所述加密签名是否一致;
41.第二接收模块,还用于在比对验证签名与所述签名一致的情况下,接收动态标识;
42.第三发送模块,用于利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统,以使应用系统将第三哈希值作为密钥解密所述密文,得到明文。
43.第七方面,本发明提供了一种数字签名、验证方法,所述方法包括:
44.用户端获取用户端的动态标识,使用sm9私钥与所述动态标识的结合作为输入,使用sm3算法得到第一哈希结果;将第一哈希结果作为密钥,使用sm4算法对明文进行加密,得到密文;将sm9私钥、密文、时间戳的组合作为输入,使用sm3算法得到第二哈希结果,将所述第二哈希结果作为密文的加密签名;将密文的加密签名、密文、动态标识、用户端的用户信息以及时间戳发送至应用系统;
45.应用系统接收用户端发送的加密签名、密文、动态标识、用户端的用户信息以及时间戳,将密文、用户端的用户信息以及时间戳发送至加密机;
46.加密机接收应用系统发送的密文、用户端的用户信息以及时间戳,利用sm3算法处理动态标识与查询得到的sm9私钥,生成验证签名,生成验证签名;并将所述验证签名发送至应用系统;
47.应用系统比对验证签名与所述加密签名是否一致;若是,将所述动态标识与用户端的用户信息发送至加密机;
48.加密机在比对验证签名与所述签名一致的情况下,接收动态标识;利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统;
49.应用系统接收第三哈希值,将第三哈希值作为密钥解密所述密文,得到明文。
50.第八方面,本发明提供了一种数字签名、验证系统,所述系统包括:
51.根据第四方面所述的用户端;
52.根据第五方面所述的应用系统;
53.根据第六方面所述的加密机。
54.本发明的优点在于:
55.应用本发明实施例,仅使用sm9的私钥作为sm3算法的加密对象进行签名,相对于
现有技术中使用sm9算法进行加密,如使用手机号码等公开信息作为公钥,本发明实施例无需调用sm9的加密算法,而sm3算法的运算速度远大于sm9算法,因此,提高了签名效率。
56.本发明实施例还可以在提高签名效率的同时,保证数据完整性,并且实现了客户端数据的抗抵赖性。
附图说明
57.图1为本发明实施例提供的一种数字签名方法的流程示意图;
58.图2为本发明实施例提供的一种数字签名验证方法的流程示意图;
59.图3为本发明实施例提供的一种数字签名验证方法的流程示意图;
60.图4为本发明实施例提供的一种数字签名、验证系统的架构示意图。
具体实施方式
61.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
62.本发明提供了一种数字签名、验证方法、装置及系统,下面首先就本发明实施例提供的一种数字签名方法进行介绍。
63.实施例1
64.本发明应用于数字签名、验证系统,该系统包括:用户端、应用系统以及加密机,其中,用户端与应用系统远程通信;应用系统与加密机同侧部署,二者实现近程保密通信。
65.图1为本发明实施例提供的一种数字签名方法的流程示意图,如图1所示,一种数字签名方法,应用于用户端,所述用户端预先具有sm9私钥,所述方法包括:
66.s101:获取用户端的动态标识,使用sm9私钥与所述动态标识的结合作为输入,使用sm3算法得到第一哈希结果。
67.示例性的,可以通过动态生成的随机数作为动态标识,随机数的长度可以为5位,可以为10位,可以为100位,可以为1000位。还可以从用户端中存储的预设字符集合中选择出的设定数量的字符,将这些字符组成的集合作为动态标识。
68.然后将sm9私钥与动态标识拼接,得到拼接结果:sm9+动态标识。
69.然后,使用sm3算法,例如哈希算法,hash(sm9+动态标识),得到摘要,将该摘要作为第一哈希结果。
70.在本步骤中,在第一哈希结果的生成过程中加入sm9私钥,可以保证密钥只能在用户端和加密机中产生,而且由于中间人不能制造sm9私钥,因此,本发明实施例可以在客户端以及加密机安全的情况下,实现加密系统的高度安全。
71.s102:将第一哈希结果作为密钥,使用sm4算法对明文进行加密,得到密文。
72.示例性的,将s101步骤中得到的第一哈希结果作为sm4加密算法的密钥使用,其中sm4加密算法可以为对称加密算法。
73.再使用sm4对明文进行加密:
74.sm4(明文)=密文。
75.s103:将sm9私钥、密文、时间戳的组合作为输入,使用sm3算法得到第二哈希结果,将所述第二哈希结果作为密文的加密签名。
76.将sm9私钥、密文、时间戳进行拼接得到,sm9私钥+密文+时间戳的拼接结果。
77.然后使用sm3算法对拼接结果进行摘要处理:
78.sm3(sm9私钥+密文+时间戳)=第二哈希结果,第二哈希结果即为密文的签名。
79.在实际应用中,时间戳可以为开始执行本发明实施例那一时刻的时间戳。
80.在实际应用中,sm3算法,即哈希算法具备不可逆性、伪造性低、唯一性,因此,可以保证明文数据的完整性。在本步骤中,将sm9密钥参数加入sm3生成第二哈希结果运算后,可以使得第二哈希结果与客户端的痕迹信息,即sm9私钥相对应。同时,sm9密钥是高度安全存储的,只有客户端和加密机存储,且sm9私钥具有唯一性,因此,可以在保证数据完整性的同时,实现了客户端数据的抗抵赖性。
81.s104:将密文的加密签名,即第二哈希结果;密文、动态标识、用户端的用户信息以及时间戳发送至应用系统,以使应用系统对密文的加密签名进行验证。
82.本发明实施例1中,仅使用sm9的私钥作为sm3算法的加密对象进行签名,相对于现有技术中使用sm9算法进行加密,如使用手机号码等公开信息作为公钥,本发明实施例无需调用sm9的加密算法,而sm3算法的运算速度远大于sm9算法,因此,可以在明文的安全性、完整性得到保证的情况下,极大的提高签名效率。
83.另外,本发明实施例中不涉及公钥以及私钥的传输,更加安全;动态标识是用户端使用的,用于密钥a的生成,非法分子无法将标识与密钥a对应起来,进一步的,动态标识还具有复杂可变性,如可以使用随机数,进一步提高了信息安全性。
84.而且,本发明实施例中,sm9使用的sm9私钥数据量更小,其数据量通常仅有数k容量,不会超过10k;而ca证书数据量较大,通常有几十k的容量,甚至上百k的容量,因此,本发明实施例可以更加节约内存。
85.最后,本发明实施例省去了ca证书认证中心,可以做到去中心化。
86.实施例2
87.图2为本发明实施例提供的一种数字签名验证方法的流程示意图,如图2所示,本发明实施例2是基于实施例1实现的,本发明实施例2应用于应用系统,所述方法包括:
88.s201:接收用户端发送的加密签名、密文、动态标识、用户端的用户信息以及时间戳,将密文、用户端的用户信息以及时间戳发送至加密机,以使加密机用户端的用户信息查询得到sm9私钥,根据密文、查询得到的sm9私钥以及时间戳生成验证签名,并将所述验证签名发送至应用系统。
89.用户端将密文的签名,即第二哈希结果;密文;动态标识;时间戳;用户端的用户信息,即用户的身份标识信息,发送至应用系统,应用系统接收上述信息,然后将这些信息中的用户信息、密文以及时间戳发送至加密机。
90.加密机接收到用户信息、密文以及时间戳之后,从自身中存储的若干个用户信息sm9私钥对中查询出与前述用户信息对应的用户信息sm9私钥对,进而得到加密机所接收的用户信息对应的sm9私钥。
91.利用sm3算法,sm3(户信息对应的sm9私钥+密文+时间戳),得到验证签名。
92.加密机将验证签名发送至应用系统。
93.s202:应用系统比对比对验证签名与所述加密签名是否一致。
94.如果二者一致,执行s203步骤;
95.如果二者不一致,则向用户端返回签名验证未通过的信息。
96.s203:为了降低加密机运行负载,使加密机的功能聚焦于密钥生命周期管理及密钥运算使用,在本发明实施例中,将复杂的逻辑处理过程放在应用系统中,因此,将验证签名与加密签名的一致性验证以及在一致性验证是否通过的逻辑步骤由应用系统执行。进而,在验证通过之后,应用系统将所述动态标识发送至加密机。由于加密机在s201步骤中进行了加密签名的验证,因此,加密机将查询出的sm9私钥存储在自身的缓存中,此时,加密机在接收到动态标识之后,加密机利用sm3算法处理动态标识与缓存中存储的查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统。
97.进一步的,如果同时存在大量的并发加密签名验证时,加密机中存储大量sm9会导致内存溢出,也有可能会导致数据混乱,因此,在高并发情况,如验证次数1000次/秒以上的情况下,加密机并不会将s01步骤中查询到的sm9私钥存储在缓存中,而是根据应用系统再次发送的用户信息进行再次查询,即在应用系统将所述动态标识发送至加密机的同时,应用系统还将用户信息发送至加密机;加密机从自身中存储的若干个用户信息sm9私钥对中查询得到对应的sm9私钥,然后使用该sm9私钥生成第三哈希值。
98.应用系统将动态标识发送至加密机,加密机接收到动态标识之后,使用sm3算法,例如哈希算法,hash(sm9+动态标识),得到摘要,将该摘要作为第三哈希结果。加密机并将第三哈希结果作为与用户信息对应的解密密钥发送至应用系统。
99.s204:接收第三哈希值,将第三哈希值作为密钥解密所述密文,得到明文。
100.实施例3
101.图3为本发明实施例提供的一种数字签名验证方法的流程示意图,如图3所示,本发明实施例3是基于实施例1以及实施例2实现的,本发明实施例3应用于加密机,所述加密机中预先设有若干个用户信息sm9私钥对,所述方法包括:
102.s301:接收应用系统发送的密文、用户端的用户信息以及时间戳,根据用户信息查询得到的sm9私钥,根据密文、查询得到的sm9私钥以及时间戳生成验证签名;并将所述验证签名发送至应用系统,以使应用系统比对验证签名与所述加密签名是否一致;
103.s302:在比对验证签名与所述签名一致的情况下,接收动态标识;
104.s303:利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统,以使应用系统将第三哈希值作为密钥解密所述密文,得到明文。
105.本发明实施例3的具体原理过程已经在实施例2中进行了阐述,本发明实施例在此不再赘述。
106.实施例4
107.与本发明实施例1相对应,本发明实施例4还提供了一种数字签名装置,应用于用户端,所述用户端预先具有sm9私钥,所述装置包括:
108.获取模块,用于获取用户端的动态标识,使用sm9私钥与所述动态标识的结合作为输入,使用sm3算法得到第一哈希结果;
109.加密模块,用于将第一哈希结果作为密钥,使用sm4算法对明文进行加密,得到密
文;
110.签名模块,用于将sm9私钥、密文、时间戳的组合作为输入,使用sm3算法得到第二哈希结果,将所述第二哈希结果作为密文的加密签名;
111.第一发送模块,用于将密文的加密签名、密文、动态标识、用户端的用户信息以及时间戳发送至应用系统,以使应用系统对密文的加密签名进行验证。
112.在本发明实施例的一种具体实施方式中,所述动态标识包括:
113.动态生成的随机数、预设字符集合中选择出的设定数量的子集合中的一种或组合。
114.实施例5
115.与本发明实施例1相对应,本发明实施例5还提供了一种数字签名验证装置,应用于应用系统,所述装置包括:
116.第一接收模块,用于接收用户端发送的加密签名、密文、动态标识、用户端的用户信息以及时间戳,将密文、用户端的用户信息以及时间戳发送至加密机,以使加密机用户端的用户信息查询得到sm9私钥,根据密文、查询得到的sm9私钥以及时间戳生成验证签名,并将所述验证签名发送至应用系统;
117.比对模块,用于比对验证签名与所述加密签名是否一致,若是,触发第二发送模块;
118.第二发送模块,用于将所述动态标识发送至加密机,以使加密机利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统;
119.第一接收模块,还用于接收第三哈希值,将第三哈希值作为密钥解密所述密文,得到明文。
120.在本发明实施例一种具体实施方式中,第二发送模块,还用于:
121.将用户信息发送至加密机,以使加密机根据所述用户信息查询得sm9私钥。
122.实施例6
123.与本发明实施例1相对应,本发明实施例6还提供了一种数字签名验证装置,应用于加密机,所述加密机中预先设有若干个用户信息sm9私钥对,所述装置包括:
124.第二接收模块,用于接收应用系统发送的密文、用户端的用户信息以及时间戳,根据用户信息查询得到的sm9私钥,根据密文、查询得到的sm9私钥以及时间戳生成验证签名;并将所述验证签名发送至应用系统,以使应用系统比对验证签名与所述加密签名是否一致;
125.第二接收模块,还用于在比对验证签名与所述签名一致的情况下,接收动态标识;
126.第三发送模块,用于利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统,以使应用系统将第三哈希值作为密钥解密所述密文,得到明文。
127.实施例7
128.与本发明实施例1

6相对应,本发明实施例7还提供了一种数字签名、验证方法,所述方法包括:
129.用户端获取用户端的动态标识,使用sm9私钥与所述动态标识的结合作为输入,使用sm3算法得到第一哈希结果;将第一哈希结果作为密钥,使用sm4算法对明文进行加密,得
到密文;将sm9私钥、密文、时间戳的组合作为输入,使用sm3算法得到第二哈希结果,将所述第二哈希结果作为密文的加密签名;将密文的加密签名、密文、动态标识、用户端的用户信息以及时间戳发送至应用系统;
130.应用系统接收用户端发送的加密签名、密文、动态标识、用户端的用户信息以及时间戳,将密文、用户端的用户信息以及时间戳发送至加密机;
131.加密机接收应用系统发送的密文、用户端的用户信息以及时间戳,利用sm3算法处理动态标识与查询得到的sm9私钥,生成验证签名,生成验证签名;并将所述验证签名发送至应用系统;
132.应用系统比对验证签名与所述加密签名是否一致;若是,将所述动态标识与用户端的用户信息发送至加密机;
133.加密机在比对验证签名与所述签名一致的情况下,接收动态标识;利用sm3算法处理动态标识与查询得到的sm9私钥,得到第三哈希值并将所述第三哈希值发送至应用系统;
134.应用系统接收第三哈希值,将第三哈希值作为密钥解密所述密文,得到明文。
135.实施例8
136.与本发明实施例1

7相对应,本发明实施例8还提供了一种数字签名、验证系统。图4为本发明实施例提供的一种数字签名、验证系统的架构示意图,如图4所示,所述系统包括:
137.根据实施例4所述的用户端801;
138.根据实施例5所述的应用系统802;
139.根据实施例6所述的加密机803。
140.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1