CN108270575B - 一种数字签名方法及装置 - Google Patents
一种数字签名方法及装置 Download PDFInfo
- Publication number
- CN108270575B CN108270575B CN201810358847.5A CN201810358847A CN108270575B CN 108270575 B CN108270575 B CN 108270575B CN 201810358847 A CN201810358847 A CN 201810358847A CN 108270575 B CN108270575 B CN 108270575B
- Authority
- CN
- China
- Prior art keywords
- digital signature
- negotiation
- key
- public key
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种数字签名方法及装置,接收服务器端发送的数字签名请求并接收服务器端响应所述数字签名请求后返回的临时数据;根据所述临时数据和预定的加密密钥,计算得到第一数字签名,并接收服务器端返回的第二数字签名,最后根据第一数字签名、第二数字签名和协商公钥,计算得到签名结果。由于本发明中客户端和服务器端协同工作以分别计算得到第一数字签名和第二数字签名,并根据第一数字签名和第二数字签名就可以计算得到签名结果,因此并不需要预先从密码介质发放处获取特定地密码介质,且任意形式的客户端通过移动互联网都可以与服务器端交互实现数字签名,提高了数字签名方法的适用性。
Description
技术领域
本发明属于数字签名技术领域,尤其涉及一种数字签名方法及装置。
背景技术
随着科技的进步和社会发展,移动终端的使用已经相当的广泛。越来越多的业务基于移动互联网应用在移动终端中。为了保证业务的安全性,需要采用数字签名技术。
通常基于特定地密码介质实现数字签名,用户首先需要从密码介质发放处获得特定地密码介质,然后再将获得的特定地密码介质插入到个人电脑中,并在个人电脑中安装驱动和相关的数字签名程序,最后才能在业务过程中实现数字签名。
由于必须到密码介质发放处获取特定地密码介质,因此受到密码介质发放的限制,大规模使用较为困难。且特定地密码介质需要作为个人电脑的外设连接到个人电脑使用才能实现在个人电脑中安装驱动以及相关的数字签名程序,进而实现数字签名,而个人电脑和移动终端无论是操作系统还是外接接口都是不同的,不能将适用于个人电脑的特定地密码介质应用到移动终端中,以实现在移动终端中安装驱动以及相关的数字签名程序,进而实现数字签名。
因此,基于特定地密码介质实现数字签名的方法难以应用到移动终端中,适用性差。
发明内容
有鉴于此,本发明的目的在于提供一种数字签名方法及装置,以解决现有技术中基于特定地密码介质实现数字签名的方法难以应用到移动终端中,导致的适用性差的问题。
技术方案如下:
本发明提供一种数字签名方法,应用于客户端,包括:
接收数字签名请求;
接收服务器端响应所述数字签名请求后返回的临时数据;
根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;
接收所述服务器端返回的第二数字签名;
根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。
优选地,所述协商公钥为所述客户端与所述服务器端协商后得到的公钥;
其中,所述客户端与所述服务器端协商的过程包括:
生成第一密钥因子;
根据所述第一密钥因子计算得到第一公钥;
向所述服务器端发送协商请求;
接收所述服务器端响应所述协商请求后返回的第二公钥;其中,所述第二公钥为根据所述服务器端生成的第二密钥因子计算得到的;
根据所述第二公钥和所述第一密钥因子,计算得到第一协商密钥;
将所述第一公钥发送至所述服务器端;
接收所述服务器端返回的第二协商密钥;其中,所述第二协商密钥为根据所述第一公钥和所述第二密钥因子计算得到;
判断所述第一协商密钥与所述第二协商密钥是否相同,得到第一判断结果;
当所述第一判断结果表示所述第一协商密钥与所述第二协商密钥相同时,所述第一协商密钥为协商公钥。
优选地,所述生成第一密钥因子包括:
分别获取设备信息、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,用于根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。
从上述技术方案可知,本实施例中服务器端接收到数字签名请求后,根据产生的随机数计算得到临时数据,并将所述临时数据发送至客户端;接收所述客户端返回的第一数字签名;根据所述随机数和预定的协商公钥,计算得到第二数字签名,根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名值。相较于现有技术中基于密码介质实现数字签名的方法,本实施例中业务系统向服务器端和客户端发送数字签名请求后,客户端和服务器端协同工作以分别计算得到第一数字签名和第二数字签名,并根据第一数字签名和第二数字签名就可以计算得到签名结果,因此并不需要预先从密码介质发放处获取特定地密码介质就可以实现数字签名,且任意形式的客户端通过移动互联网都可以与服务器端交互,实现数字签名,提高了数字签名方法的适用性。同时,通过利用客户端和服务器端协商后得到协商公钥,进而实现数字签名,而仅仅使用服务器端存储的密钥因子并不能实现数字签名,从而避免了服务器端内部管理人员越权使用服务器端存储的密钥因子实现数字签名的问题产生,进一步提高了安全性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数字签名方法,其特征在于,应用于客户端,包括:
接收数字签名请求;
接收服务器端响应所述数字签名请求后返回的临时数据;
根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;
接收所述服务器端响应所述数字签名请求以计算得到第二数字签名后返回的第二数字签名;所述第二数字签名是服务器端接收到数字签名请求后,根据随机数和预定的协商公钥,计算得到的数字签名;其中,所述客户端和所述服务器端协同工作以分别计算得到第一数字签名和第二数字签名;
根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。
2.根据权利要求1所述的数字签名方法,其特征在于,所述协商公钥为所述客户端与所述服务器端协商后得到的公钥;
其中,所述客户端与所述服务器端协商的过程包括:
生成第一密钥因子;
根据所述第一密钥因子计算得到第一公钥;
向所述服务器端发送协商请求;
接收所述服务器端响应所述协商请求后返回的第二公钥;其中,所述第二公钥为根据所述服务器端生成的第二密钥因子计算得到的;
根据所述第二公钥和所述第一密钥因子,计算得到第一协商密钥;
将所述第一公钥发送至所述服务器端;
接收所述服务器端返回的第二协商密钥;其中,所述第二协商密钥为根据所述第一公钥和所述第二密钥因子计算得到;
判断所述第一协商密钥与所述第二协商密钥是否相同,得到第一判断结果;
当所述第一判断结果表示所述第一协商密钥与所述第二协商密钥相同时,所述第一协商密钥为协商公钥。
3.根据权利要求2所述的数字签名方法,其特征在于,所述生成第一密钥因子包括:
分别获取设备信息、PIN码和随机数;
根据所述设备信息、所述PIN码和所述随机数计算得到第一密钥因子。
4.根据权利要求3所述的数字签名方法,其特征在于,还包括:
利用所述协商公钥对所述签名结果进行验证,得到验证结果;
当所述验证结果表示验证未通过时,累计错误次数;
判断所述错误次数是否达到预设阈值;
判断所述错误次数达到预设阈值,则锁定所述PIN码。
5.一种数字签名方法,其特征在于,应用于服务器端,包括:
接收到数字签名请求后,根据产生的随机数计算得到临时数据;
将所述临时数据发送至客户端;
接收所述客户端返回的第一数字签名;所述第一数字签名是客户端接收到数字签名请求后,根据临时数据、预定的协商公钥和待签名值,计算得到的数字签名;其中,所述客户端和所述服务器端协同工作以分别计算得到第一数字签名和第二数字签名;
根据所述随机数和预定的协商公钥,计算得到第二数字签名;
根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。
6.一种客户端,其特征在于,包括:
第一接收单元,用于接收数字签名请求;
第二接收单元,用于接收服务器端响应所述数字签名请求后返回的临时数据;
第一计算单元,用于根据所述临时数据、预定的协商公钥和待签名值,计算得到第一数字签名;
第三接收单元,用于接收所述服务器端响应所述数字签名请求以计算得到第二数字签名后返回的第二数字签名;所述第二数字签名是服务器端接收到数字签名请求后,根据随机数和预定的协商公钥,计算得到的数字签名;其中,所述客户端和所述服务器端协同工作以分别计算得到第一数字签名和第二数字签名;
第二计算单元,用于根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。
7.根据权利要求6所述的客户端,其特征在于,还包括:
生成单元,用于生成第一密钥因子;
第三计算单元,用于根据所述第一密钥因子计算得到第一公钥;
第一发送单元,用于向所述服务器端发送协商请求;
第四接收单元,用于接收所述服务器端响应所述协商请求后返回的第二公钥;其中,所述第二公钥为根据所述服务器端生成的第二密钥因子计算得到的;
第四计算单元,用于根据所述第二公钥和所述第一密钥因子,计算得到第一协商密钥;
第二发送单元,用于将所述第一公钥发送至所述服务器端;
第五接收单元,用于接收所述服务器端返回的第二协商密钥;其中,所述第二协商密钥为根据所述第一公钥和所述第二密钥因子计算得到;
判断单元,用于判断所述第一协商密钥与所述第二协商密钥是否相同,得到第一判断结果;
当所述第一判断结果表示所述第一协商密钥与所述第二协商密钥相同时,所述第一协商密钥为协商公钥。
8.根据权利要求7所述的客户端,其特征在于,所述生成单元包括:
获取子单元,用于分别获取设备信息、PIN码和随机数;
计算子单元,用于根据所述设备信息、所述PIN码和所述随机数计算得到第一密钥因子。
9.根据权利要求6-8任意一项所述的客户端,其特征在于,还包括:
验证单元,用于利用所述协商公钥对所述签名结果进行验证,得到验证结果;
累计单元,用于当所述验证结果表示验证未通过时,累计错误次数;
判断单元,用于判断所述错误次数是否达到预设阈值;
锁定单元,用于判断所述错误次数达到预设阈值,锁定PIN码。
10.一种服务器端,其特征在于,包括:
第六接收单元,用于接收到数字签名请求后,根据产生的随机数计算得到临时数据;
第三发送单元,用于将所述临时数据发送至客户端;
第七接收单元,用于接收所述客户端返回的第一数字签名;所述第一数字签名是客户端接收到数字签名请求后,根据临时数据、预定的协商公钥和待签名值,计算得到的数字签名;其中,所述客户端和所述服务器端协同工作以分别计算得到第一数字签名和第二数字签名;
第五计算单元,用于根据所述随机数和预定的协商公钥,计算得到第二数字签名;
第六计算单元,用于根据所述第一数字签名、所述第二数字签名和所述协商公钥,计算得到签名结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810358847.5A CN108270575B (zh) | 2018-04-20 | 2018-04-20 | 一种数字签名方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810358847.5A CN108270575B (zh) | 2018-04-20 | 2018-04-20 | 一种数字签名方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108270575A CN108270575A (zh) | 2018-07-10 |
CN108270575B true CN108270575B (zh) | 2021-10-22 |
Family
ID=62778386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810358847.5A Active CN108270575B (zh) | 2018-04-20 | 2018-04-20 | 一种数字签名方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108270575B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093133B2 (en) * | 2001-12-20 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Group signature generation system using multiple primes |
CN101064595B (zh) * | 2006-04-27 | 2011-07-27 | 联想(北京)有限公司 | 一种计算机网络安全输入认证系统和方法 |
CN101552672A (zh) * | 2009-04-15 | 2009-10-07 | 胡祥义 | 一种基于标识认证的全球网络实名制实现方法 |
CN102622549B (zh) * | 2012-03-20 | 2014-07-09 | 天津书生软件技术有限公司 | 一种电子印章实现系统和方法 |
CN103036894B (zh) * | 2012-12-19 | 2015-04-08 | 福建联迪商用设备有限公司 | 一种智能终端应用程序安装文件联网数字签名方法 |
CN104618116B (zh) * | 2015-01-30 | 2019-03-08 | 北京数字认证股份有限公司 | 一种协同数字签名系统及其方法 |
CN104868994B (zh) * | 2015-05-26 | 2019-02-22 | 北京数字认证股份有限公司 | 一种协同密钥管理的方法、装置及系统 |
CN106506170B (zh) * | 2016-12-15 | 2019-08-02 | 北京三未信安科技发展有限公司 | 一种基于rsa的分布式签名方法与系统 |
-
2018
- 2018-04-20 CN CN201810358847.5A patent/CN108270575B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108270575A (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109714167B (zh) | 适用于移动应用签名的身份认证与密钥协商方法及设备 | |
CN107483212B (zh) | 一种双方协作生成数字签名的方法 | |
CN109818730B (zh) | 盲签名的获取方法、装置和服务器 | |
CN109981562B (zh) | 一种软件开发工具包授权方法及装置 | |
CN101212293B (zh) | 一种身份认证方法及系统 | |
US20140075186A1 (en) | Multiple Access Key Fob | |
CN113596046B (zh) | 一种双向认证方法、装置、计算机设备和计算机可读存储介质 | |
CN111600869B (zh) | 一种基于生物特征的验证码认证方法及系统 | |
CN113221128B (zh) | 账号和密码的存储方法及注册管理系统 | |
JP6043804B2 (ja) | 組み合わされたデジタル証明書 | |
CN104821941B (zh) | 智能卡口令认证及修改密码方法 | |
CN112351037B (zh) | 用于安全通信的信息处理方法及装置 | |
CN112751821A (zh) | 一种数据传输方法、电子设备和一种存储介质 | |
CN112055019B (zh) | 一种建立通信信道的方法及用户终端 | |
CN109361681B (zh) | 国密证书认证方法、装置及设备 | |
WO2023124958A1 (zh) | 密钥更新方法、服务器、客户端及存储介质 | |
CN112437068B (zh) | 认证及密钥协商方法、装置和系统 | |
KR101253683B1 (ko) | 연쇄 해시에 의한 전자서명 시스템 및 방법 | |
CN110690969B (zh) | 一种多方协同完成双向ssl/tls认证的方法和系统 | |
CN111654481B (zh) | 一种身份认证方法、装置和存储介质 | |
CN106411520B (zh) | 一种虚拟资源数据的处理方法、装置及系统 | |
CN108664814B (zh) | 一种基于代理的群组数据完整性验证方法 | |
CN108270575B (zh) | 一种数字签名方法及装置 | |
CN108932425B (zh) | 一种离线身份认证方法、认证系统及认证设备 | |
KR101256114B1 (ko) | 다수의 mac검증서버에 의한 메시지인증코드 검증 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |