一种数字签名方法及装置与流程

文档序号:14914374发布日期:2018-07-11 00:19阅读:233来源:国知局

本发明属于数字签名技术领域,尤其涉及一种数字签名方法及装置。



背景技术:

随着科技的进步和社会发展,移动终端的使用已经相当的广泛。越来越多的业务基于移动互联网应用在移动终端中。为了保证业务的安全性,需要采用数字签名技术。

通常基于特定地密码介质实现数字签名,用户首先需要从密码介质发放处获得特定地密码介质,然后再将获得的特定地密码介质插入到个人电脑中,并在个人电脑中安装驱动和相关的数字签名程序,最后才能在业务过程中实现数字签名。

由于必须到密码介质发放处获取特定地密码介质,因此受到密码介质发放的限制,大规模使用较为困难。且特定地密码介质需要作为个人电脑的外设连接到个人电脑使用才能实现在个人电脑中安装驱动以及相关的数字签名程序,进而实现数字签名,而个人电脑和移动终端无论是操作系统还是外接接口都是不同的,不能将适用于个人电脑的特定地密码介质应用到移动终端中,以实现在移动终端中安装驱动以及相关的数字签名程序,进而实现数字签名。

因此,基于特定地密码介质实现数字签名的方法难以应用到移动终端中,适用性差。



技术实现要素:

有鉴于此,本发明的目的在于提供一种数字签名方法及装置,以解决现有技术中基于特定地密码介质实现数字签名的方法难以应用到移动终端中,导致的适用性差的问题。

技术方案如下:

本发明提供一种数字签名方法,应用于客户端,包括:

接收数字签名请求;

接收服务器端响应所述数字签名请求后返回的临时数据;

根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;

接收所述服务器端返回的第二数字签名;

根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。

优选地,所述协商公钥为所述客户端与所述服务器端协商后得到的公钥;

其中,所述客户端与所述服务器端协商的过程包括:

生成第一密钥因子;

根据所述第一密钥因子计算得到第一公钥;

向所述服务器端发送协商请求;

接收所述服务器端响应所述协商请求后返回的第二公钥;其中,所述第二公钥为根据所述服务器端生成的第二密钥因子计算得到的;

根据所述第二公钥和所述第一密钥因子,计算得到第一协商密钥;

将所述第一公钥发送至所述服务器端;

接收所述服务器端返回的第二协商密钥;其中,所述第二协商密钥为根据所述第一公钥和所述第二密钥因子计算得到;

判断所述第一协商密钥与所述第二协商密钥是否相同,得到第一判断结果;

当所述第一判断结果表示所述第一协商密钥与所述第二协商密钥相同时,所述第一协商密钥为协商公钥。

优选地,所述生成第一密钥因子包括:

分别获取设备信息、PIN码和随机数;

根据所述设备信息、所述PIN码和所述随机数计算得到第一密钥因子。

优选地,还包括:

利用所述协商公钥对所述签名结果进行验证,得到验证结果;

当所述验证结果表示验证未通过时,累计错误次数;

判断所述错误次数是否达到预设阈值;

判断所述错误次数达到预设阈值,则锁定所述PIN码。

本发明还提供一种数字签名方法,应用于服务器端,包括:

接收到数字签名请求后,根据产生的随机数计算得到临时数据;

将所述临时数据发送至客户端;

接收所述客户端返回的第一数字签名;

根据所述随机数和预定的协商公钥,计算得到第二数字签名;

根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。

本发明还提供一种数字签名装置,包括:

第一接收单元,用于接收数字签名请求;

第二接收单元,用于接收服务器端响应所述数字签名请求后返回的临时数据;

第一计算单元,用于根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;

第三接收单元,用于接收所述服务器端返回的第二数字签名;

第二计算单元,用于根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。

优选地,还包括:

生成单元,用于生成第一密钥因子;

第三计算单元,用于根据所述第一密钥因子计算得到第一公钥;

第一发送单元,用于向所述服务器端发送协商请求;

第四接收单元,用于接收所述服务器端响应所述协商请求后返回的第二公钥;其中,所述第二公钥为根据所述服务器端生成的第二密钥因子计算得到的;

第四计算单元,用于根据所述第二公钥和所述第一密钥因子,计算得到第一协商密钥;

第二发送单元,用于将所述第一公钥发送至所述服务器端;

第五接收单元,用于接收所述服务器端返回的第二协商密钥;其中,所述第二协商密钥为根据所述第一公钥和所述第二密钥因子计算得到;

判断单元,用于判断所述第一协商密钥与所述第二协商密钥是否相同,得到第一判断结果;

当所述第一判断结果表示所述第一协商密钥与所述第二协商密钥相同时,所述第一协商密钥为协商公钥。

优选地,所述生成单元包括:

获取子单元,用于分别获取设备信息、PIN码和随机数;

计算子单元,用于根据所述设备信息、所述PIN码和所述随机数计算得到第一密钥因子。

优选地,还包括:

验证单元,用于利用所述协商公钥对所述签名结果进行验证,得到验证结果;

累计单元,用于当所述验证结果表示验证未通过时,累计错误次数;

判断单元,用于判断所述错误次数是否达到预设阈值;

锁定单元,用于判断所述错误次数达到预设阈值,锁定所述PIN码。

本发明还提供一种数字签名装置,包括:

第六接收单元,用于接收到数字签名请求后,根据产生的随机数计算得到临时数据;

第三发送单元,用于将所述临时数据发送至客户端;

第七接收单元,用于接收所述客户端返回的第一数字签名;

第五计算单元,用于根据所述随机数和预定的协商公钥,计算得到第二数字签名;

第六计算单元,用于根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。

与现有技术相比,本发明提供的上述技术方案具有如下优点:

从上述技术方案可知,本申请中接收服务器端发送的数字签名请求并接收服务器端响应所述数字签名请求后返回的临时数据;根据所述临时数据和预定的协商公钥,计算得到第一数字签名,并接收服务器端返回的第二数字签名,最后根据第一数字签名、第二数字签名和协商公钥,计算得到签名结果。相较于现有技术中基于密码介质实现数字签名的方法,本实施例中业务系统向服务器端和客户端发送数字签名请求后,客户端和服务器端协同工作以分别计算得到第一数字签名和第二数字签名,并根据第一数字签名和第二数字签名就可以计算得到签名结果,因此并不需要预先从密码介质发放处获取特定地密码介质就可以实现数字签名,且任意形式的客户端通过移动互联网都可以与服务器端交互,实现数字签名,提高了数字签名方法的适用性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种数字签名方法的流程图;

图2是本发明实施例提供的另一种数字签名方法的流程图;

图3是本发明实施例提供的另一种数字签名方法的流程图;

图4是本发明实施例提供的一种数字签名装置的结构示意图;

图5是本发明实施例提供的另一种数字签名装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本实施例公开了一种数字签名方法,所述数字签名方法应用在客户端,用于保证客户端中业务的安全性,其中,客户端包括个人电脑和移动终端。

参见图1,该实施例包括以下步骤:

S101、接收数字签名请求;

基于移动互联网,通过客户端可以实现与业务系统之间的交互。为了保证交互过程的安全性,通常需要进行数字签名。

在需要进行数字签名时,业务系统会向服务器端发送数字签名请求,服务器端会将接收到的数字签名请求发送至客户端。或者,业务系统向服务器端发送数字签名请求的同时也直接向客户端发送数字签名请求。

其中,服务器端能够提供签名服务。

S102、接收服务器端响应所述数字签名请求后返回的临时数据;

服务器端接收到数字签名请求后,响应所述数字签名请求,以产生临时数据。并将产生的临时数据返回给客户端。

客户端接收所述临时数据。其中,所述临时数据为签名过程的中间结果。

S103、根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;

客户端接收到数字签名请求后,响应所述数字签名请求,根据临时数据、预定的协商公钥和待签名值计算得到第一数字签名。

S104、接收所述服务器端返回的第二数字签名;

服务器端在接收到业务系统发送的数字签名请求后,响应所述数字签名请求的步骤除了包括产生临时数据外,还包括计算第二数字签名。

当服务器端计算得到第二数字签名后,将第二数字签名返回给客户端。

客户端接收服务器端返回的第二数字签名。

需要注意的时,虽然本实施例中执行接收服务器端返回的第二数字签名的步骤是位于执行根据所述临时数据和加密密钥计算得到第一数字签名这一步骤之后的,但是,在其他实施例中,可以先执行接收服务器端返回的第二数字签名的步骤,然后再执行根据所述临时数据和加密密钥计算得到第一数字签名的步骤。即并不限定客户端计算第一数字签名和服务器端计算第二数字签名的先后顺序,只要最终能够得到第一数字签名和第二数字签名即可。

S105、根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。

在本实施例中根据所述第一数字签名、所述第二数字签名和所述协商公钥,采用椭圆曲线密码算法计算得到签名结果。在其他实施例中还可以采用其他算法计算得到签名结果。

将计算得到的签名结果返回给业务系统,使得业务系统可以进行后续流程。

从上述技术方案可知,本实施例中接收服务器端发送的数字签名请求并接收服务器端响应所述数字签名请求后返回的临时数据;根据所述临时数据和预定的协商公钥,计算得到第一数字签名,并接收服务器端返回的第二数字签名,最后根据第一数字签名、第二数字签名和协商公钥,计算得到签名结果。相较于现有技术中基于密码介质实现数字签名的方法,本实施例中业务系统向服务器端和客户端发送数字签名请求后,客户端和服务器端协同工作以分别计算得到第一数字签名和第二数字签名,并根据第一数字签名和第二数字签名就可以计算得到签名结果,因此并不需要预先从密码介质发放处获取特定地密码介质就可以实现数字签名,且任意形式的客户端通过移动互联网都可以与服务器端交互,实现数字签名,提高了数字签名方法的适用性。

本实施例公开了另一种数字签名方法,本实施例区别于图1所示实施例之处在于,本实施例中在进行数字签名之前,包括客户端和服务器端协商公钥的过程,参见图2,该实施例包括以下步骤:

S201、生成第一密钥因子;

客户端可以为个人电脑,也可以为移动终端,无论是个人电脑还是移动终端,都具有设备信息,设备信息用于唯一标识客户端。其中,设备信息包括CPU型号、wifiMAC、IMEI号等信息。当客户端的类型不同时,设备信息包括的内容不同。

例如,客户端为移动终端时,比如手机,设备信息中包括IMEI号,而客户端为个人电脑时,设备信息中将不包括IMEI号。

客户端的使用者在设定了密码后,为了进一步保证密码的安全性,可以在设定密码的同时产生作为盐值的随机数,以便利用作为盐值的随机数对密码进行加密。其中,设定密码可以是在客户端的使用者进行账户注册时,设定的密码。

在本实施例中可以分别获取设备信息、PIN码和作为盐值的随机数,并根据设备信息、PIN码和作为盐值的随机数,采用哈希算法计算得到第一密钥因子。其中,哈希算法可以为SM3算法。除可以采用哈希算法计算得到第一密钥因子外,本实施例还可以采用对称密码算法计算得到第一密钥因子。其中,对称密码算法可以为SM4算法。还可以采用哈希算法与对称密码算法的组合算法计算得到第一密钥因子。

可以理解的是,在其他实施例中还可以获取其他的信息,并根据获取到的信息计算得到第一密钥因子,例如,客户端为个人电脑时,可以获取个人电脑上的网卡MAC、CPUID等信息,并采用哈希算法、对称密码算法等算法计算得到第一密钥因子。

S202、根据所述第一密钥因子计算得到第一公钥;

具体地,根据所述第一密钥因子,采用椭圆曲线密码算法计算得到第一公钥。

计算公式为:P1=f_gen1(k1);其中,k1为第一密钥因子,P1为第一公钥,f_gen1()为椭圆曲线加密算法。f_gen1()利用ECDLP计算,可以采用椭圆曲线上点标量乘法的方法,还可以采用椭圆曲线上点标量乘法和加法相结合的方法。

椭圆曲线上的基点为G,在椭圆曲线确定后,G为常数。例如,采用SM2算法时,G={0x32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7,0xBC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0}。

本实施例中f_gen1()采用椭圆曲线上点标量乘法的方法,P1=f_gen1(k1)=[k1]G。

S203、向所述服务器端发送协商请求;

本实施例中客户端先计算得到第一公钥后,才向服务器端发送协商请求,以使得服务器端响应所述协商请求,但是,在实际使用时,客户端可以先向服务器端发送协商请求,然后客户端在执行计算得到第一公钥的步骤,同时,服务器端执行响应所述协商请求的步骤,进而加快客户端和服务器端之间的协商过程。

S204、接收所述服务器端响应所述协商请求后返回的第二公钥;其中,所述第二公钥为根据所述服务器端生成的第二密钥因子计算得到的;

服务器端使用硬件密码设备产生第二密钥因子,其中,硬件密码设备为加密机、加密卡等。在生成第二密钥因子后,采用加密机加密保存的方式将第二密钥因子存储在密钥库中,其中,服务器端为每个不同的客户端产生的第二密钥因子是不同的,并分别为每个不同的客户端分别存储第二密钥因子。使得客户端访问时,能够根据客户端的标识获取到对应的第二密钥因子。

服务器端在接收到客户端发送的协商请求后,根据客户端的标识从密钥库中获取对应的第二密钥因子,并基于椭圆曲线密码算法和获取到的第二密钥因子计算得到第二公钥。

服务器端根据生成的第二密钥因子计算得到第二公钥的公式为:

P2=f_gen2(k2);其中,k2为第二密钥因子,P2为第二公钥,f_gen2()为椭圆曲线加密算法,f_gen1()=f_gen2()。

P2=f_gen2(k2)=[k2]G。

S205、根据所述第二公钥和所述第一密钥因子,计算得到第一协商密钥;

具体地,采用公式:P=f_gen3(k1,P2)计算得到第一协商密钥;其中,k1为第一密钥因子,P2为第二公钥,f_gen3()为椭圆曲线加密算法。f_gen3()利用ECDLP计算,可以采用椭圆曲线上点标量乘法的方法,还可以采用椭圆曲线上点标量乘法和加法相结合的方法。

本实施例中,P=f_gen3(k1,P2)=[k1]P2。

S206、将所述第一公钥发送至所述服务器端;

S207、接收所述服务器端返回的第二协商密钥;其中,所述第二协商密钥为根据所述第一公钥和所述第二密钥因子计算得到;

服务器端在接收到第一公钥后,根据第一公钥和第二密钥因子,采用椭圆曲线密码算法计算得到第二协商密钥。

计算公式为:P’=f_gen4(k2,P1);其中,P’为第二协商密钥,k2为第二密钥因子,P1为第一公钥,f_gen4()为椭圆曲线加密算法,f_gen4()=f_gen3()。

P’=f_gen4(k2,P1)=[k2]P1。

S208、判断所述第一协商密钥与所述第二协商密钥是否相同,得到第一判断结果;

当所述第一判断结果表示所述第一协商密钥与所述第二协商密钥相同时,将所述第一协商密钥作为预定的加密密钥,并执行步骤S209;

当所述第一判断结果表示所述第一协商密钥与所述第二协商密钥不相同时,返回执行步骤S201;

本实施例中,客户端采用f_gen1()函数实现根据第一密钥因子,计算得到第一公钥,服务器端采用f_gen2()函数实现根据第二密钥因子,计算得到第二公钥,然后,客户端采用f_gen3()函数实现根据第一密钥因子和第二公钥计算得到第一协商密钥,服务器端采用f_gen4()函数实现根据第二密钥因子和第一公钥计算得到第二协商密钥。由于都是基于客户端的第一密钥因子和服务器端的第二密钥因子,采用椭圆曲线加密算法计算得到第一协商密钥和第二协商密钥,因此根据椭圆曲线上点的标量乘法定义,第一协商密钥和第二协商密钥在正常情况下是相等的。

P=f_gen3(k1,P2)=[k1]P2=[k1×k2]G;

P’=f_gen4(k2,P1)=[k2]P1=[k2×k1]G。

按照椭圆曲线上点的标量乘法定义可知,

第一协商密钥P和第二协商密钥P’是相同的。

当客户端计算得到的第一协商密钥和服务器端计算得到的第二协商密钥相同,则协商完成,将第一协商密钥作为预定的加密密钥,当然也可以将第二协商密钥作为预定的加密密钥。

当客户端计算得到的第一协商密钥和服务器端计算得到的第二协商密钥不相同,则认为客户端和服务器端之间进行数据交互时发生错误,需要重新执行协商的步骤。

S209、接收数字签名请求;

本实施例中步骤S209的实现方式与上一实施例中步骤S101的实现方式类似,此处不再赘述。

S2010、接收服务器端响应所述数字签名请求后返回的临时数据;

服务器端接收到数字签名请求后,产生随机数sk,根据产生的随机数sk,采用椭圆曲线的签名算法计算临时数据Q,Q=f_sign1(sk);其中,f_sign1()为椭圆曲线的签名算法函数。本实施例中,f_sign1()=f_gen1(),Q=f_sign1(sk)=[sk]×G。

服务器端响应所述数字签名请求,以得到临时数据Q后,将临时数据Q返回给客户端。

S2011、根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;

预定的协商公钥与第一协商密钥相同,当然预定的协商公钥也与第二协商密钥相同。

待签名值为经过哈希计算得到的摘要值。

在本实施例中,在计算第一数字签名时,除根据临时数据、预定的协商公钥和待签名值外,还根据第二密钥因子。具体地,本实施例中采用公式s1=f_sign2(Q,k1,P,hash)计算第一数字签名。其中,Q为临时数据,P为预定的协商公钥,k1为第二密钥因子,hash指的是经过哈希算法计算得到的摘要值,f_sign2()指的是椭圆曲线的签名算法函数。

S2012、接收所述服务器端返回的第二数字签名;

服务器端在接收到数字签名请求后,响应所述数字签名请求的步骤除了包括产生临时数据外,还包括计算第二数字签名。

本实施例中服务器端采用公式s2=f_sign3(sk,k2,P,hash)计算第二数字签名。其中,sk为随机数,P为预定的协商公钥,k2为第一密钥因子,hash指的是经过哈希算法计算得到的摘要值,f_sign3()指的是椭圆曲线的签名算法函数。

服务器端计算得到第二数字签名后,将第二数字签名返回至客户端。

S2013、根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。

本实施例中采用公式s=f_sign4(s1,s2,P)计算得到签名结果,其中,s1为第一数字签名,s2为第二数字签名,P为协商公钥,f_sign4()指的是椭圆曲线的签名算法函数。

为了进一步提高安全性,f_sign2()、f_sign3()和f_sign4()分别根据不同的椭圆曲线计算得到。

本实施例中,在计算得到签名结果后,还包括利用所述协商公钥对所述签名结果进行验证,得到验证结果。当所述验证结果表示验证通过时,将所述签名结果返回至业务系统;当所述验证结果表示验证未通过时,认为计算得到签名结果的过程存在错误或存在错误使用或恶意攻击,增加错误次数,如果累计的错误次数达到预设阈值后,锁定PIN码,避免非法攻击的产生。

在锁定PIN码后,还可以通过身份验证的方式重新找回PIN码,即解锁PIN码,进而能够再次利用PIN码进行数字签名。

具体地,采用SM2算法的数字签名,按照GM/T 0003-2012《SM2椭圆曲线公钥密码算法》和GM/T 0009-2012《SM2密码算法使用规范》进行验证。

当然,本实施例提供的数字签名方法还支持各方采用各自支持的方式对签名结果的验证。

从上述技术方案可知,本实施例中接收服务器端发送的数字签名请求并接收服务器端响应所述数字签名请求后返回的临时数据;根据所述临时数据和预定的协商公钥,计算得到第一数字签名,并接收服务器端返回的第二数字签名,最后根据第一数字签名、第二数字签名和协商公钥,计算得到签名结果。相较于现有技术中基于密码介质实现数字签名的方法,本实施例中业务系统向服务器端和客户端发送数字签名请求后,客户端和服务器端协同工作以分别计算得到第一数字签名和第二数字签名,并根据第一数字签名和第二数字签名就可以计算得到签名结果,因此并不需要预先从密码介质发放处获取特定地密码介质就可以实现数字签名,且任意形式的客户端通过移动互联网都可以与服务器端交互,实现数字签名,提高了数字签名方法的适用性。同时,通过利用客户端和服务器端协商后得到协商公钥,进而实现数字签名,而仅仅使用客户端存储的密钥因子并不能实现数字签名,从而窃取客户端密钥的恶意程序和攻击者即使获取到客户端存储的密钥因子,也不能实现数字签名,进一步提高了安全性。

本实施例还公开了另一种数字签名方法,所述数字签名方法应用在服务器端,由服务器端计算得到签名结果。参见图3,该实施例包括以下步骤:

S301、接收到数字签名请求后,根据产生的随机数计算得到临时数据;

在需要进行数字签名时,业务系统会向服务器端发送数字签名请求,服务器端接收到数字签名请求后,产生随机数sk,根据产生的随机数sk,采用椭圆曲线的签名算法计算临时数据Q,Q=f_sign1(sk);其中,f_sign1()为椭圆曲线的签名算法函数。本实施例中,f_sign1()=f_gen1(),Q=f_sign1(sk)=[sk]×G。

S302、将所述临时数据发送至客户端;

服务器端响应所述数字签名请求,得到临时数据Q后,将临时数据Q返回给客户端。

S303、接收所述客户端返回的第一数字签名;

客户端在接收到服务器端发送的临时数据后,根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;

其中,预定的协商公钥为客户端和服务器端协商后得到的。具体协商过程与图2所示实施例中步骤S201-步骤S208的实现方式类似,此处不再赘述。

待签名值为经过哈希计算得到的摘要值。

在本实施例中,客户端在计算第一数字签名时,除根据临时数据、预定的协商公钥和待签名值外,还根据第二密钥因子。其中,第二密钥因子为服务器端使用密码设备产生的,其中,密码设备可以为加密机、加密卡等。在生成第二密钥因子后,采用加密机加密保存的方式将第二密钥因子存储在密钥库中,其中,服务器端为每个不同的客户端产生的第二密钥因子是不同的,并分别为每个不同的客户端分别存储第二密钥因子。使得客户端访问时,能够根据客户端的标识获取到对应的第二密钥因子。

服务器端将对应的第二密钥因子发送至客户端。

具体地,客户端采用公式s1=f_sign2(Q,k1,P,hash)计算第一数字签名。其中,Q为临时数据,P为预定的协商公钥,k1为第二密钥因子,hash指的是经过哈希算法计算得到的摘要值,f_sign2()指的是椭圆曲线的签名算法函数。

客户端在计算得到第一数字签名后,将第一数字签名返回至服务器端。

S304、根据所述随机数和预定的协商公钥,计算得到第二数字签名;

服务器端在接收到数字签名请求后,响应所述数字签名请求的步骤除了包括产生临时数据外,还包括计算第二数字签名。

本实施例中服务器端采用公式s2=f_sign3(sk,k2,P,hash)计算第二数字签名。其中,sk为随机数,P为预定的协商公钥,k2为第一密钥因子,hash指的是经过哈希算法计算得到的摘要值,f_sign3()指的是椭圆曲线的签名算法函数。其中,第一密钥因子为客户端根据获取到的设备信息、PIN码和作为盐值的随机数,采用哈希算法计算得到的。

需要注意的时,虽然本实施例中服务器端执行根据所述随机数和预定的协商公钥,计算得到第二数字签名的步骤是位于执行接收客户端返回的第一数字签名这一步骤之后的,但是,在其他实施例中,可以先执行根据所述随机数和预定的协商公钥,计算得到第二数字签名的步骤,然后再执行接收客户端返回的第一数字签名的步骤。即并不限定客户端计算第一数字签名和服务器端计算第二数字签名的先后顺序,只要最终能够得到第一数字签名和第二数字签名即可。

S305、根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。

本实施例中采用公式s=f_sign4(s1,s2,P)计算得到签名结果,其中,s1为第一数字签名,s2为第二数字签名,P为协商公钥,f_sign4()指的是椭圆曲线的签名算法函数。

为了进一步提高安全性,f_sign2()、f_sign3()和f_sign4()分别根据不同的椭圆曲线计算得到。

本实施例中,在计算得到签名结果后,服务器端还包括利用所述协商公钥对所述签名结果进行验证,得到验证结果。当所述验证结果表示验证通过时,将所述签名结果返回至业务系统;当所述验证结果表示验证未通过时,认为计算得到签名结果的过程存在错误或存在错误使用或恶意攻击,增加错误次数,如果累计的错误次数达到预设阈值后,锁定PIN码,避免非法攻击的产生。

在锁定PIN码后,还可以通过身份验证的方式重新找回PIN码,即解锁PIN码,进而能够再次利用PIN码进行数字签名。

具体地,采用SM2算法的数字签名,按照GM/T 0003-2012《SM2椭圆曲线公钥密码算法》和GM/T 0009-2012《SM2密码算法使用规范》进行验证。

从上述技术方案可知,本实施例中服务器端接收到数字签名请求后,根据产生的随机数计算得到临时数据,并将所述临时数据发送至客户端;接收所述客户端返回的第一数字签名;根据所述随机数和预定的协商公钥,计算得到第二数字签名,根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名值。相较于现有技术中基于密码介质实现数字签名的方法,本实施例中业务系统向服务器端和客户端发送数字签名请求后,客户端和服务器端协同工作以分别计算得到第一数字签名和第二数字签名,并根据第一数字签名和第二数字签名就可以计算得到签名结果,因此并不需要预先从密码介质发放处获取特定地密码介质就可以实现数字签名,且任意形式的客户端通过移动互联网都可以与服务器端交互,实现数字签名,提高了数字签名方法的适用性。同时,通过利用客户端和服务器端协商后得到协商公钥,进而实现数字签名,而仅仅使用服务器端存储的密钥因子并不能实现数字签名,从而避免了服务器端内部管理人员越权使用服务器端存储的密钥因子实现数字签名的问题产生,进一步提高了安全性。

对应上述数字签名方法,本实施例提供了一种数字签名装置,所述数字签名装置的结构示意图请参阅图4所示,本实施例中数字签名装置包括:

第一接收单元401、第二接收单元402、第一计算单元403、第三接收单元404、第二计算单元405、生成单元406、第三计算单元407、第一发送单元408、第四接收单元409、第四计算单元4010、第二发送单元4011、第五接收单元4012、判断单元4013、验证单元4014、累计单元4015、判断单元4016和锁定单元4017;

第一接收单元401,用于接收数字签名请求;

第二接收单元402,用于接收服务器端响应所述数字签名请求后返回的临时数据;

第一计算单元403,用于根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;

第三接收单元404,用于接收所述服务器端返回的第二数字签名;

第二计算单元405,用于根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果;

生成单元406,用于生成第一密钥因子;

可选地,生成单元406包括:

获取子单元,用于分别获取设备信息、PIN码和随机数;

计算子单元,用于根据所述设备信息、所述PIN码和所述随机数计算得到第一密钥因子。

第三计算单元407,用于根据所述第一密钥因子计算得到第一公钥;

第一发送单元408,用于向所述服务器端发送协商请求;

第四接收单元409,用于接收所述服务器端响应所述协商请求后返回的第二公钥;其中,所述第二公钥为根据所述服务器端生成的第二密钥因子计算得到的;

第四计算单元4010,用于根据所述第二公钥和所述第一密钥因子,计算得到第一协商密钥;

第二发送单元4011,用于将所述第一公钥发送至所述服务器端;

第五接收单元4012,用于接收所述服务器端返回的第二协商密钥;其中,所述第二协商密钥为根据所述第一公钥和所述第二密钥因子计算得到;

判断单元4013,用于判断所述第一协商密钥与所述第二协商密钥是否相同,得到第一判断结果;

当所述第一判断结果表示所述第一协商密钥与所述第二协商密钥相同时,所述第一协商密钥为协商公钥;

验证单元4014,用于利用所述协商公钥对所述签名结果进行验证,得到验证结果;

累计单元4015,用于当所述验证结果表示验证未通过时,累计错误次数;

判断单元4016,用于判断所述错误次数是否达到预设阈值;

锁定单元4017,用于判断所述错误次数达到预设阈值,锁定所述PIN码。

当所述验证结果表示验证通过时,将所述签名结果返回至业务系统。

从上述技术方案可知,本实施例中接收服务器端发送的数字签名请求并接收服务器端响应所述数字签名请求后返回的临时数据;根据所述临时数据和预定的协商公钥,计算得到第一数字签名,并接收服务器端返回的第二数字签名,最后根据第一数字签名、第二数字签名和协商公钥,计算得到签名结果。相较于现有技术中基于密码介质实现数字签名的方法,本实施例中业务系统向服务器端和客户端发送数字签名请求后,客户端和服务器端协同工作以分别计算得到第一数字签名和第二数字签名,并根据第一数字签名和第二数字签名就可以计算得到签名结果,因此并不需要预先从密码介质发放处获取特定地密码介质就可以实现数字签名,且任意形式的客户端通过移动互联网都可以与服务器端交互,实现数字签名,提高了数字签名方法的适用性。同时,通过利用客户端和服务器端协商后得到协商公钥,进而实现数字签名,而仅仅使用客户端存储的密钥因子并不能实现数字签名,从而窃取客户端密钥的恶意程序和攻击者即使获取到客户端存储的密钥因子,也不能实现数字签名,进一步提高了安全性。

本实施例中还提供了另一种数字签名装置,所述数字签名装置的结构示意图请参阅图5所示,集成在服务器端,本实施例中数字签名装置包括:

第六接收单元501、第三发送单元502、第七接收单元503、第五计算单元504和第六计算单元505;

第六接收单元501,用于接收到数字签名请求后,根据产生的随机数计算得到临时数据;

第三发送单元502,用于将所述临时数据发送至客户端;

第七接收单元503,用于接收所述客户端返回的第一数字签名;

第五计算单元504,用于根据所述随机数和预定的协商公钥,计算得到第二数字签名;

第六计算单元505,用于根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。

从上述技术方案可知,本实施例中服务器端接收到数字签名请求后,根据产生的随机数计算得到临时数据,并将所述临时数据发送至客户端;接收所述客户端返回的第一数字签名;根据所述随机数和预定的协商公钥,计算得到第二数字签名,根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名值。相较于现有技术中基于密码介质实现数字签名的方法,本实施例中业务系统向服务器端和客户端发送数字签名请求后,客户端和服务器端协同工作以分别计算得到第一数字签名和第二数字签名,并根据第一数字签名和第二数字签名就可以计算得到签名结果,因此并不需要预先从密码介质发放处获取特定地密码介质就可以实现数字签名,且任意形式的客户端通过移动互联网都可以与服务器端交互,实现数字签名,提高了数字签名方法的适用性。同时,通过利用客户端和服务器端协商后得到协商公钥,进而实现数字签名,而仅仅使用服务器端存储的密钥因子并不能实现数字签名,从而避免了服务器端内部管理人员越权使用服务器端存储的密钥因子实现数字签名的问题产生,进一步提高了安全性。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1