CN113868684A - 一种签名方法、装置、服务端、介质以及签名*** - Google Patents
一种签名方法、装置、服务端、介质以及签名*** Download PDFInfo
- Publication number
- CN113868684A CN113868684A CN202111161751.8A CN202111161751A CN113868684A CN 113868684 A CN113868684 A CN 113868684A CN 202111161751 A CN202111161751 A CN 202111161751A CN 113868684 A CN113868684 A CN 113868684A
- Authority
- CN
- China
- Prior art keywords
- private key
- key
- signature
- ciphertext
- user side
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本公开提供了一种签名方法、装置、服务端、介质以及签名***,方法包括:获取用户端发送密钥对签名请求;根据密钥对签名请求的密钥标识从数据库中读取私钥密文,私钥密文为密码机和用户端依次加密私钥得到的密文;获取用户端利用加密私钥解密私钥密文得到的第一私钥密文;利用密码机解密所述第一私钥密文得到私钥,利用私钥对待签名数据进行签名运算得到签名值;发送签名值至用户端。通过上述技术方案,通过将私钥密文存储在数据库实现多人共用,并使用双重加密私钥的方法,保证的私钥安全存储,服务端无法独立使用双重加密的私钥进行运算,用户端也无法独立使用双重加密的私钥进行运算,解决了用户端以及服务端的信任问题,提高了签名的安全性。
Description
技术领域
本申请涉及签名技术领域,特别涉及一种签名方法、装置、服务端、介质以及签名***。
背景技术
在电子签名应用场景中,存在着在多人共用一个私钥完成签名的业务场景。在一般的签名应用中,签名私钥是存储于UKey(智能密码钥匙)等用户端密码模块之中,执行签名操作时是由用户在终端使用UKey等用户端密码模块完成签名运算。
以用户端密码模块为Ukey为例,在有些签名场景中,如签章应用,在当前的应用模式中,一个电子***制作出来后,通常是签章签名私钥存储在UKey中,签章时***该UKey,在终端完成数字签名运算,也就是用户只有在拿到了物理的UKey后才能执行签章签名操作;但在实际的业务场景中,根据业务的需要,通常是需要多人共同使用同一个***对业务进行签章,这带来的问题是,在传统模式中因物理UKey的限制,无法真正实现多人共同使用同一***执行签章的业务场景。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
发明内容
本申请的目的是提供一种签名方法、装置、服务端、介质以及签名***,能够真正实现多人共同使用同一***执行签章的业务场景,且可以提高签名的安全性。其具体方案如下:
本申请公开了一种签名方法,包括:
获取用户端发送密钥对签名请求;
根据所述密钥对签名请求的密钥标识从数据库中读取私钥密文,所述私钥密文为密码机和用户端依次加密私钥得到的密文;
获取所述用户端利用加密私钥解密所述私钥密文得到的第一私钥密文;
利用所述密码机的密钥加密密钥解密所述第一私钥密文得到所述私钥,并利用所述私钥对所述签名请求中的待签名数据进行签名运算得到签名值;
发送所述签名值至所述用户端。
优选地,还包括:
利用签名私钥对待发送的第一数据进行签名,将签名后第一数据发送至所述用户端,以使所述用户端对所述签名后第一数据进行验证;
对所述用户端发送的签名后第二数据进行验证,当通过验证后,得到第二数据;
其中,所述第一数据至少包括所述私钥密文、所述签名值;
所述第二数据至少包括:所述密钥对签名请求、所述第一私钥密文。
优选地,所述根据所述密钥对签名请求的密钥标识从数据库中读取私钥密文之后,还包括:
产生会话密钥,并使用用户公钥加密;
将加密后会话密钥发送至所述用户端,以使所述用户端用私钥解密所述加密后会话密钥,得到所述会话密钥,并利用所述会话密钥加密所述第一私钥密文;
利用所述密码机解密会话密钥加密后的第一私钥密文,得到所述第一私钥密文。
优选地,所述发送所述签名值至所述用户端,包括:
利用用户公钥加密所述签名值;
将加密后的签名值发送至所述用户端,以使所述用户端利用加密私钥对所述加密后的签名值进行解密,得到所述签名值。
优选地,所述私钥生成的过程包括:
获取用户端发送的密钥创建请求;
从所述密钥创建请求的用户加密证书中提取用户加密公钥;
利用所述密码机产生公钥和私钥,并使用所述密码机的所述密钥加密密钥加密所述私钥得到所述第一私钥密文;
利用所述用户加密公钥对所述第一私钥密文进行加密,得到所述私钥密文,并将所述私钥密文存储至所述数据库。
优选地,还包括:
获取所述用户端的授权请求;
根据所述授权请求中的密钥对标识,从所述数据库中读取对应的所述私钥密文,以使所述用户端利用加密私钥解密所述私钥密文,得到所述第一私钥密文,并根据被授权人的加密证书的公钥加密所述第一私钥密文;
获取所述第一私钥密文,并确定密钥对生成类型为授权生成。
优选地,还包括:
获取所述用户端的撤销授权请求;
根据所述撤销授权请求中的密钥对标识,将所述数据库中的与密钥对标识对应的密钥对的生成类型记录为撤销授权。
优选地,还包括:
记录业务操作数据。
本申请公开了一种签名装置,包括:
请求获取模块,用于获取用户端发送密钥对签名请求;
读取模块,用于根据密钥对签名请求的密钥标识从数据库中读取私钥密文,私钥密文为密码机和用户端依次加密私钥得到的密文;
第一私钥密文获取模块,用于获取用户端利用加密私钥解密私钥密文得到的第一私钥密文;
解密与签名模块,用于利用密码机的密钥加密密钥解密所述第一私钥密文得到私钥,并利用所述私钥对所述签名请求中的待签名数据进行签名运算得到签名值;
发送模块,用于发送所述签名值至用户端。
本申请公开了一种服务端,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述签名方法的步骤。
本申请公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述签名方法的步骤。
本申请公开了一种签名***,包括:
用户端;用户端密码模块;数据库;密码机;与所述用户端、所述数据库、所述密码机连接的如上所述的服务端。
本申请公开了一种签名方法,包括:获取用户端发送密钥对签名请求;根据密钥对签名请求的密钥标识从数据库中读取私钥密文,私钥密文为密码机和用户端依次加密私钥得到的密文;获取用户端利用加密私钥解密私钥密文得到的第一私钥密文;利用密码机的密钥加密密钥解密所述第一私钥密文得到私钥,并利用私钥对签名请求中的待签名数据进行签名运算得到签名值;发送所述签名值至用户端。
通过上述技术方案,利用加密算法包括密码机产生的密钥对中的私钥,密码机和用户端依次加密私钥得到的私钥密文,存储在数据库中,使用双重加密私钥的方法,保证的私钥安全存储,服务端无法独立使用双重加密的私钥进行运算,用户端也无法独立使用双重加密的私钥进行运算,解决了用户端以及服务端的信任问题,提高了签名的安全性。且通过将私钥密文存储在数据库来实现多个用户端对私钥的共同使用,以解决现有技术中无法真正实现多人共同使用同一***执行签章的问题。本公开涉及的一种签名装置、服务端、计算机可读存储介质、签名***也解决了相应技术问题。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为本申请实施例提供的一种签名方法的流程图;
图2为本申请实施例一种以用户端与服务端之间通信完整性验证的方式进行签名的示例;
图3为本申请实施例提供的一种私钥生成的流程示意图;
图4为本申请实施例提供的一种私钥生成的流程示意图;
图5为本申请实施例提供的一种密钥授权的流程示意图;
图6为本申请实施例提供的一种密钥授权的流程示意图;
图7为本申请实施例提供的一种撤销密钥授权的流程示意图;
图8为本申请实施例提供的一种撤销密钥授权的流程示意图;
图9为本申请实施例提供的一种签名装置的结构示意图;
图10是根据一示例性实施例示出的一种服务端的框图;
图11为本申请实施例提供的一种***组成架构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在有些签名场景中,如签章应用,在当前的应用模式中,一个电子***制作出来后,通常是签章签名私钥存储在UKey等用户端密码模块中,以Ukey为例,签章时***该UKey,在终端完成数字签名运算,也就是用户只有在拿到了物理的UKey后才能执行签章签名操作;但在实际的业务场景中,根据业务的需要,通常是需要多人共同使用同一个***对业务进行签章,这带来的问题是,在传统模式中因物理UKey的限制,无法真正实现多人共同使用的一***执行签章的业务场景。
基于上述技术问题,本实施例提供一种签名方法,利用加密算法包括密码机产生的密钥对中的私钥,密码机和用户端依次加密私钥得到的私钥密文,存储在数据库中,使用双重加密私钥的方法,保证的私钥安全存储,服务端无法独立使用双重加密的私钥进行运算,用户端也无法独立使用双重加密的私钥进行运算,解决了用户端以及服务端的信任问题,提高了签名的安全性。
具体请参考图1,图1为本申请实施例提供的一种签名方法的流程图,具体包括:
S101、获取用户端发送密钥对签名请求;
用户在用户端使用用户端密码模块,向服务端发起密钥对签名请求,其中,该密钥对签名请求的请求内容包括但是不限定于密钥标识、待签名数据,且用户端密码模块包含但不限于UKey、软件密码模块、安全芯片、密码卡、服务器密码机、签名验签服务器等形态。
S102、根据密钥对签名请求的密钥标识从数据库中读取私钥密文,私钥密文为密码机和用户端依次加密私钥得到的密文;
根据密钥标识从数据库中读取私钥密文,该私钥密文是密码机生成私钥后,私钥经过密码机内部的密钥加密密钥(密码机中用于加密密钥的密钥)加密私钥后得到第一私钥密文,第一私钥密文再由用户端用户加密公钥加密后得到的私钥密文,该私钥密文经过密码机和用户的两重加密。
本步骤的目的是从数据库中读取到私钥密文。
进一步的,还可以包括:
根据密钥标识及用户签名证书SN从数据库中查询密钥;
判断密钥状态是否正常,若正常,则根据密钥标识从数据库中读取私钥密文。
其中,根据密钥标识以及用户签名证书可以从数据库中查询到相应的密钥,数据库中存储有多个密钥,存储方式本实施例不再进行限定,可以使按照密钥标识进行存储,还可以按照用户签名证书进行存储,当然,为了便于查询,可以按照密钥标识和用户签名证书进行存储,以便直接查询到密钥。查询到密钥之后,得到密钥状态,密钥状态包括但是不限定于正常状态、不正常状态,其中,不正常状态可以包括超过设定时间的状态,当超过设定时间该密钥为不可用状态。只有当密钥状态是正常状态时,可以根据标识从数据库中读取私钥秘文。
S103、获取用户端利用加密私钥解密私钥密文得到的第一私钥密文;
用户端获取私钥密文,并利用加密私钥解密私钥密文,得到第一私钥密文,此时该第一私钥密文仅仅包括密码机对私钥加密的部分。
S104、利用密码机的密钥加密密钥解密第一私钥密文得到私钥,并利用私钥对签名请求中的待签名数据进行签名运算得到签名值;其中,第一私钥密文是用户端利用加密私钥解密私钥密文得到的;
服务端得到第一私钥密文后,利用密码机的密钥加密密钥解密第一私钥密文,得到私钥,然后利用私钥对签名请求中的待签名数据进行签名,得到签名值。
S105、发送签名值至用户端。
最终用户得到签名值,完成签名运算。
基于上述技术方案,本实施例利用加密算法包括密码机产生的密钥对中的私钥,密码机和用户端依次加密私钥得到的私钥密文,存储在数据库中,使用双重加密私钥的方法,保证的私钥安全存储,服务端无法独立使用双重加密的私钥进行运算,用户端也无法独立使用双重加密的私钥进行运算,解决了用户端以及服务端的信任问题,提高了签名的安全性。且通过将私钥密文存储在数据库来实现多个用户端对私钥的共同使用,以解决现有技术中无法真正实现多人共同使用同一***执行签章的问题。
进一步的,为了提高服务端和用户端的数据传输的安全性,签名方法,还包括:
S106、利用签名私钥对待发送的第一数据进行签名,将签名后第一数据发送至用户端,以使用户端对签名后第一数据进行验证;
S107、对用户端发送的签名后第二数据进行验证,当通过验证后,得到第二数据;
其中,第一数据至少包括私钥密文、签名值;第二数据至少包括:密钥对签名请求、第一私钥密文。
本实施例不对S106、S107的顺序进行限定,可以先执行S106再执行S107,还可以是先执行S107再执行S106。
其中,服务端进行验证的过程可以包括下属任意一种或者组合:确认是否在时间窗口内;使用用户的签名证书验证完整性;使用证书链验证签名证书的真实性;使用CRL验证签名证书的有效性。
时间窗口用户可根据实际需求进行设置,本实施例不再进行限定。使用用户的签名证书验证完成性、证书链验证签名证书的真实性以及用CRL验证签名证书的有效性均为现有技术,本实施例不再进行赘述,只要是能够实现本实施例的目的即可。
用户端进行验证的过程可以包括下属任意一种或者组合:确认是否在时间窗口内;使用服务端的签名证书验证完整性;使用证书链验证签名证书的真实性;使用CRL验证签名证书有效性。
可以理解的是,本实施例中用户端和服务端之间的所有通信均进行数字签名以及验签,当然进行签名以及验签的第一数据包括私钥密文、签名值;第二数据包括:密钥对签名请求、第一私钥密文,用户可根据实际需求进行设置,通过通信的签名以及验签能够保证通信数据的完整性、真实性,避免了通信的内容被篡改的情况发生。
基于上述技术方案,本实施例为了保证用户端与服务端之间通信的完整性、真实性,通过数字签名的验签确认通信数据的完整性、不可抵赖性,通过对签名证书的验证,确认真实性。
进一步的,为了保证会话的私密性,提高签名的安全性,本实施例从用户公钥加密转换成服务端会话密钥加密,保证了安全性,根据密钥对签名请求的密钥标识从数据库中读取私钥密文之后,还包括:
S108、产生会话密钥,并使用用户公钥加密;
S109、将加密后会话密钥发送至用户端,以使用户端用私钥解密加密后会话密钥,得到会话密钥,并利用会话密钥加密第一私钥密文;
S110、利用密码机解密会话密钥加密后的第一私钥密文,得到第一私钥密文。
本实施例产生会话密钥ek,并使用用户公钥加密得到Euk(ek);并反馈至用户端,可以理解的是,本步骤可以建立在用户端与服务端通话进行保护的情况下,当然,也可以不进行保护,用户可根据实际需求进行设置。然后,用户端用私钥解密加密后的会话密钥,得到会话密钥,并利用会话密钥加密第一私钥密文,用户端密钥转保护,从用户公钥加密转换成服务端会话密钥加密。保证了第一私钥密文的准确性。
基于上述技术方案,本实施例通过用户端密钥转保护,从用户公钥加密转换为服务端会话密钥加密,保证了会话的私密性,提高了签名的安全性。
进一步的,发送签名值至用户端,包括:
利用用户公钥加密签名值;
将加密后的签名值发送至用户端,以使用户端利用加密私钥对加密后的签名值进行解密,得到签名值。
本实施例在生成签名值后,为了保证数据不被篡改,本申请中利用用户公钥进行签名值的加密,并反馈至用户端,以使用户端解密得到签名值。
请参考图2,图2为本申请实施例一种以用户端与服务端之间通信完整性验证的方式进行签名的示例,包括:
1、用户在用户端使用UKey或其他用户端密码模块,向服务端发起使用密钥对签名请求,请求度内容包含:
(1)密钥对标识;
(2)用户使用签名私钥对请求进行签名SM=Suk(M),其中M为请求,Suk()为私钥签名的算法;
2、服务端验证用户端请求:
(1)确认申请请求在时间窗口内;
(2)使用用户的签名证书验证请求的完整性Vuk(SM,M),其中,Vuk()为公钥验证签名的算法;
(3)使用证书链验证签名证书的真实性Vchain(cert_s),其中,Vchain()为使用证书链验证数字证书的方式,cert_s为签名证书;
(4)使用CRL验证签名证书有效性Vcrl(cert_s),其中Vcrl()为CRL验证方法;
3、服务端返回私钥密文
(1)根据密钥ID及用户签名证书SN查询密钥;
(2)确认密钥状态为正常;
(3)从数据库读取私钥密文,准备返回;Euk(Emk(key_s)),其中,key_s为私钥,Emk()为密码机密钥加密密钥的加密算法,Euk()为用户端利用用户公钥的加密算法;
(4)产生会话密钥ek,并用使用用户公钥加密Euk(ek);
(5)会话密钥句柄与申请业务ID(Identity document,身份标识)绑定临时存储在内存中;
(6)读取托管密钥对应的签名证书,准备返回;
(7)服务端使用签名私钥对准备返回的数据进行签名SM=Ssk(M),Ssk()为服务端私钥签名的算法;
(8)返回响应数据;
(9)记录申请使用密钥对业务数据;
4、用户端验证服务端请求:
(1)确认申请请求在时间窗口内;
(2)使用服务端的签名证书验证请求的完整性Vsk(SM,M),其中,Vsk()为服务端的签名验证算法;
(3)使用证书链验证签名证书的真实性Vchain(cert_s);
(4)使用CRL验证签名证书有效性Vcrl(cert_s);
5、用户端密钥转保护,从用户公钥加密转换为服务端会话密钥加密:
(1)服务端响应中提取私钥密文,使用UKey中的用户加密私钥解密Duk(Euk(Emk(key_s)))=Emk(key_s),其中Duk()为用户私钥解密算法;
(2)从服务端响应中提取会话密钥,用私钥解密出会话密钥Duk(Euk(ek))=ek;
(3)使用会话密钥加密私钥密文Eek(Emk(key_s));
6、用户端请求签名操作
(1)从响应中读取待签名数据,计算原文签名杂凑H(Src),其中,Src为待签名数据,H()为杂凑值计算方式;
(2)组装原文签名杂凑H(Src)、私钥密文Eek(Emk(key_s))、密钥对标识等数据,生成请求并签名SM=Suk(M);
7、服务端验证用户端请求:
(1)确认申请请求在时间窗口内;
(2)使用用户的签名证书验证请求的完整性Vuk(SM,M);
(3)使用证书链验证签名证书的真实性Vchain(cert_s);
(4)使用CRL验证签名证书有效性Vcrl(cert_s);
8、执行签名运算
(1)提取数据库中的对应密钥数据(密钥ID及用户证书SN一致),验证数据的签名Vsk(M);
(2)根据申请业务ID,找到临时存储的会话密钥句柄;
(3)确认密钥状态为正常;
(4)私钥密文、会话密钥句柄导入密码模块;
(5)在密码设备内,解密出私钥明文;
(6)Dmk(Dek(Eek(Emk(key_s))))=key_s,Dmk()为密码机密钥加密密钥解密的算法;
(7)在密码设备内,对数据执行签名运算Sign=Skey_s(Src),sign为签名值;
(8)销毁会话密钥;
9、返回签名运算响应
(1)使用用户公钥加密签名值Euk(Sign);
(2)服务端使用签名私钥对准备返回的数据进行签名SM=Ssk(M);
(3)返回响应数据;
(4)记录签名操作业务数据;
10、用户端验证服务端请求:
(1)确认申请请求在时间窗口内;
(2)使用服务端的签名证书验证请求的完整性Vsk(SM,M);
(3)使用证书链验证签名证书的真实性Vchain(cert_s);
(4)使用CRL验证签名证书有效性Vcrl(cert_s);
11、用户端获取签名值数据
(1)用户端用加密私钥解密签名密文Duk(Euk(Sign));
(2)验证签名值Vkey_p(Sign,Hkey_p(M));
(3)得到签名值,完成签名运算。
可以理解的是,上述步骤可以是全部步骤或者部分步骤构成签名方法,本实施例不再进行限定,用户可根据实际需求进行组合,只要是能够实现本实施例的目的均属于本申请的保护范围。
进一步的,本实施例提供一种私钥生成的方法,请参考图3,图3为本申请实施例提供的一种私钥生成的流程示意图,包括:
S21、获取用户端发送的密钥创建请求;
其中,密钥创建请求包括但是不限定于用户加密证书。
S22、从密钥创建请求的用户加密证书中提取用户加密公钥;
S23、利用密码机产生公钥和第一私钥密文;
密码机产生密钥对,密钥对包括公钥和私钥,密码机对私钥进行第一重加密,得到第一私钥密文。避免仅仅通过用户端即可进行解密造成的私钥泄露的情况的发生。
S24、利用用户加密公钥对第一私钥密文进行加密,得到私钥密文,并将私钥密文存储至数据库。
基于上述技术方案,本实施例通过密码机对私钥进行一重加密,然后用户加密公钥对一重加密得到第一私钥密文进行加密,得到私钥密文,采用双重加密,保证的私钥安全存储,服务端无法独立使用双重加密的私钥进行运算,用户端也无法独立使用双重加密的私钥进行运算,解决了用户端以及服务端的信任问题,提高了签名的安全性。
请参考图4,图4为本申请实施例提供的一种私钥生成的流程示意图,包括:
1、用户在用户端***UKey或其他类型用户端密码模块,向服务端发起托管密钥创建申请,申请数据包含:
(1)用户的加密证书、签名证书;
(2)并使用用户签名私钥对申请信息进行签名。
2、服务端收到申请后,验证申请:
(1)确认申请请求在时间窗口内;
(2)使用用户的签名证书验证申请的完整性;
(3)验证签名证书的真实性、有效性,比对用户签名证书、加密证书的一致性。
3、服务端调用密码机,生成密钥对;
(1)由业务管理员对申请进行审核;
(2)从用户加密证书中提取公钥;
(3)密码机在内部产生密钥对,并使用密钥加密密钥加密私钥数据,再用用户加密公钥加密;
(4)服务端从密码机导出密钥对,其中,公钥为明文,私钥为密文(第一私钥密文);
(5)服务端记录申请密钥对业务数据;
4、密钥存储
(1)组装成存储密钥数据,其中,密钥生成类型为创建生成;
(2)使用服务端私钥对公钥、私钥密文、签名证书等数据进行签名;
(3)密钥对、证书、签名等数据存储到数据库,并记录整个过程。
可以理解的是,上述步骤可以是全部步骤或者部分步骤构成签名方法,本实施例不再进行限定,用户可根据实际需求进行组合,只要是能够实现本实施例的目的均属于本申请的保护范围。
进一步的,本实施例提供一种密钥授权的方式,请参考图5,图5为本申请实施例提供的一种密钥授权的流程示意图,包括:
S31、获取用户端的授权请求;
根据授权请求中的密钥对标识,从数据库中读取对应的私钥密文,以使用户端利用加密私钥解密私钥密文,得到第一私钥密文,并根据被授权人的加密证书的公钥加密第一私钥密文;
S32、获取第一私钥密文,并确定密钥对生成类型为授权生成。
当得到第一私钥密文后,确定授权成功,将密钥对生成类型修改为授权生成。
密钥授权操作只能由密钥的创建者发起,请参考图6,图6为本申请实施例提供的一种密钥授权的流程示意图,详细业务过程如下:
1、密钥创建者用户在用户端***UKey或其他类型用户端密码模块,向服务端发起授权申请,申请数据包含:
(1)密钥对标识;
(2)并使用用户的签名私钥对申请信息进行签名SM=Suk(M);
2、服务端收到申请后,验证申请:
(1)确认申请请求在时间窗口内;
(2)使用用户的签名证书验证申请的完整性Vuk(SM,M);
(3)使用证书链验证签名证书、加密证书的真实性Vchain(cert_s)、Vchain(cert_e);
(4)使用CRL验证签名证书Vcrl(cert_s)、加密证书的有效性、Vcrl(cert_e);
3、服务端返回私钥密文
(1)根据密钥ID及用户签名证书SN查询密钥;
(2)确认密钥状态为正常;
(3)从数据库读取私钥密文,准备返回Euk(Emk(key_s));
(4)服务端使用签名私钥对准备返回的数据进行签名SM=Ssk(M);
(5)返回响应数据;
(6)记录授权密钥对业务数据;
4、用户端验证服务端请求:
(1)确认申请请求在时间窗口内;
(2)使用服务端的签名证书验证请求的完整性Vsk(SM,M);
(3)使用证书链验证签名证书的真实性Vchain(cert_s);
(4)使用CRL验证签名证书有效性Vcrl(cert_s);
5、用户端密钥转保护,从用户公钥加密转换为被授权人公钥加密:
(1)服务端响应中提取私钥密文,使用Key中的用户加密私钥解密;Duk(Euk(Emk(key_s)))=Emk(key_s);
(2)获取被授权人的加密证书,使用其公钥加密解密后的私钥密文;Euk1(Emk(key_s));
6、上报授权请求操作;
(1)获取被授权人签名证书;
(2)组装被授权人签名证书、私钥密文(Euk1(Emk(key_s))),生成请求并签名SM=Suk(M);
7、服务端验证用户端请求:
(1)确认申请请求在时间窗口内;
(2)使用用户的签名证书验证请求的完整性Vuk(SM,M);
(3)使用证书链验证签名证书的真实性Vchain(cert_s);
(4)使用CRL验证签名证书有效性Vcrl(cert_s);
8、存储授权密钥
(1)从创建者的对应托管密钥数据中提取相关数据,组成一条新的密钥对数据,其中密钥对的生成类型为授权生成。
(2)使用服务端私钥对公钥、私钥密文(Euk1(Emk(key_s)))、签名证书等数据进行签名Ssk(M);
(3)密钥对、证书、签名等数据存储到数据库;
(4)记录授权操作业务。
可以理解的是,上述步骤可以是全部步骤或者部分步骤构成签名方法,本实施例不再进行限定,用户可根据实际需求进行组合,只要是能够实现本实施例的目的均属于本申请的保护范围。
进一步的,本实施例提供一种撤销密钥授权的方式,请参考图7,图7为本申请实施例提供的一种撤销密钥授权的流程示意图,包括:
S33、获取用户端的撤销授权请求;
S34、根据撤销授权请求中的密钥对标识,将数据库中的与密钥对标识对应的密钥对的生成类型记录为撤销授权。
本实施例以用户端与服务端之间通信完整性验证的方式进行示例,请参考图8,图8为本申请实施例提供的一种撤销密钥授权的流程示意图,包括:
密钥授权撤销操作只能由密钥的创建者发起,详细业务过程如下:
1、用户在用户端***UKey或其他类型用户端密码模块,向服务端发起密钥授权撤销请求,请求度内容包含:
(1)密钥对标识;
(2)被撤销授权用户证书;
(3)用户使用签名私钥对请求进行签名SM=Suk(M);
2、服务端验证用户端请求:
(1)确认申请请求在时间窗口内;
(2)使用用户的签名证书验证请求的完整性Vuk(SM,M);
(3)使用证书链验证签名证书的真实性Vchain(cert_s);
(4)使用CRL验证签名证书有效性Vcrl(cert_s);
3、撤销密钥
(1)根据密钥ID及用户签名证书SN查询密钥;
(2)数据库中修改对应密钥的状态为撤销;
(3)清除数据库记录中的密钥数据;
(4)对记录进行重新签名Vsk(M);
(5)记录撤销授权操作业务。
可以理解的是,上述步骤可以是全部步骤或者部分步骤构成签名方法,本实施例不再进行限定,用户可根据实际需求进行组合,只要是能够实现本实施例的目的均属于本申请的保护范围。
综上可知,解决了在服务端实现数字签名的业务及安全问题,用户通过申请一个集中式私钥,可以把该私钥授权给其他人使用,并且,通过双重的密钥加密,可以确保使用的过程真实可信,服务***无法独立使用双重加密的私钥进行任何运算,用户端也无法独立使用双重加密的私钥进行运算,解决了双方的信任问题,安全性得到了有效保障。同时采用用户加密私钥保护及服务端密钥加密密钥对签名私钥的保护方法及过程。使用双重加密的私钥安全存储方法。使用一次一密临时密钥和及服务端密码加密密钥对签名私钥双重加密的私钥数据传输方法。
进一步的,为了保证***可以溯源,本实施例可以记录业务操作数据,保证了每一项业务均被记录,便于用户查阅。
下面对本申请实施例提供的一种签名装置进行介绍,下文描述的签名装置与上文描述的签名方法可相互对应参照,相关模块均设置于服务端中,参考图9,图9为本申请实施例提供的一种签名装置的结构示意图,包括:
请求获取模块910,用于获取用户端发送密钥对签名请求;
读取模块920,用于根据密钥对签名请求的密钥标识从数据库中读取私钥密文,私钥密文为密码机和用户端依次加密私钥得到的密文;
第一私钥密文获取模块930,用于获取用户端利用加密私钥解密私钥密文得到的第一私钥密文;
解密与签名模块940,用于利用密码机的密钥加密密钥解密第一私钥密文得到私钥,并利用私钥对签名请求中的待签名数据进行签名运算得到签名值;
发送模块950,用于发送签名值至用户端。
在一些实施例中,还包括:
签名模块,用于利用签名私钥对待发送的第一数据进行签名,将签名后第一数据发送至用户端,以使用户端对签名后第一数据进行验证;
验证模块,用于对用户端发送的签名后第二数据进行验证,当通过验证后,得到第二数据;
其中,第一数据至少包括私钥密文、签名值;
第二数据至少包括:密钥对签名请求、第一私钥密文。
优选地,还包括:
临时会话密钥产生模块,用于产生会话密钥,并使用用户公钥加密;
会话密钥发生模块,用于将加密后会话密钥发送至用户端,以使用户端用私钥解密加密后会话密钥,得到会话密钥,并利用会话密钥加密第一私钥密文;
加密模块,用于利用密码机解密会话密钥加密后的第一私钥密文,得到第一私钥密文。
优选地,发送模块950,包括:
公钥加密单元,用于利用用户公钥加密签名值;
签名值发送单元,用于将加密后的签名值发送至用户端,以使用户端利用加密私钥对加密后的签名值进行解密,得到签名值。
优选地,还包括:私钥生成模块,用于:
获取用户端发送的密钥创建请求;
从密钥创建请求的用户加密证书中提取用户加密公钥;
利用密码机产生公钥和私钥,并使用密码机的密钥加密密钥加密私钥得到第一私钥密文;
利用用户加密公钥对第一私钥密文进行加密,得到私钥密文,并将私钥密文存储至数据库。
优选地,还包括:授权模块,用于:
获取用户端的授权请求;
根据授权请求中的密钥对标识,从数据库中读取对应的私钥密文,以使用户端利用加密私钥解密私钥密文,得到第一私钥密文,并根据被授权人的加密证书的公钥加密第一私钥密文;
获取第一私钥密文,并确定密钥对生成类型为授权生成。
优选地,还包括:撤销密钥授权模块,用于:
获取用户端的撤销授权请求;
根据撤销授权请求中的密钥对标识,将数据库中的与密钥对标识对应的密钥对的生成类型记录为撤销授权。
优选地,还包括:
记录模块,用于记录业务操作数据。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请公开了一种服务端,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上签名方法的步骤。
图10是根据一示例性实施例示出的一种服务端100的框图。如图7所示,该服务端100可以包括:处理器101,存储器102。该服务端100还可以包括多媒体组件103,输入/输出(I/O)接口104,以及通信组件105中的一者或多者。
其中,处理器101用于控制该服务端100的整体操作,以完成上述的签名方法中的全部或部分步骤。存储器102用于存储各种类型的数据以支持在该服务端100的操作,这些数据例如可以包括用于在该服务端100上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或通过通信组件105发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口104为处理器101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件105用于该服务端100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件105可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,服务端100可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的签名方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的签名方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器102,上述程序指令可由服务端100的处理器101执行以完成上述的签名方法。
本申请公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上签名方法的步骤。
本申请公开了一种签名***,请参考图11,图11为本申请实施例提供的一种***组成架构示意图,包括:
用户端;用户端密码模块;数据库;密码机;与所述用户端、所述数据库、所述密码机连接的如上所述的服务端。
其中,用户端密码模块包含但不限于UKey、软件密码模块、安全芯片、密码卡、服务器密码机、签名验签服务器等形态;密码机包含但不限于安全芯片、密码卡、服务器密码机、签名验签服务器等形态。
为了解决多人共同使用一个私钥的场景,同时解决私钥使用的安全风险,本方法中,签名私钥从用户端密码模块在转移了服务端,签名运算从用户端密码模块转移到了服务端密码设备,通过授权策略把私钥的使用权限授予指定的人员使用,由服务端与用户端共同完成签名运算。实现在服务端完成集中式数字签名的应用场景;实现服务端签名的授权场景;私钥使用者与服务端密码设备共同完全签名运算,单独一方无法完成签名操作,确保了使用安全。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (12)
1.一种签名方法,其特征在于,包括:
获取用户端发送密钥对签名请求;
根据所述密钥对签名请求的密钥标识从数据库中读取私钥密文,所述私钥密文为密码机和用户端依次加密私钥得到的密文;
获取所述用户端利用加密私钥解密所述私钥密文得到的第一私钥密文;
利用所述密码机的密钥加密密钥解密所述第一私钥密文得到所述私钥,并利用所述私钥对所述签名请求中的待签名数据进行签名运算得到签名值;
发送所述签名值至所述用户端。
2.根据权利要求1所述的签名方法,其特征在于,还包括:
利用签名私钥对待发送的第一数据进行签名,将签名后第一数据发送至所述用户端,以使所述用户端对所述签名后第一数据进行验证;
对所述用户端发送的签名后第二数据进行验证,当通过验证后,得到第二数据;
其中,所述第一数据至少包括所述私钥密文、所述签名值;
所述第二数据至少包括:所述密钥对签名请求、所述第一私钥密文。
3.根据权利要求1所述的签名方法,其特征在于,所述根据所述密钥对签名请求的密钥标识从数据库中读取私钥密文之后,还包括:
产生会话密钥,并使用用户公钥加密;
将加密后会话密钥发送至所述用户端,以使所述用户端用私钥解密所述加密后会话密钥,得到所述会话密钥,并利用所述会话密钥加密所述第一私钥密文;
利用所述密码机解密会话密钥加密后的第一私钥密文,得到所述第一私钥密文。
4.根据权利要求1所述的签名方法,其特征在于,所述发送所述签名值至所述用户端,包括:
利用用户公钥加密所述签名值;
将加密后的签名值发送至所述用户端,以使所述用户端利用加密私钥对所述加密后的签名值进行解密,得到所述签名值。
5.根据权利要求1所述的签名方法,其特征在于,所述私钥生成的过程包括:
获取用户端发送的密钥创建请求;
从所述密钥创建请求的用户加密证书中提取用户加密公钥;
利用所述密码机产生公钥和私钥,并使用所述密码机的所述密钥加密密钥加密所述私钥得到所述第一私钥密文;
利用所述用户加密公钥对所述第一私钥密文进行加密,得到所述私钥密文,并将所述私钥密文存储至所述数据库。
6.根据权利要求1所述的签名方法,其特征在于,还包括:
获取所述用户端的授权请求;
根据所述授权请求中的密钥对标识,从所述数据库中读取对应的所述私钥密文,以使所述用户端利用加密私钥解密所述私钥密文,得到所述第一私钥密文,并根据被授权人的加密证书的公钥加密所述第一私钥密文;
获取所述第一私钥密文,并确定密钥对生成类型为授权生成。
7.根据权利要求6所述的签名方法,其特征在于,还包括:
获取所述用户端的撤销授权请求;
根据所述撤销授权请求中的密钥对标识,将所述数据库中的与密钥对标识对应的密钥对的生成类型记录为撤销授权。
8.根据权利要求1所述的签名方法,其特征在于,还包括:
记录业务操作数据。
9.一种签名装置,其特征在于,包括:
请求获取模块,用于获取用户端发送密钥对签名请求;
读取模块,用于根据密钥对签名请求的密钥标识从数据库中读取私钥密文,私钥密文为密码机和用户端依次加密私钥得到的密文;
第一私钥密文获取模块,用于获取用户端利用加密私钥解密私钥密文得到的第一私钥密文;
解密与签名模块,用于利用密码机的密钥加密密钥解密所述第一私钥密文得到私钥,并利用所述私钥对所述签名请求中的待签名数据进行签名运算得到签名值;
发送模块,用于发送所述签名值至用户端。
10.一种服务端,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述签名方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述签名方法的步骤。
12.一种签名***,其特征在于,包括:
用户端;用户端密码模块;数据库;密码机;与所述用户端、所述数据库、所述密码机连接的如权利要求10所述的服务端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111161751.8A CN113868684A (zh) | 2021-09-30 | 2021-09-30 | 一种签名方法、装置、服务端、介质以及签名*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111161751.8A CN113868684A (zh) | 2021-09-30 | 2021-09-30 | 一种签名方法、装置、服务端、介质以及签名*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113868684A true CN113868684A (zh) | 2021-12-31 |
Family
ID=79001229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111161751.8A Pending CN113868684A (zh) | 2021-09-30 | 2021-09-30 | 一种签名方法、装置、服务端、介质以及签名*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113868684A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584306A (zh) * | 2022-05-05 | 2022-06-03 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
CN114726597A (zh) * | 2022-03-25 | 2022-07-08 | 华润数字科技(深圳)有限公司 | 数据传输方法、装置、***及存储介质 |
CN117081740A (zh) * | 2023-09-05 | 2023-11-17 | 江南信安(南京)科技有限公司 | 基于密码机资源池的密钥管理方法及装置 |
-
2021
- 2021-09-30 CN CN202111161751.8A patent/CN113868684A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726597A (zh) * | 2022-03-25 | 2022-07-08 | 华润数字科技(深圳)有限公司 | 数据传输方法、装置、***及存储介质 |
CN114726597B (zh) * | 2022-03-25 | 2024-04-26 | 华润数字科技(深圳)有限公司 | 数据传输方法、装置、***及存储介质 |
CN114584306A (zh) * | 2022-05-05 | 2022-06-03 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
CN114584306B (zh) * | 2022-05-05 | 2022-08-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
CN117081740A (zh) * | 2023-09-05 | 2023-11-17 | 江南信安(南京)科技有限公司 | 基于密码机资源池的密钥管理方法及装置 |
CN117081740B (zh) * | 2023-09-05 | 2024-02-06 | 江南信安(南京)科技有限公司 | 基于密码机资源池的密钥管理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106104562B (zh) | 机密数据安全储存和恢复***及方法 | |
US10142107B2 (en) | Token binding using trust module protected keys | |
US20220158832A1 (en) | Systems and Methods for Deployment, Management and Use of Dynamic Cipher Key Systems | |
US8130961B2 (en) | Method and system for client-server mutual authentication using event-based OTP | |
CN111464301B (zh) | 一种密钥管理方法及*** | |
CN108199835B (zh) | 一种多方联合私钥解密方法 | |
US8059818B2 (en) | Accessing protected data on network storage from multiple devices | |
CN101212293B (zh) | 一种身份认证方法及*** | |
CN109728909A (zh) | 基于USBKey的身份认证方法和*** | |
CN110958209B (zh) | 基于共享密钥的双向认证方法及***、终端 | |
CN109981255B (zh) | 密钥池的更新方法和*** | |
EP3476078B1 (en) | Systems and methods for authenticating communications using a single message exchange and symmetric key | |
CN113868684A (zh) | 一种签名方法、装置、服务端、介质以及签名*** | |
CN108809936B (zh) | 一种基于混合加密算法的智能移动终端身份验证方法及其实现*** | |
CN112766962A (zh) | 证书的接收、发送方法及交易***、存储介质、电子装置 | |
CN115022868A (zh) | 卫星终端实体认证方法、***及存储介质 | |
WO2022135391A1 (zh) | 身份鉴别方法、装置、存储介质、程序、及程序产品 | |
CN114553441A (zh) | 一种电子合同签署方法及*** | |
CN114696999A (zh) | 一种身份鉴别方法和装置 | |
CN115801232A (zh) | 一种私钥保护方法、装置、设备及存储介质 | |
CN112367329B (zh) | 通信连接认证方法、装置、计算机设备及存储介质 | |
CN113301026A (zh) | 一种服务器间进行通信的方法 | |
CN114760034A (zh) | 一种身份鉴别方法和装置 | |
CN109104393B (zh) | 一种身份认证的方法、装置和*** | |
US8769280B2 (en) | Authentication apparatus and method for non-real-time IPTV system |
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 |