一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数字签名方法和装置、电子设备和计算机可读存储介质与流程

2022-08-13 03:41:07 来源:中国专利 TAG:


1.本技术涉及数字签名技术领域,尤其涉及一种数字签名方法和装置、电子设备和计算机可读存储介质。


背景技术:

2.随着网络技术的发展,人们越来越多地使用网络来进行日常生活和工作。特别是人们可以通过网络来传输各种文件,从而省去了随身携带大量纸质文件的需要。因此电子文档被越来越多的使用以替代纸质文档,这不仅给用户带来了便捷性,而且还节约了大量纸张的使用,有利于环保。为此,当前各个行业都在大力发展基于数字文档的无纸化电子办公。但是数字文档在具有便捷性的同时,还具有易更改性和易复制性,从而在办公场景中难以保证传输文件的唯一性,即没有被进行篡改。
3.为此,在现有技术中已经提出了数字签名技术,其可以通过对电子文档进行数字签名来实现对于可以使用该电子文档的用户的身份认证以及保证该文档的真实性的电子签名。在现有的数字签名技术中,当前用户可以以证书文件形式将签名密钥存储于便携式签名设备,例如u盘形式的签名设备中,从而用户可以使用该密钥证书用于对于通过互联网传输的电子文档进行电子签名和数字认证。例如,密钥签名证书可以采用1024位非对称数字签名算法对例如摘要数据进行加密和解密,从而实现对文件的数字签名,确保电子文件及过程的保密性、真实性、完整性和不可否认性。使用这样的密钥证书进行的处理可以包括:复位相应、数据收发、链接模式传输管理、传输检查、数据传输、传输结束处理。
4.但是,签名证书每次使用需将该便携式签名设备插入终端中才能够进行身份认证和电子签名,在使用体验上非常不便。因此,需要一种能够消除数字签名对于硬件设备的依赖,在确保签名密钥的安全性的情况下提高签名密钥的使用的便携性和安全性的技术方案。


技术实现要素:

5.本技术实施例提供一种数字签名方法和装置、电子设备和计算机可读存储介质,以解决现有技术中需要依赖于物理数字签名设备才能使用密钥进行数字签名的缺陷。
6.为达到上述目的,本技术实施例提供了一种数字签名方法,包括:
7.通过向服务器发送身份认证请求,其中,所述身份认证请求中携带有用于标识用户身份的用户标识;
8.接收所述服务器下发的身份认证响应信息,其中,所述身份认证响应信息中包含有所述服务器针对所述用户标识随机生成的第一随机数;
9.根据所述身份认证响应信息对用户输入的身份验证信息进行验证,并向所述服务器发送身份验证结果,其中,所述身份验证结果包括根据所述第一随机数以及所述用户标识生成的密钥验证请求信息;
10.接收所述服务器根据所述密钥验证请求信息进行验证的验证状态发送的第一密
钥片段;
11.将所述第一密钥片段与存储于本地的第二密钥片段进行拼接,生成签名密钥;
12.根据所述签名密钥生成针对所述第一随机数与随机生成的第二随机数的签名数据;
13.根据从所述服务器接收的所述签名数据的签名验证信息,使用所述签名密钥对目标文件进行数字签名。
14.本技术实施例还提供了一种数字签名装置,包括:
15.发送模块,用于向服务器发送身份认证请求,其中,所述身份认证请求中携带有用于标识用户身份的用户标识;
16.接收模块,用于接收所述服务器下发的身份认证响应信息,其中,所述身份认证响应信息中包含有所述服务器针对所述用户标识随机生成的第一随机数;
17.验证模块,用于根据所述身份认证响应信息对用户输入的身份验证信息进行验证,并向所述服务器发送身份验证结果,其中,所述身份验证结果包括根据所述第一随机数以及所述用户标识生成的密钥验证请求信息,
18.所述接收模块还用于接收所述服务器根据所述密钥验证请求信息进行验证的验证状态发送的第一密钥片段,并且所述数字签名装置还包括:
19.密钥生成模块,用于将所述第一密钥片段与存储于本地的第二密钥片段进行拼接,生成签名密钥;
20.签名数据生成模块,用于根据所述签名密钥生成针对所述第一随机数与随机生成的第二随机数的签名数据;
21.数字签名模块,用于根据从所述服务器接收的所述签名数据的签名验证信息,使用所述签名密钥对目标文件进行数字签名。
22.本技术实施例还提供了一种电子设备,包括:
23.存储器,用于存储程序;
24.处理器,用于运行所述存储器中存储的所述程序,所述程序运行时执行本技术实施例提供的数字签名方法。
25.本技术实施例还提供了一种计算机可读存储介质,其上存储有可被处理器执行的计算机程序,其中,该程序被处理器执行时实现如本技术实施例提供的数字签名方法。
26.本技术实施例提供的数字签名方法和装置、电子设备和计算机可读存储介质,通过用户在终端向服务器发送身份认证请求,服务器根据用户在终端上输入的身份验证信息(pin)对用户身份进行认证,在认证之后服务器将服务器上存储的第一密钥发送给终端,以与终端处存储的第二密钥进行拼接生成第三密钥,从而终端将生成的第三密钥再发送给服务器进行密钥验证,验证成功之后即允许用户在该终端上使用该第三密钥进行数字签名处理。因此,用户无需随身携带存储签名密钥的签名设备,而是可以通过当前使用的任意终端来与服务器交互进行身份认证,并且通过将服务器下发的部分密钥与终端上存储的另一部分密钥进行组合来生成最终使用的签名密钥,因此通过这样的分布式密钥存储和组合能够避免签名密钥在终端上存储时或在服务器上存储时发生泄露导致的风险,因此,能够实现与用户携带实体签名设备来防止签名密钥泄露同样或甚至更高的安全性,同时用户也无需再随身携带实体签名密钥设备才能够使用数字签名,大大提高了用户使用数字签名的便携
性。
27.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
28.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
29.图1是本技术实施例的数字签名方案的应用场景示意图;
30.图2为本技术提供的数字签名方法一个实施例的流程图;
31.图3为本技术提供的数字签名装置的一个实施例的结构示意图;
32.图4为本技术提供的电子设备实施例的结构示意图。
具体实施方式
33.下面将参照附图更详细地描述本技术的示例性实施例。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
34.实施例一
35.本技术实施例提供的方案可应用于任何具有数字签名能力的系统,例如数字签名系统等等。图1为本技术实施例提供的数字签名方案的应用场景示意图,图1所示的场景仅仅是本技术的技术方案所能够应用的场景的示例之一。
36.随着网络技术的发展,人们越来越多地使用网络来进行日常生活和工作。特别是人们可以通过网络来传输各种文件,从而省去了随身携带大量纸质文件的需要。因此电子文档被越来越多的使用以替代纸质文档,这不仅给用户带来了便捷性,而且还节约了大量纸张的使用,有利于环保。为此,当前各个行业都在大力发展基于数字文档的无纸化电子办公。但是数字文档在具有便捷性的同时,还具有易更改性和易复制性,从而在办公场景中难以保证传输文件的唯一性,即没有在传输过程中遭到篡改。
37.为此,在现有技术中已经提出了数字签名技术,其可以通过对电子文档进行数字签名来实现对于可以使用该电子文档的用户的身份认证以及保证该文档的真实性的电子签名。在现有的数字签名技术中,当前用户可以以证书文件形式将签名密钥存储于便携式签名设备,例如u盘形式的签名设备中,从而用户可以使用该签名证书用于对于通过互联网传输的电子文档进行电子签名和数字认证。例如,签名证书可以采用1024位非对称数字签名算法对例如电子文档的摘要数据进行加密和解密,以实现数字签名,确保签约电子文件及过程的保密性、真实性、完整性和不可否认性。使用这样的签名证书进行的处理可以包括:复位相应、数据收发、链接模式传输管理、传输检查、数据传输、传输结束处理。
38.但是,证书每次使用需将该便携式签名设备插入终端中才能够进行身份认证和电子签名,在使用体验上非常不便。此外,在用户使用这样的签名证书进行互联网上的电子文
件交互时,需要用户在插入有便携式签名设备的终端上输入签名证书的个人识别码,客户端对该个人识别码进行验证,验证通过后可以确认使用者的身份,从而获取该签名密钥的序列号,之后可以将该签名密钥的序列号传送至服务器端进行序列号核验,核验通过后从数据库取得用户信息,将该用户信息返回给用户终端,该用户信息在终端经过验证后可以在终端处提供电子签名服务。例如,电子签名过程可以使用例如rsa的非对称数字签名算法进行数字签名,并且可以使用私钥数字签名签名、公钥验签查证的方式确保电子签名的有效性。
39.但是在上述现有技术的数字签名方案中,由于电子签名的使用需要依赖于便携式签名设备,即被授权使用该电子签名进行电子签名的人员需要随身携带便携式签名设备来插入到终端中才能够使用该电子签名进行身份验证和电子签名处理,因此该技术方案的流动性较差,若被授权使用对应电子密钥的人员未携带存储有签名证书的签名设备则无法实现身份认证以及电子签名处理,此外,同样是由于对于载有签名证书的在使用过程中也容易因为在不同的授权用户之间交接等过程而存在安全隐患。
40.为此,根据本技术实施例,提出了一种数字签名方法。在例如如图1中所示的数字签名场景中,用户a想要向用户b传输一份电子文件,并且该电子文件由于保密的要求,需要进行数字签名之后进行传输。因此,在该情况下,用户a需要在传输电子文件之前,先在自己使用的终端上使用签名密钥(例如,密钥对中的私钥)来对待传输的文件进行数字签名。从而可以将数字签名后的文件与公钥一起发送给用户b,从而用户b在接收到该数字签名文件之后可以使用同样的签名算法对文件进行计算,以获得摘要文件,并且通过解密后的例如摘要文件对接收到的文件进行验证。例如,在使用非对称数字签名技术的情况下,用户a可以通过对例如使用哈希算法计算出的传输文件的摘要进行数字签名的手段来达到传统签字的功能。简单地说,在公钥密码体制中,只有对传输文件进行签名者,即用户a,自己掌握私钥,而其对应的公钥是公开的,那么用户a用自己的私钥对传输文件进行签名(数字签名),其他人就可以利用公开发布的公钥来对数据进行解密。并且对于解密后的利用其它任何公钥都无法正确逆变换出该私钥变换后的数据,从而就可以鉴别该数据是谁进行的变换处理,亦即是谁的签名。
41.如上所述,在现有技术中,用户a的签名密钥通常存储在签名设备中,并且用户a可以通过将该签名设备插入到用户a正在使用的终端中来使用该签名设备中存储的签名密钥来对传输文件进行签名。例如,可以使用常用的单项散列函数算法来对待传输的文件进行处理以获得一个128位摘要,由于该128位摘要对于该待传输的文件具有唯一性,因此用户a可以使用其签名设备中存储的签名密钥中的私钥来对该128位摘要进行加密处理,即生成一个加密后的摘要文件。即,用户a通过对与待传输文件一一对应的摘要进行加密来实现数字签名。当然,用户a也可以对该待传输的文件进行加密,但是由于随着互联网传输速率的极速发展,当前用户可以通过互联网传输的文件的大小也比较大,因此如果对于传输文件进行加密,则不仅耗费较长的时间,而且也需要占用相当大的计算资源,因此,目前通常是使用各种摘要算法,例如单项散列函数来获得待传输文件的唯一摘要,而该摘要与传输文件相比大小要小得多,例如,使用单项散列函数的情况下,摘要数据仅为128位。因此,对该摘要数据进行加密可以大大节约计算资源并且还可以提高签名处理的效率。
42.在本技术实施例中,与现有技术中相反的是,用户可以通过终端发起签名请求,并
且通过身份认证之后,就可以从服务器获取到签名密钥。因此可以省去携带物理签名设备的麻烦。此外,本技术实施例中还采用了密钥分布式存储方式来存储签名密钥。例如,在终端侧生成密钥对,将用户私钥部分利用分布式散列表方式分布式存储至智能终端和后台服务器特定存储区域。分布式散列表(即,dht)是分布式计算系统中的一类,用来将一个关键的集合分散到所有在分布式系统中的节点,并且可以有效地将消息转送到唯一一个拥有查询者提供的关键值的节点。然后根据证书申请请求,申请证书。
43.因此,在本技术实施例中,在用户发起签名请求之后,可以首先进行身份认证过程。终端可以将向服务器发起认证请求,该认证请求中可以携带用于标识用户身份的用户标识。服务器接收到认证请求后,验证用户是否为系统中的注册用户,如果确认为系统中注册用户,那么服务器可以针对该认证请求生成一个随机数ra,或者也可以使用时间戳,并且可以对该随机数进行暂存。之后服务器可以将随机数ra、用户标识作为身份认证响应信息发送给终端。终端在接收到该身份认证响应信息之后,可以要求用户输入个人识别码,即pin码,并且服务器根据用户输入的该pin码对身份进行验证。例如,终端可以计算随机数ra、用户标识的摘要值,记为hash(ra||用户名),将摘要值返回给服务器,服务器接收摘要值后,计算缓存中的随机数ra、用户标识的摘要值hash’(ra||用户名)。如果hash与hash’相等,那么验证通过。服务器可以将服务器上存储的该用户的部分私钥发送给用户的终端。终端根据接收到的部分私钥与终端处存储的部分私钥拼接在一起生成最终的签名密钥。
44.然后,终端可以生成一个随机数rb,使用签名密钥,即私钥计算随机数rb、随机数ra、其他信息(例如用户标识)的签名值。然后,可以将签名值、随机数rb、随机数ra、其他信息发送给服务器,服务器比较随机数ra是否与服务器存储的随机数ra一致,如果一致的话,那么根据服务器存储的公钥信息,对签名值进行验证,查看是否可以验证成功,如果验签成功,则可以向终端发送验证成功信息,从而终端可以使用该签名密钥对电子文件进行数字签名处理。
45.此外,在本技术实施例中,在使用签名密钥对电子文件进行数字签名中,可以使用sm2加密算法来进行加密处理。
46.例如,可以通过sm3摘要算法对文档正文内容提取摘要信息,电子签章系统调用加密接口,将文档摘要信息传给加密模块,从而加密模块使用刚才生成的私钥和sm2加密算法对摘要信息进行加密。并将加密后的信息和证书公钥回传给终端。终端由此可以将数字签名串、公钥和电子印章附加到文档的数字签名域中。
47.用户b在接收到用户a的终端发送的数字签名文件之后,可以对例如使用sm2加密算法签名后的文件进行验签操作。用户b可以使用用户a发送来的公钥对摘要进行解密获得传输文件的摘要信息,记为hash1,同时针对用户a发送来的传输文件明文使用与用户a生成摘要相同的算法进行摘要计算以获得文件摘要信息,记为hash2,比较hash1和hash2,若摘要信息一致,则文档未被篡改,若不一致,则证明文档修改过。因此,可以实现对于传输电子文档的防止篡改效果。
48.特别地,本技术实施例中使用的sm2算法在使用时,可以首先生成密钥对。具体步骤如下,选择一个随机数作为私钥d,1《d《n-1。基于私钥生成公钥,p(x,y)=d*g(x,y)。
49.之后,针对于消息m进行摘要计算,即hash(m)。d为私钥,p为公钥。生成第一随机数k,1《k《n-1。计算(x,y)=k*g。计算r=x mod n。计算s=(1/k*(hash(m) d*r))mod n.。从而
可以得到签名值(r,s)。之后,用户b处使用sm2算法验证签名过程如下,将签名转化为两个数r和s,假如r和s小于1或者大于n-1,验证直接失败。计算c=(s)**-1mod n。计算u2=((r)*c)mod n。计算(x,y)=u1*g u2*p。如果r==x mod n,则签名验证成功,否则失败。
50.此外,本技术实施例中使用的sm2算法是我国基于ecc椭圆曲线密码理论自主研发设计,由国家密码管理局于2010年12月17日发布,在密码行业标准gmt 0003.1-2012sm2总则中推荐了一条256位曲线作为标准曲线,数字签名算法、密钥交换协议以及公钥数字签名算法都根据sm2总则选取的有限域和椭圆曲线生成密钥对;在数字签名、密钥交换方面区别于ecdsa、ecdh等国际算法,而是采取了更为安全的机制,提高了计算量和复杂性;在数字签名和验证、消息认证码的生成与验证以及随机数的生成等方面,使用国家密管理局批准的sm3密码杂凑算法和随机数生成器。
51.根据本技术实施例的数字签名方案,通过用户在终端向服务器发送身份认证请求,服务器根据用户在终端上输入的身份验证信息(pin)对用户身份进行认证,在认证之后服务器将服务器上存储的第一密钥发送给终端,以与终端处存储的第二密钥进行拼接生成第三密钥,从而终端将生成的第三密钥再发送给服务器进行密钥验证,验证成功之后即允许用户在该终端上使用该第三密钥进行数字签名处理。因此,用户无需随身携带存储密钥的密钥设备,而是可以通过当前使用的任意终端来与服务器交互进行身份认证,并且通过将服务器下发的部分密钥与终端上存储的另一部分密钥进行组合来生成最终使用的密钥,因此通过这样的分布式密钥存储和组合能够避免密钥在终端上存储时或在服务器上存储时发生泄露导致的风险,因此,能够可以实现与用户携带实体密钥设备来防止密钥泄露同样或甚至更高的安全性,同时用户也无需再随身携带实体密钥设备才能够使用电子密钥,大大提高了用户使用电子密钥的便携性。
52.上述实施例是对本技术实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本技术实施例具体技术方案进行详细描述。
53.实施例二
54.图2为本技术提供的数字签名方法的一个实施例的流程图。该方法的执行主体可以为具有数字签名能力的终端或系统,也可以为集成在这些设备上的装置或芯片。如图2所示,该数字签名方法包括如下步骤:
55.s201,向服务器发送身份认证请求。
56.用户可以通过其使用的终端来向服务器发起数字签名业务请求。首先可以在步骤s201中,可以向服务器发送身份认证请求。例如,在本技术实施例中,身份认证请求中可以携带有用于标识用户身份的用户标识。从而服务器可以根据终端发送的身份正请求中的用户标识来首先检查该用户是否是签名系统中注册的用户,换言之,服务器可以根据终端在步骤s201中发送的身份认证请求确认该请求发起的用户的私钥是否存储在该服务器上。
57.s202,接收服务器下发的身份认证响应信息。
58.在步骤s202中,终端可以接收服务器下发的身份证响应信息。特别地,步骤s202中接收到的服务器下发的身份认证响应信息中包含有服务器针对所述用户标识随机生成的第一随机数。具体地,服务器接收到步骤s201中发送的身份认证请求,并且根据其中包含的用户标识在例如签名系统中查找而确认该用户标识所对应的用户是该系统中注册的用户,则服务器可以针对该用户标识生成第一随机数,并且将其包含在发送给终端的身份认证响
应信息中,因此终端可以在步骤s202中接收到服务器下发的该身份认证响应信息。
59.s203,根据身份认证响应信息对用户输入的身份验证信息进行验证,并向服务器发送身份验证结果。
60.在步骤s203中可以根据在步骤s202中接收到的服务器下发的身份认证响应信息来对用户输入的身份验证信息进行验证。例如终端可以由用户输入个人识别码来验证当前是对应的用户进行操作。之后,还可以使用服务器发送的第一随机数以及在步骤s201中发送的身份认证请求中包含的用户标识来计算摘要值,例如,可以记为hash(ra||用户标识)。因此,可以将该摘要值作为密钥验证请求信息发送给服务器。
61.s204,接收服务器根据密钥验证请求信息进行验证的验证状态发送的第一密钥片段。
62.在步骤s204可以从服务器接收服务器发送的第一密钥片段。如上所述,在本技术实施例中,可以将终端处生成的用户的密钥的私钥部分分为多个部分,例如,可以分为两个部分,一部分存储在终端处,而另一部分可以存储在服务器上,从而提高密钥存储的安全性。服务器可以根据步骤s203中终端发送的身份验证信息来计算其暂存的第一随机数以及用户标识的摘要值,并且将该计算出的摘要值与步骤s203发送来的身份验证结果进行比较,从而当确认了一致的情况下,即服务器可以根据密钥验证请求信息进行验证的验证状态为一致,则可以将服务器上存储的该用户的私钥部分,即第一密钥片段发送给用户的终端。
63.s205,将第一密钥片段与存储于本地的第二密钥片段进行拼接,生成签名密钥。
64.在步骤s205中可以将从服务器接收的第一密钥片段,即部分私钥与终端本地存储的另一部分私钥,即第二密钥片段进行拼接,从而可以生成完整的密钥,即用于对文件进行签名的签名密钥。
65.s206,根据签名密钥生成针对第一随机数与随机生成的第二随机数的签名数据。
66.在步骤s205中通过将服务器发送来的部分密钥与终端本地存储的部分密钥拼接生成了完整密钥之后,还可以在步骤s206中进一步生成第二随机数,然后使用步骤s205中生成的该密钥来对步骤s202中接收到的服务器生成的第一随机数、终端生成的第二随机数以及用户标识进行加密处理,以获得签名数据,并且可以将该签名数据与终端生成的第二随机数和用户标识一起再发送给服务器。
67.s207,根据从服务器接收的签名数据的签名验证信息,使用签名密钥对目标文件进行数字签名。
68.在步骤s207中可以接收服务器发送来的签名验证信息。特别地,在步骤s206中生成了签名数据并发送给服务器之后,服务器可以根据该签名数据来使用用户的私钥对应的公钥对该签名数据进行解密,并且将解密后的数据与第二随机数进行比较,来确认终端处生成的私钥是否正确,以对私钥进行验证,并且可以将验证成功的结果发送给终端,因此终端可以根据从服务器接收到的签名验证信息,例如,私钥验证成功的信息,则终端可以最终使用步骤s205中生成的签名密钥来对目标文件进行数字签名,从而可以生成签名后的文件。
69.在本技术实施例中,在步骤s207使用签名密钥对电子文件进行数字签名中,可以使用sm2加密算法来进行加密处理。
70.例如,可以通过sm3摘要算法对文档正文内容提取摘要信息,电子签章系统调用加密接口,将文档摘要信息传给加密模块,从而加密模块使用刚才生成的私钥和sm2加密算法对摘要信息进行加密。并将加密后的信息和证书公钥回传给终端。终端由此可以将数字签名串、公钥和电子印章附加到文档的数字签名域中。
71.用户b在接收到用户a的终端发送的数字签名文件之后,可以对例如使用sm2加密算法签名后的文件进行验签操作。用户b可以使用用户a发送来的公钥对摘要进行解密获得传输文件的摘要信息,记为hash1,同时针对用户a发送来的传输文件明文使用与用户a生成摘要相同的算法进行摘要计算以获得文件摘要信息,记为hash2,比较hash1和hash2,若摘要信息一致,则文档未被篡改,若不一致,则证明文档修改过。因此,可以实现对于传输电子文档的防止篡改效果。
72.特别地,本技术实施例中使用的sm2算法在使用时,可以首先生成密钥对。具体步骤如下,选择一个随机数作为私钥d,1《d《n-1。基于私钥生成公钥,p(x,y)=d*g(x,y)。
73.之后,针对于消息m进行摘要计算,即hash(m)。d为私钥,p为公钥。生成第一随机数k,1《k《n-1。计算(x,y)=k*g。计算r=x mod n。计算s=(1/k*(hash(m) d*r))mod n.。从而可以得到签名值(r,s)。之后,用户b处使用sm2算法验证签名过程如下,将签名转化为两个数r和s,假如r和s小于1或者大于n-1,验证直接失败。计算c=(s)**-1mod n。计算u2=((r)*c)mod n。计算(x,y)=u1*g u2*p。如果r==x mod n,则签名验证成功,否则失败。
74.因此,根据本技术实施例的数字签名方案,通过用户在终端向服务器发送身份认证请求,服务器根据用户在终端上输入的身份验证信息(pin)对用户身份进行认证,在认证之后服务器将服务器上存储的第一密钥发送给终端,以与终端处存储的第二密钥进行拼接生成第三密钥,从而终端将生成的第三密钥再发送给服务器进行密钥验证,验证成功之后即允许用户在该终端上使用该第三密钥进行数字签名处理。因此,用户无需随身携带存储密钥的密钥设备,而是可以通过当前使用的任意终端来与服务器交互进行身份认证,并且通过将服务器下发的部分密钥与终端上存储的另一部分密钥进行组合来生成最终使用的密钥,因此通过这样的分布式密钥存储和组合能够避免密钥在终端上存储时或在服务器上存储时发生泄露导致的风险,因此,能够可以实现与用户携带实体密钥设备来防止密钥泄露同样或甚至更高的安全性,同时用户也无需再随身携带实体密钥设备才能够使用电子密钥,大大提高了用户使用电子密钥的便携性。
75.实施例三
76.图3为本技术提供的数字签名装置的一个实施例的结构示意图图。如图3所示,该数字签名装置包括:发送模块31、接收模块32、验证模块33、密钥生成模块34、签名数据生成模块35和数字签名模块36。
77.发送模块31可以用于向服务器发送身份认证请求。
78.用户可以通过其使用的终端中的发送模块31来向服务器发起数字签名业务请求。首先发送模块31根据用户的操作可以向服务器发送身份认证请求。例如,在本技术实施例中,身份认证请求中可以携带有用于标识用户身份的用户标识。从而服务器可以根据终端发送的身份正请求中的用户标识来首先检查该用户是否是签名系统中注册的用户,换言之,服务器可以根据终端的发送模块31发送的身份认证请求确认该请求发起的用户的私钥是否存储在该服务器上。
79.接收模块32可以用于接收服务器下发的身份认证响应信息。
80.终端的接收模块32可以接收服务器下发的身份认证响应信息。特别地,接收模块32接收到的服务器下发的身份认证响应信息中包含有服务器针对所述用户标识随机生成的第一随机数。具体地,服务器接收到发送模块31发送的身份认证请求,并且根据其中包含的用户标识在例如签名系统中查找而确认该用户标识所对应的用户是该系统中注册的用户,则服务器可以针对该用户标识生成第一随机数,并且将其包含在发送给终端的身份认证响应信息中,因此终端可以通过接收模块32接收到服务器下发的该身份认证响应信息。
81.验证模块33可以用于根据身份认证响应信息对用户输入的身份验证信息进行验证,并向服务器发送身份验证结果。
82.验证模块33可以根据接收模块32接收到的服务器下发的身份认证响应信息来对用户输入的身份验证信息进行验证。例如终端可以由用户输入个人识别码来验证当前是对应的用户进行操作。之后,还可以使用服务器发送的第一随机数以及在步骤s201中发送的身份认证请求中包含的用户标识来计算摘要值,例如,可以记为hash(ra||用户标识)。因此,可以将该摘要值作为密钥验证请求信息发送给服务器。
83.此外,接收模块32可以进一步用于接收服务器根据密钥验证请求信息进行验证的验证状态发送的第一密钥片段。
84.接收模块32可以从服务器接收服务器发送的第一密钥片段。如上所述,在本技术实施例中,可以将终端处生成的用户的密钥的私钥部分分为多个部分,例如,可以分为两个部分,一部分存储在终端处,而另一部分可以存储在服务器上,从而提高密钥存储的安全性。服务器可以根据验证模块33发送的身份验证信息来计算其暂存的第一随机数以及用户标识的摘要值,并且将该计算出的摘要值与验证模块33发送来的身份验证结果进行比较,从而当确认了一致的情况下,即服务器可以根据密钥验证请求信息进行验证的验证状态为一致,则可以将服务器上存储的该用户的私钥部分,即第一密钥片段发送给用户的终端。
85.密钥生成模块34可以用于将第一密钥片段与存储于本地的第二密钥片段进行拼接,生成签名密钥。
86.密钥生成模块34可以将从服务器接收的第一密钥片段,即部分私钥与终端本地存储的另一部分私钥,即第二密钥片段进行拼接,从而可以生成完整的密钥,即用于对文件进行签名的签名密钥。
87.签名数据生成模块35可以用于根据签名密钥生成针对第一随机数与随机生成的第二随机数的签名数据。
88.密钥生成模块34通过将服务器发送来的部分密钥与终端本地存储的部分密钥拼接生成了完整密钥之后,签名数据生成模块35可以进一步生成第二随机数,然后使用密钥生成模块34生成的该密钥来对接收模块32接收到的服务器生成的第一随机数、终端生成的第二随机数以及用户标识进行加密处理,以获得签名数据,并且可以将该签名数据与终端生成的第二随机数和用户标识一起再发送给服务器。
89.数字签名模块36可以用于根据从服务器接收的签名数据的签名验证信息,使用签名密钥对目标文件进行数字签名。
90.数字签名模块36可以接收服务器发送来的签名验证信息。特别地,数字签名模块36生成了签名数据并发送给服务器之后,服务器可以根据该签名数据来使用用户的私钥对
应的公钥对该签名数据进行解密,并且将解密后的数据与第二随机数进行比较,来确认终端处生成的私钥是否正确,以对私钥进行验证,并且可以将验证成功的结果发送给终端,因此终端可以根据从服务器接收到的签名验证信息,例如,私钥验证成功的信息,则终端可以最终使用密钥生成模块34生成的签名密钥来对目标文件进行数字签名,从而可以生成签名后的文件。
91.在本技术实施例中,数字签名模块36使用签名密钥对电子文件进行数字签名中,可以使用sm2加密算法来进行加密处理。
92.例如,可以通过sm3摘要算法对文档正文内容提取摘要信息,电子签章系统调用加密接口,将文档摘要信息传给加密模块,从而加密模块使用刚才生成的私钥和sm2加密算法对摘要信息进行加密。并将加密后的信息和证书公钥回传给终端。终端由此可以将数字签名串、公钥和电子印章附加到文档的数字签名域中。
93.用户b在接收到用户a的终端发送的数字签名文件之后,可以对例如使用sm2加密算法签名后的文件进行验签操作。用户b可以使用用户a发送来的公钥对摘要进行解密获得传输文件的摘要信息,记为hash1,同时针对用户a发送来的传输文件明文使用与用户a生成摘要相同的算法进行摘要计算以获得文件摘要信息,记为hash2,比较hash1和hash2,若摘要信息一致,则文档未被篡改,若不一致,则证明文档修改过。因此,可以实现对于传输电子文档的防止篡改效果。
94.特别地,本技术实施例中使用的sm2算法在使用时,可以首先生成密钥对。具体步骤如下,选择一个随机数作为私钥d,1《d《n-1。基于私钥生成公钥,p(x,y)=d*g(x,y)。
95.之后,针对于消息m进行摘要计算,即hash(m)。d为私钥,p为公钥。生成第一随机数k,1《k《n-1。计算(x,y)=k*g。计算r=x mod n。计算s=(1/k*(hash(m) d*r))mod n.。从而可以得到签名值(r,s)。之后,用户b处使用sm2算法验证签名过程如下,将签名转化为两个数r和s,假如r和s小于1或者大于n-1,验证直接失败。计算c=(s)**-1mod n。计算u2=((r)*c)mod n。计算(x,y)=u1*g u2*p。如果r==x mod n,则签名验证成功,否则失败。
96.因此,根据本技术实施例的数字签名装置,通过用户在终端向服务器发送身份认证请求,服务器根据用户在终端上输入的身份验证信息(pin)对用户身份进行认证,在认证之后服务器将服务器上存储的第一密钥发送给终端,以与终端处存储的第二密钥进行拼接生成第三密钥,从而终端将生成的第三密钥再发送给服务器进行密钥验证,验证成功之后即允许用户在该终端上使用该第三密钥进行数字签名处理。因此,用户无需随身携带存储密钥的密钥设备,而是可以通过当前使用的任意终端来与服务器交互进行身份认证,并且通过将服务器下发的部分密钥与终端上存储的另一部分密钥进行组合来生成最终使用的密钥,因此通过这样的分布式密钥存储和组合能够避免密钥在终端上存储时或在服务器上存储时发生泄露导致的风险,因此,能够可以实现与用户携带实体密钥设备来防止密钥泄露同样或甚至更高的安全性,同时用户也无需再随身携带实体密钥设备才能够使用电子密钥,大大提高了用户使用电子密钥的便携性。
97.实施例四
98.以上描述了数字签名装置的内部功能和结构,该系统可实现为一种电子设备。图4为本技术提供的电子设备实施例的结构示意图。如图4所示,该电子设备包括存储器41和处理器42。
99.存储器41,用于存储程序。除上述程序之外,存储器41还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
100.存储器41可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
101.处理器42,不仅仅局限于中央处理器(cpu),还可能为图形处理器(gpu)、现场可编辑门阵列(fpga)、嵌入式神经网络处理器(npu)或人工智能(ai)芯片等处理芯片。处理器42,与存储器41耦合,执行存储器41所存储的程序,该程序运行时执行上述实施例二的数字签名方法。
102.进一步,如图4所示,电子设备还可以包括:通信组件43、电源组件44、音频组件45、显示器46等其它组件。图4中仅示意性给出部分组件,并不意味着电子设备只包括图4所示组件。
103.通信组件43被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi、3g、4g或5g,或它们的组合。在一个示例性实施例中,通信组件43经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件43还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
104.电源组件44,为电子设备的各种组件提供电力。电源组件44可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
105.音频组件45被配置为输出和/或输入音频信号。例如,音频组件45包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器41或经由通信组件43发送。在一些实施例中,音频组件45还包括一个扬声器,用于输出音频信号。
106.显示器46包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅检测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
107.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
108.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献