CN111130803B - 数字签名的方法、***及装置 - Google Patents
数字签名的方法、***及装置 Download PDFInfo
- Publication number
- CN111130803B CN111130803B CN201911371679.4A CN201911371679A CN111130803B CN 111130803 B CN111130803 B CN 111130803B CN 201911371679 A CN201911371679 A CN 201911371679A CN 111130803 B CN111130803 B CN 111130803B
- Authority
- CN
- China
- Prior art keywords
- ciphertext
- key
- client
- server
- private key
- 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
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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/3236—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 using cryptographic hash functions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及密码学技术领域,具体提供了一种数字签名的方法、***及装置。数字签名的方法应用于服务端,服务端存储有第二私钥密文,第二私钥密文包括第一密文片段和第二密文片段,第二密文片段是根据用户输入的用户标识信息对第一私钥密文加密得到。根据用户标识信息将第一私钥密文进行加密,从而在数字签名的过程中,根据客户端生成的客户端解密密钥对第二密文片段解密得到第一私钥密文,保证只有在用户参与的情况下才能对第二私钥密文进行解密,从而根据第一私钥密文完成数字签名,伪造者无法单一的伪造用户签名,提高用户私钥使用的安全性,并且本公开方法将第二私钥密文分为多个片段存储,进一步提高用户私钥的安全性。
Description
技术领域
本公开涉及密码学技术领域,具体涉及一种数字签名的方法、***及装置。
背景技术
目前,基于公钥密码学的数字签名随着互联网的发展逐渐应用到各个领域当中。为了提高用户私钥的安全性,传统的做法是将PKI(公钥基础设施)技术和商用的密码芯片结合,例如网络银行,银行***采用USB key(U盾)进行信息加密,确保网上交易的保密性和真实性。
但是该方式在使用性以及便携性上极其不便,需要用户随时携带U盾才能完成数字签名,使用体验较差。为了解决便携性问题,相关技术中,有将私钥以软件的形式存储于客户端中,从而无需用户携带U盾,但是安全性能则大大降低,攻击者完全有可能从客户端中获取完整的用户私钥,从而伪造用户签名,因此如何提高数字签名的安全性成为重要的问题。
发明内容
为提高数字签名的安全性,本公开提供了一种数字签名的方法、***及装置。
第一方面,本公开提供了一种数字签名的方法,应用于服务端,所述服务端存储有第二私钥密文,所述第二私钥密文包括第一密文片段和第二密文片段,所述第二密文片段是根据用户输入的用户标识信息对第一私钥密文加密得到,所述方法包括:
当接收到客户端发送的数字签名请求时,向客户端发送所述第一密文片段,以使所述客户端根据所述用户标识信息和所述第一密文片段生成客户端解密密钥;
接收客户端发送的所述客户端解密密钥和待签名数据;
利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文;
根据所述第一私钥密文对所述待签名数据进行数字签名。
在一些实施方式中,所述第二私钥密文还包括第三密文片段,所述第三密文片段是根据所述用户标识信息对所述第一私钥密文Hash运算得到,
所述利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文,包括:
根据所述客户端解密密钥对所述第二密文片段解密,得到待验证私钥密文;
根据所述客户端解密密钥对所述待验证私钥密文进行Hash运算,得到第四密文片段;
判断所述第四密文片段与所述第三密文片段是否相同,
若是,则确定所述待验证私钥密文为所述第一私钥密文。
在一些实施方式中,所述根据所述第一私钥密文对所述待签名数据进行数字签名,包括:
对所述第一私钥密文解密,得到用户私钥;
利用所述用户私钥对所述待签名数据进行数字签名。
在一些实施方式中,在所述当接收到客户端发送的数字签名请求时,向客户端发送所述第一密文片段之前,还包括:
接收客户端密钥,所述客户端密钥基于所述用户标识信息生成;
随机生成第一服务端密钥参数,并基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;
获取所述第一私钥密文,所述第一私钥密文基于用户私钥生成;
根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到并存储所述第二私钥密文。
在一些实施方式中,所述第二私钥密文包括所述第一密文片段和所述第二密文片段,
所述根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到所述第二私钥密文,包括:
根据所述第一服务端密钥参数得到第一密文片段;
根据所述服务端加密密钥对所述第一私钥密文处理得到第二密文片段。
在一些实施方式中,所述第二私钥密文还包括第三密文片段,
所述根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到所述第二私钥密文,还包括:
根据所述服务端加密密钥对所述第一私钥密文Hash运算得到第三密文片段。
在一些实施方式中,在所述根据所述第一私钥密文对所述待签名数据进行数字签名之后,还包括:
接收客户端密钥,所述客户端密钥基于所述用户标识信息生成;
随机生成第二服务端密钥参数,并基于所述客户端密钥和所述第二服务端密钥参数生成服务端加密密钥;
根据所述服务端加密密钥和所述第二服务端密钥参数对所述第一私钥密文进行加密,得到并存储所述第二私钥密文。
在一些实施方式中,所述服务端包括服务器和密码机,所述方法包括:
服务器接收所述客户端密钥,并将所述客户端密钥发送至密码机;
密码机随机生成所述第一服务端密钥参数,并基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;
密码机获取所述第一私钥密文,并根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到所述第二私钥密文;
密码机将所述第二私钥密文发送至服务器,以使服务器存储所述第二私钥密文。
在一些实施方式中,所述的方法,还包括:
当服务器到接收客户端发送的数字签名请求时,提取所述第一密文片段,并将所述第一密文片段发送至客户端;
服务器接收客户端发送的所述客户端解密密钥和所述待签名数据,并将所述客户端解密密钥和所述待签名数据发送至所述密码机;
密码机利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文,并根据所述第一私钥密文对所述待签名数据进行数字签名;
密码机将签名后的数据发送至服务器,以使服务器将所述签名后的数据发送至客户端。
在一些实施方式中,在基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥之前,还包括:
利用服务端加密因子对所述客户端密钥进行解密,所述服务端加密因子由服务端分配至客户端,以使客户端根据所述服务端加密因子对所述客户端密钥进行加密。
第二方面,本公开提供了一种数字签名的方法,应用于客户端,所述方法包括:
在接收到用户的签名指令时,向服务端发送数字签名请求;
接收服务端根据所述数字签名请求返回的第一密文片段,根据用户输入的用户标识信息和所述第一密文片段生成客户端解密密钥;
向服务端发送所述客户端解密密钥和待签名数据,以使得服务端在根据所述客户端解密密钥对第二密文片段解密得到第一私钥密文之后,根据第一私钥密文对所述待签名数据进行数字签名;所述第二密文片段是服务端根据所述用户标识信息对第一私钥密文加密得到;
接收服务端返回的签名后的数据。
在一些实施方式中,所述的方法,还包括:
获取用户输入的所述用户标识信息;
基于所述用户标识信息生成客户端密钥;
向服务端发送所述客户端密钥,以使得服务端基于所述客户端密钥对所述第一私钥密文进行加密。
在一些实施方式中,在所述向服务端发送所述客户端密钥之前,还包括:
根据服务端加密因子对所述客户端密钥进行加密,所述服务端加密因子由服务端分配。
第三方面,本公开提供了一种私钥协同加密方法,应用于服务端,所述方法包括:
接收客户端密钥,所述客户端密钥由客户端基于用户输入的用户标识信息生成;
随机生成第一服务端密钥参数,基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;
获取第一私钥密文,所述第一私钥密文基于用户私钥生成;
根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到并存储第二私钥密文。
第四方面,本公开提供了一种数字签名***,包括服务端和客户端,所述服务端存储有第二私钥密文,所述第二私钥密文包括第一密文片段和第二密文片段,所述第二密文片段是根据用户输入的用户标识信息对第一私钥密文加密得到;所述服务端用于当接收到客户端发送的数字签名请求时,向客户端发送所述第一密文片段;接收客户端发送的所述客户端解密密钥和待签名数据;利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文;根据所述第一私钥密文对所述待签名数据进行数字签名;
所述客户端用于,在接收到用户的签名指令时,向服务端发送数字签名请求;接收服务端根据所述数字签名请求返回的第一密文片段,根据用户输入的用户标识信息和所述第一密文片段生成客户端解密密钥;向服务端发送所述客户端解密密钥和待签名数据。
第五方面,本公开提供了一种数字签名的装置,应用于服务端,所述装置包括:
存储模块,用于存储第二私钥密文,所述第二私钥密文包括第一密文片段和第二密文片段,所述第二密文片段是根据用户输入的用户标识信息对第一私钥密文处理得到;
第一发送模块,用于当接收到客户端发送的数字签名请求时,向客户端发送所述第一密文片段,以使所述客户端根据所述用户标识信息和所述第一密文片段生成客户端解密密钥;
第一接收模块,用于接收客户端发送的所述客户端解密密钥和待签名数据;
第一处理模块,用于利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文;以及
签名模块,用于根据所述第一私钥密文对所述待签名数据进行数字签名。
在一些实施方式中,所述第二私钥密文还包括第三密文片段,所述第三密文片段是根据所述用户标识信息对所述第一私钥密文Hash运算得到,
所述第一处理模块在用于利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文时,具体用于:
根据所述客户端解密密钥对所述第二密文片段解密,得到待验证私钥密文;
根据所述客户端解密密钥对所述待验证私钥密文进行Hash运算,得到第四密文片段;
判断所述第四密文片段与所述第三密文片段是否相同,
若是,则确定所述待验证私钥密文为所述第一私钥密文。
在一些实施方式中,所述的装置,还包括:
第二接收模块,用于接收客户端密钥,所述客户端密钥基于所述用户标识信息生成;
第一生成模块,用于随机生成第一服务端密钥参数,并基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;
第一获取模块,用于获取所述第一私钥密文,所述第一私钥密文基于用户私钥生成;以及
加密模块,用于根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到并存储所述第二私钥密文。
在一些实施方式中,在所述签名模块用于根据所述第一私钥密文对所述待签名数据进行数字签名之后,
所述第二接收模块还用于接收客户端密钥,所述客户端密钥基于所述用户标识信息生成;
所述第一生成模块还用于随机生成第二服务端密钥参数,并基于所述客户端密钥和所述第二服务端密钥参数生成服务端加密密钥;
所述加密模块还用于根据所述服务端加密密钥和所述第二服务端密钥参数对所述第一私钥密文进行加密,得到并存储所述第二私钥密文。
第六方面,本公开提供了一种数字签名的装置,应用于客户端,所述装置包括:
第二发送模块,用于在接收到用户的签名指令时,向服务端发送数字签名请求;
第三接收模块,用于接收服务端根据所述数字签名请求返回的第一密文片段,根据用户输入的用户标识信息和所述第一密文片段生成客户端解密密钥;
第三发送模块,用于向服务端发送所述客户端解密密钥和待签名数据,以使得服务端在根据所述客户端解密密钥对第二密文片段解密得到第一私钥密文之后,根据第一私钥密文对所述待签名数据进行数字签名;所述第二密文片段是服务端根据所述用户标识信息对第一私钥密文处理得到;
第四接收模块,用于接收服务端返回的签名后的数据。
在一些实施方式中,所述的装置,还包括:
第二获取模块,用于获取用户输入的所述用户标识信息;
第二生成模块,用于基于所述用户标识信息生成客户端密钥;
第四发送模块,用于向服务端发送所述客户端密钥,以使得服务端基于所述客户端密钥对所述第一私钥密文进行加密。
第七方面,本公开提供了一种私钥协同加密装置,应用于服务端,所述装置包括:
第五接收模块,用于接收客户端密钥,所述客户端密钥由客户端基于用户输入的用户标识信息生成;
第三生成模块,用于随机生成第一服务端密钥参数,基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;
第三获取模块,用于获取第一私钥密文,所述第一私钥密文基于用户私钥生成;
第二处理模块,用于根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到并存储第二私钥密文。
第八方面,本公开提供了一种电子设备,包括:
处理器;和
存储器,与所述处理器可通信连接,其存储有可被所述处理器读取的计算机可读指令,在计算机可读指令被读取时,所述处理器执行根据第一方面任一实施方式中所述方法,或者根据第二方面中任一实施方式所述的方法,或者根据第三方面中任一实施方式中所述的方法。
第九方面,本公开提供了一种存储介质,存储有计算机指令,所述计算机指令用于使计算机执行根据第一方面任一实施方式中所述方法,或者根据第二方面中任一实施方式所述的方法,或者根据第三方面中任一实施方式中所述的方法。
本公开实施方式中提供的数字签名的方法,应用于服务端,服务端存储有第二私钥密文,第二私钥密文包括第一密文片段和第二密文片段,第二密文片段是根据用户输入的用户标识信息对第一私钥密文加密得到。根据用户标识信息将第一私钥密文进行加密,从而在数字签名的过程中,根据客户端生成的客户端解密密钥对第二密文片段解密得到第一私钥密文,保证只有在用户参与的情况下才能对第二私钥密文进行解密,从而根据第一私钥密文完成数字签名,伪造者无法单一的伪造用户签名,提高用户私钥使用的安全性,并且本公开方法将第二私钥密文分为多个片段存储,进一步提高用户私钥的安全性。
本公开实施方式中提供的数字签名的方法,第二私钥密文还包括第三密文片段,在进行数字签名时,根据客户端发送的客户端解密密钥对第二密文片段解密,得到待验证私钥密文,根据客户端解密密钥对待验证私钥密文间隙Hash运算,得到第四密文片段,将第四密文片段与第三密文片段进行对比,当两者相同时,则说明第二密文片段没有被非法更改过,从而将待验证私钥密文确定为第一私钥密文,提供给用户,进一步保证用户私钥存储的安全性。
本公开实施方式中提供的数字签名的方法,在进行数字签名之前,还包括接收客户端基于用户标识信息生成的客户端密钥,随机生成第一服务端密钥参数,基于客户端密钥和第一服务端参数对第一私钥密文进行加密,从而保证用户私钥的加密过程也必须有用户参与,无法单一的伪造第二私钥密文,并且第一服务端参数随机生成,使得每次加密过程中参与运算的私钥密文都是不同的,动态的私钥密文进一步提高了用户私钥的安全性。
本公开实施方式中提供的数字签名的方法,在数字签名完成之后,还包括接收客户端密钥,随机生成第二服务端密钥参数,基于客户端密钥和第二服务端参数对第一私钥密文进行加密。从而在用户使用完私钥后,再次基于用户参与对私钥进行动态加密存储,提高数字签名的安全性。
本公开实施方式中提供的数字签名的方法,服务端包括服务器和密码机,对私钥进行加密和解密均在密码机中执行,保证数据的计算处于相对封闭的环境下,防止服务器被非法窃听,进一步提高签名的安全性。
本公开实施方式中提供的数字签名的方法,在接收客户端密钥之后,利用服务端加密因子对客户端密钥进行解密,服务端加密因子由服务端分配至客户端,以使客户端根据服务端加密因子对客户端密钥进行加密,从而在客户端密钥的发送过程中进行加密,避免发送过程出现信息泄露,进一步提高安全性。
本公开实施方式中提供的私钥协同加密方法,应用于服务端,加密方法包括接收客户端密钥,客户端密钥基于用户输入的用户标识信息生成,基于随机生成的第一服务端密钥参数和客户端密钥生成服务端加密密钥,利用服务端加密密钥对第一私钥密文进行加密得到加密后的第二私钥密文。利用基于用户标识信息生成的客户端密钥和随机生成的第一服务端密钥参数,共同对第一私钥密文加密,保证只有在用户参与的情况下,才能对第二私钥密文进行加密和解密,从而实现在没有用户参与的情况下,客户端和服务端不能单一的伪造用户签名,而是必须由用户和***协同才能实现签名,从而提高了用户私钥使用的安全性。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本公开一些实施方式中数字签名***的示意图。
图2是根据本公开一些实施方式中私钥协同加密方法的流程图。
图3是根据本公开一个具体实施方式中私钥协同加密方法的示意图。
图4是根据本公开一些实施方式中数字签名方法的流程图。
图5是根据本公开另一些实施方式中数字签名方法的流程图。
图6是根据本公开又一些实施方式中数字签名方法的流程图。
图7是根据本公开再一些实施方式中数字签名方法的流程图。
图8是根据本公开一个具体实施方式中数字签名方法的示意图。
图9是根据本公开另一个具体实施方式中数字签名方法的示意图。
图10是根据本公开一些实施方式中数字签名装置的示意图。
图11是根据本公开另一些实施方式中数字签名装置的示意图。
图12是根据本公开又一些实施方式中数字签名装置的示意图。
图13是根据本公开再一些实施方式中数字签名装置的示意图。
图14是根据本公开一些实施方式中私钥协同加密装置的示意图。
图15是适于用来实现本公开方法的计算机***结构示意图。
具体实施方式
下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。此外,下面所描述的本公开不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
第一方面,本公开提供的方法,适用于数字签名***,图1中示出了一些实施方式中适于实施本公开方法的数字签名***。如图1所示,该***可包括客户端200和服务端300。
客户端200可以是任何具有上网功能的智能终端,例如,可以具体为手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等,客户端200可通过无线网络访问服务端300。其中,客户端200接收用户标识信息,例如,用户100可通过客户端200上输入用户标识信息,从而使得客户端200接收到用户输入的用户标识信息。
其中,用户标识信息可以理解为用户个人所拥有的表征该用户身份的用户标识,例如用户输入的PIN码(Personal Identification Number,个人识别密码),再例如表征用户生理特征的标识信息,如声音、指纹等数据信息。
服务端300可以是响应于客户端请求提供相应数据存储、分析及处理的服务器或服务器集群。例如图1所示实施中,服务端300包括服务器310和密码机320。服务器310通过无线网络与客户端200建立可通信连接,从而根据客户端200的服务请求提供对应的数据存储、分析等处理。可以理解,一个服务器310可以提供一种或多种服务,同一种服务也可以由多个服务器310来提供。密码机320是一种用于对数据进行加密与解密的设备,密码机320根据服务器310发送的请求对数据进行加密或解密操作,是一个封闭环境下的操作。
第二方面,为提高用户私钥存储与使用的安全性,本公开提供了一种私钥协同加密方法,从而可对用户私钥进行加密存储,提高用户私钥的安全性。图2中示出了根据本公开一些实施方式中的私钥协同加密方法。
如图2所示,在一些实施方式中,本公开提供的私钥协同加密方法适用于服务端300,该方法包括:
S201、接收客户端密钥,客户端密钥由客户端基于用户输入的用户标识信息生成。
具体而言,在一个示例中,用户标识信息以用户PIN码为例,用户在客户端上输入用户PIN码,从而客户端得到用户输入的PIN码,并且根据该PIN码生成客户端密钥,并将该客户端密钥发送至服务端。
可以理解,用户标识信息还可以是其他类型的标识信息,例如用户声音、指纹等数据信息,本公开对此不作限制。在本步骤中,基于用户标识信息生成客户端密钥,从而确保在整个加密过程有用户的参与。客户端根据用户标识信息生成客户端密钥的过程,在下文中进行说明。
S202、随机生成第一服务端密钥参数,基于客户端密钥和第一服务端密钥参数生成服务端加密密钥。
具体而言,服务端随机生成第一服务端密钥参数,例如可通过服务器310或者密码机320随机产生一个介于[1,n-1]之间的随机数,将该随机数作为第一服务端密钥参数。根据该随机生成的第一服务端密钥参数和接收到的客户端密钥,生成服务端加密密钥。可以理解,由于第一服务端密钥参数是随机生成的,因此该服务端加密密钥是带有随机性的加密结果。
S203、获取第一私钥密文,第一私钥密文基于用户私钥生成。
需要说明的是,在进行数字签名时,需要使用用户私钥才能进行数字签名,一旦用户私钥泄露,非法人员即可利用用户私钥伪造该用户的数字签名,因此用户私钥存储的安全性直接关系到数字签名的安全性。
具体而言,在本步骤中,用户私钥可以预先通过密码设备生成,对用户私钥进行加密,即可得到第一私钥密文。
S204、根据服务端加密密钥和第一服务端密钥参数对第一私钥密文进行加密,得到并存储第二私钥密文。
首先,需要说明的是,在现有的相关技术中,第一私钥密文一般存储在客户端或者服务器中,从而在用户进行数字签名时,客户端或服务器根据用户的签名请求对第一私钥密文进行解密,即可得到用户私钥,从而完成数字签名。
而在本实施方式步骤中,服务端根据服务端加密密钥和第一服务端密钥参数对第一私钥密文再次进行加密,得到第二私钥密文,并且将第二私钥密文存储在服务端。服务端对第一私钥密文进行加密的过程在下文中进行说明。
通过上述实施方式,可以理解,本公开方法中,服务端加密密钥包含用户标识信息参数,并且第一服务端密钥参数具有随机性,因此保证对第一私钥密文加密过程中有用户的参与,并且第二私钥密文具有随机性。因此在对用户私钥使用时必须由用户参与才能对第二私钥密文进行解密,非法方无法单一的伪造用户签名,并且每次加密具有随机性,形成对用户私钥的动态加密,私钥密文存储的安全性更高。
图3中示出了本公开提供的私钥协同加密方法的一个具体实施方式。如图3所示,在本实施方式中,本公开方法可应用于图1所示***,其包括:
S301、输入用户标识信息P。
具体而言,用户标识信息P可以是例如用户PIN码,或者用户生理特征等数据信息。在本实施方式中,用户标识信息P以用户PIN码为例,用户可通过客户端提供的例如键盘、虚拟键盘等输入工具,输入预先设置的PIN码,从而客户端获取到该用户的PIN码。
S302、基于用户标识信息P生成客户端密钥D。
在本实施方式中,由于用户标识信息P是用户所掌握的个人信息,因此为了保证其不会在客户端与服务器传输过程中被非法获取,采用SM2密钥派生函数KDF对用户标识信息P进行加密,得到加密结果为A,可表示为:
A=KDF(P)
SM2椭圆曲线算法是一种更为安全的公钥密码算法,以SM2算法对用户标识信息P进行加密,将加密结果A作为私钥,根据加密结果A生成对应的公钥,将该公钥作为客户端密钥D。
S303、发送客户端密钥D。
客户端将生成的客户端密钥D发送给服务器。
S304、发送客户端密钥D。
具体而言,在本实施方式中,为进一步提高加密过程的安全性,因此将用户私钥的加密过程在密码机中执行。密码机是一种用于对数据进行加密与解密的设备,服务器将客户端发送的客户端密钥D转发至密码机,从而确保后续加密过程在一个相对封闭的硬件环境中,避免加密过程被非法窃听。
S305、随机生成第一服务端密钥参数R,根据R和D计算得到服务端加密密钥E。
在本实施方式中,密码机可生成位于[1,n-1]区间的随机数作为第一服务端密钥参数R,根据该第一服务端密钥参数R和服务器转发的客户端密钥D计算得到服务端加密密钥E,计算过程可表示为:
E=R[D]
S306、获取第一私钥密文C。
具体而言,第一私钥密文C是基于用户私钥生成,其可以是预先生成并存储在服务器或客户端的私钥密文,从而密码机可从服务器或客户端提取该第一私钥密文C。也可以是密码机生成用户私钥,对用户私钥进行加密得到的私钥密文。
在一个示例性的实施中,在本步骤中,密码机产生用户私钥,并用内置的加密密钥对产生的用户私钥进行加密,将加密后的结果作为第一私钥密文C。密码机对用户私钥加密的过程采用相关技术中的加密算法即可实现,本公开对此不再赘述。
S307、根据R和D,对C进行加密,得到第二私钥密文F。
具体而言,在本实施方式中,为进一步提高私钥存储的安全性,将第二私钥密文分为三个片段进行分散存储,即第二私钥密文F包括第一密文片段C1、第二密文片段C2、以及第三密文片段C3。
在本步骤中,在计算第二私钥密文F时,包括:
根据第一服务端密钥参数R计算得到第一密文片段C1,表示为
C1=R[G]
式中,G为椭圆曲线算法中,第一服务端密钥参数R在椭圆曲线上的n阶的基点。
根据服务器加密密钥E对第一私钥密文C处理得到第二密文片段C2。具体而言,首先拆解E=(x2,y2),其中x、y分为为椭圆曲线上的横纵坐标。第二密文片段C2可表示为
根据服务端加密密钥E对第一私钥密文C做Hash运算得到第三密文片段C3,表示为
C3=Hash(x2||C||y2)
从而得到加密后的第二私钥密文F=C1||C2||C3。在本实施方式中,步骤S305~S307均在密码机中执行,从而提高加密过程的安全性。
S308、向服务器返回第二私钥密文F。
第二私钥密文F是结合第一服务端密钥参数R和用户标识信息P对用户私钥进行加密运算得出,并不能作为私钥进行使用,若用户要使用私钥,必须结合用户标识信息P和第一服务端密钥参数R再次对第二私钥密文F进行解密运算,因此服务器可将接收的第二私钥密文F进行存储,以便于数字签名时使用。并且在没有用户参与的情况下,服务器也无法单一伪造用户签名,用户私钥存储的安全程度更高。可以理解的是,第二私钥密文F也可存储于客户端或密码机,本公开对此不作限制。
在一些实施方式中,考虑到在客户端与服务器对客户端密钥D进行传输时,非法人员可获取到客户端密钥D,从而使得用户标识信息P存在一定的泄露风险。因此,为进一步提高客户端与服务器的数据传输的安全性,本公开方法还包括:
客户端根据服务端加密因子对客户端密钥D进行加密,该服务端加密因子由服务端分配至客户端。
服务端利用服务端加密因子对客户端发送的加密后的客户端密钥D进行解密,从而得到客户端密钥D。
服务端加密因子可以是服务器生成的加密参数,对客户端密钥D进行加密的方式采用相关技术中的公钥加密方法即可,本公开在此不再赘述。由于对客户端密钥D进行加密,从而在客户端密钥D的发送过程中,降低出现用户信息泄露的风险,进一步提高安全性。
第三方面,本公开提供了一种数字签名的方法,该签名方法可基于第二方面中实施方式。在一些实施方式中,本公开提供的数字签名的方法,可应用于服务端。服务端例如可参照图1实施方式中的服务端300实现,服务端存储有第二私钥密文,第二私钥密文可由第二方面实施方式的方法得到,在此不再赘述。
图4中示出了根据本公开一些实施方式中的数字签名方法,如图4所示,本公开的数字签名方法包括:
S401、当接收到客户端发送的数字签名请求时,向客户端发送第一密文片段,以使客户端根据用户标识信息设第一密文片段生成客户端解密密钥。
具体而言,数字签名请求是指客户端向服务端发起数字签名的指令,数字签名请求可以由用户通过客户端触发,或者由用户在使用客户端通信时,客户端随用户通信指令触发。
当服务端接收到数字签名请求时,表征需要使用用户私钥完成对待签名数据的数字签名,即需要对服务端保存的第二私钥密文进行解密,从而得到用户私钥。因此服务器向客户端返回第一密文片段,以使得客户端根据用户输入的用户标识信息和第一密文片段生成客户端解密密钥。下文中对客户端解密密钥生成过程详细说明。
S402、接收客户端发送的客户端解密密钥和待签名数据。
具体而言,待签名数据为需要使用用户私钥进行数字签名的数据,该数据例如可以是用户输入的信息,再例如可以是与用户请求对应的数据信息,等。服务端接收客户端生成的客户端解密密钥和该待签名数据。
S403、利用客户端解密密钥对第二密文片段解密,得到第一私钥密文。
具体而言,服务端根据接收到的客户端解密密钥对第二密文片段进行解密,由于第二密文片段由第一私钥密文加密得到,因此对第二密文片段解密后即得到第一私钥密文。
S404、根据第一私钥密文对待签名数据进行数字签名。
具体而言,在一些实施方式中,本步骤具体包括:
对第一私钥密文解密,得到用户私钥;
利用私钥对待签名数据进行数字签名。
服务端在得到第一私钥密文之后,由于第一私钥密文由用户私钥进行加密得到,因此对第一私钥密文解密即可得到用户私钥,从而利用用户私钥完成对待签名数据的数字签名。
在一些实施方式中,如图5所示,在上述步骤S403中,利用客户端解密密钥对第二密文片段解密,得到第一私钥密文,包括:
S4031、根据客户端解密密钥对第二密文片段解密,得到待验证私钥密文。
服务端根据接收到的客户端解密密钥对第二密文片段进行解密,得到待验证私钥密文。待验证私钥密文是指需要对密文的内容进行验证,以确保私钥密文没有被更改过。
S4032、根据客户端解密密钥对待验证私钥密文进行Hash运算,得到第四密文片段。
服务端根据接收到的客户端解密密钥对待验证私钥密文进行Hash运算,从而得到待验证密文的哈希值,即第四密文片段。
S4033、判断第四密文片段与第三密文片段是否相同。若是,则执行步骤S4034。若否,则执行步骤S4035。
S4034、确定待验证私钥密文为第一私钥密文。
S4035、确定待验证私钥密文不是第一私钥密文。
具体而言,在步骤S4033~S4035中,第三密文片段是根据第一私钥密文进行Hash运算得到的哈希值,若第一私钥密文在存储过程中未被更改,那么第二密文片段解密出的待验证私钥密文的哈希值应当与第一私钥密文的哈希值相同,即第四密文片段与第三密文片段相同。若第一私钥密文在存储过程中被非法更改,那么由于第二密文片段解密出的待验证私钥密文的哈希值一定与第一私钥密文的哈希值不同,即第四密文片段与第三密文片段不同。
在图5实施方式中,通过将第四密文片段与第三密文片段进行对比,当两者相同时,则说明第二密文片段没有被非法更改过,从而将待验证私钥密文确定为第一私钥密文,提供给用户,进一步保证用户私钥存储的安全性。
在一些实施方式中,在图4实施方式的基础上,在步骤S404完成对待签名数据的数字签名之后,本公开的方法还包括对第一私钥密文再次进行加密保存的过程。具体而言,如图6所示,本公开方法在上述步骤S404之后,还包括:
S405、服务端接收客户端密钥,客户端密钥基于用户标识信息生成。
具体而言,该步骤参照前述步骤S201即可,在此不再赘述。
S406、随机生成第二服务端密钥参数,并基于客户端密钥和第二服务端密钥参数生成服务端加密密钥。
具体而言,服务端随机生成第二服务端密钥参数,第二服务端密钥参数可参照前述第一服务端密钥参数的生成方式,在此不在赘述。服务器根据该随机生成的第二服务端密钥参数和接收到的客户端密钥,生成服务端加密密钥。可以理解,由于第二服务端密钥参数是随机生成的,因此该服务端加密密钥是带有随机性的加密结果,并且每次签名后对用户私钥加密的过程均是随机性的加密结果。
S407、根据服务端加密密钥和第二服务端密钥参数对第一私钥密文进行加密,得到并存储第二私钥密文。
具体而言,服务器在完成对待签名数据的数字签名之后,根据服务端加密密钥和随机生成的第二服务端密钥参数,再次对第一私钥密文进行加密。例如在一个示例性的实施中,首先对用户私钥进行加密,得到第一私钥密文,然后根据服务端加密密钥和随机生成的第二服务端密钥参数对第一私钥密文进行加密,该加密过程参照前述实施方式即可,在此不再赘述。
通过图6实施方式,可以理解,服务端加密密钥包含用户标识信息参数,并且第一服务端密钥参数具有随机性,因此保证每次对用户私钥进行加密的过程均有用户的参与,并且第二私钥密文具有随机性,用户私钥的存储安全性更高。
第四方面,本公开还提供了一种数字签名的方法,该方法应用于客户端,由客户端执行。客户端可参照图1实施方式中的客户端200即可,在此不再赘述。
图7中示出了根据本公开一些实施方式中的方法,如图7所示,所述方法包括:
S701、在接收到用户的签名指令时,向服务端发送数字签名请求。
具体而言,用户可通过在客户端触发签名指令,或者用户在使用客户端通信时,客户端随用户通信指令触发签名指令。在签名指令触发后,客户端向服务端发送数字签名请求。
S702、接收服务端根据数字签名请求返回的第一密文片段,根据用户输入的用户标识信息和第一密文片段生成客户端解密密钥。
服务端在接收到数字签名请求时,向客户端返回第一密文片段,客户端根据用户输入的用户标识信息和第一密文片段生成客户端解密密钥。下文中对客户端解密密钥生成过程详细说明。
S703、向服务端发送客户端解密密钥和待签名数据。
具体而言,待签名数据为需要使用用户私钥进行数字签名的数据,该数据例如可以是用户输入的信息,再例如可以是与用户请求对应的数据信息,等。客户端将生成的客户端解密密钥和该待签名数据发送至服务端。
S704、接收服务端返回的签名后的数据。
服务端完成数字签名后,将签名后的数据结果返回至客户端。
图8中示出了本公开数字签名方法的一个具体实施方式,在该实施方式中,所述方法可应用于例如图1所示***,并且第二私钥密文的生成过程可参照图3实施方式,在此不再赘述。如图8所示,在本实施方式中,数字签名方法包括:
S801、用户发送签名指令给客户端。
在本实施方式中,用户可通过在客户端触发签名指令,或者用户在使用客户端通信时,客户端随用户通信指令触发签名指令。
S802、客户端发送数字签名请求给服务器。
在签名指令触发后,客户端生成数字签名请求,并将数字签名请求发送至服务器。
S803、服务器提取第一密文片段C1。
S804、服务器发送第一密文片段C1至客户端。
服务器根据数字签名请求,提取存储的第一密文片段C1,并将第一密文片段C1发送给客户端。
S805、客户端接收用户输入的用户标识信息P。
在一个示例性的实施中,用户标识信息P为用户通过客户端输入的PIN码。用户标识信息为用户个人拥有的信息。
S806、根据用户标识信息P和服务器发送的第一密文片段C1,生成客户端解密密钥XY。
具体而言,在计算客户端解密密钥XY时,首先根据用户输入的用户标识信息P,计算得到客户端加密私钥A,表示为
A=KDF(P)
然后基于客户端加密私钥A和第一密文片段C1,计算得到客户端解密密钥XY,表示为
XY=[A]C1
S807、客户端将客户端解密密钥XY和待签名数据发送给服务器。
具体而言,待签名数据为需要使用用户私钥进行数字签名的数据,该数据例如可以是用户输入的信息,再例如可以是与用户请求对应的数据信息,等。客户端将计算得到的客户端解密密钥XY和该待签名数据发送给服务器。
S808、服务器将客户端解密密钥XY和待签名数据转发给密码机。
在本实施方式中,为进一步提高解密过程的安全性,因此将用户私钥的解密过程在密码机中执行。密码机是一种用于对数据进行加密与解密的设备,服务器将客户端发送的客户端解密密钥XY和待签名数据转发至密码机,从而确保后续解密过程在一个相对封闭的硬件环境中,避免解密过程被非法窃听。
S809、密码机提取第二密文片段C2和第三密文片段C3。
密码机提取存储在服务器或密码机中的第二密文片段C2和第三密文片段C3。
S810、利用客户端解密密钥XY对第二密文片段C2解密,得到待验证私钥密文C’。
具体而言,在对第二密文片段C2解密时,根据公式
计算得到待验证私钥密文C’。
S811、根据客户端解密密钥XY对待验证私钥密文C’进行Hash运算,得到第四密文片段u。
具体而言,在对C’进行Hash运算时,首先拆解XY=(x2,y2),其中x、y分为为椭圆曲线上的横纵坐标,根据公式
u=Hash(x2||C||y2)
计算得到第四密文片段u。
S812、判断第四密文片段u与第三密文片段C3是否相同,若相同,则根据第一密文片段C对待签名数据进行数字签名。
具体而言,判断第四密文片段u与第三密文片段C3是否相同,第三密文片段C3是根据第一私钥密文C进行Hash运算得到的哈希值,若第一私钥密文C在存储过程中未被更改,那么第二密文片段C2解密出的待验证私钥密文C’的哈希值应当与第一私钥密文C的哈希值相同,即第四密文片段u与第三密文片段C3相同。若第一私钥密文C在存储过程中被非法更改,那么由于第二密文片段C2解密出的待验证私钥密文C’的哈希值一定与第一私钥密文C的哈希值不同,即第四密文片段u与第三密文片段C3不同。
若u与C3相同,则利用第一私钥密文C对待签名数据签名,在一个示例性的实施中,可对第一私钥密文C解密得到用户私钥,密码机采用用户私钥对待签名数据进行数字签名。
S813、密码机将签名后的数据返回服务器。
S814、服务器将签名后的数据转发至客户端。
完成数字签名之后,密码机将签名后的数据通过服务器发送至客户端。
图9是本公开数字签名方法的另一个具体实施方式,本实施方式建立在图8实施方式的基础上,因此相同步骤不再进行赘述,仅针对不同步骤进行描述。
在步骤S806中,在客户端根据用户标识信息P和第一密文片段C1生成客户端解密密钥XY过程中,同时根据用户标识信息P生成客户端密钥D。
在步骤S807和步骤S808中,客户端向服务器发送客户端密钥D、客户端解密密钥XY和待签名数据。服务器向密码机转发客户端密钥D、客户端解密密钥XY和待签名数据。
在步骤S814之后,还包括:
S815、密码机随机生成第二服务端密钥参数K,根据第二服务端密钥参数K和客户端密钥D计算得到服务端加密密钥E。
具体而言,在一个示例性的实施中,密码机可生成位于[1,n-1]区间的随机数作为第二服务端密钥参数K,根据该第二服务端密钥参数K和服务器转发的客户端密钥D计算得到服务端加密密钥E,计算过程可表示为:
E=K[D]
S816、根据第二服务端密钥参数K和客户端密钥D,对第一私钥密文C进行加密,得到第二私钥密文L。
在一个示例性的实施中,对第二私钥密文L的计算过程可参照上述实施方式中对第二私钥密文F的计算,具体为:E=(x3,y3),C1=K[G],C3=Hash(x3||C||y3),L=C1||C2||C3,得到第二私钥密文L。
S817、密码机向服务器返回第二私钥密文L,服务器存储L。
在图9所示实施方式中,密码机在完成对待签名数据的数字签名之后,根据服务端加密密钥和随机生成的第二服务端密钥参数,再次对第一私钥密文进行加密,同时加密过程在密码机中执行,安全性更高。并且服务端加密密钥包含用户标识信息参数,第二服务端密钥参数具有随机性,因此保证每次对用户私钥进行加密的过程均有用户的参与,并且第二私钥密文具有随机性,用户私钥的存储安全性更高。
第五方面,本公开还提供了一种数字签名的装置,该装置应用于服务端。图10中示出了一些实施方式中数字签名的装置,如图10所示,该装置包括:
存储模块10,用于存储第二私钥密文,第二私钥密文包括第一密文片段和第二密文片段,第二密文片段是根据用户输入的用户标识信息对第一私钥密文处理得到;
第一发送模块20,用于当接收到客户端发送的数字签名请求时,向客户端发送第一密文片段,以使客户端根据用户标识信息和第一密文片段生成客户端解密密钥;
第一接收模块30,用于接收客户端发送的客户端解密密钥和待签名数据;
第一处理模块40,用于利用客户端解密密钥对第二密文片段解密,得到第一私钥密文;以及
签名模块50,用于根据第一私钥密文对待签名数据进行数字签名。
在一些实施方式中,第二私钥密文还包括第三密文片段,第三密文片段是根据用户标识信息对第一私钥密文Hash运算得到,
第一处理模块40在用于利用客户端解密密钥对第二密文片段解密,得到第一私钥密文时,具体用于:
根据客户端解密密钥对第二密文片段解密,得到待验证私钥密文;
根据客户端解密密钥对待验证私钥密文进行Hash运算,得到第四密文片段;
判断第四密文片段与第三密文片段是否相同,
若是,则确定待验证私钥密文为第一私钥密文。
在一些实施方式中,如图11所示,的装置还包括:
第二接收模块60,用于接收客户端密钥,客户端密钥基于用户标识信息生成;
第一生成模块70,用于随机生成第一服务端密钥参数,并基于客户端密钥和第一服务端密钥参数生成服务端加密密钥;
第一获取模块80,用于获取第一私钥密文,第一私钥密文基于用户私钥生成;以及
加密模块90,用于根据服务端加密密钥和第一服务端密钥参数对第一私钥密文进行加密,得到并存储第二私钥密文。
在一些实施方式中,在签名模块50用于根据第一私钥密文对待签名数据进行数字签名之后,
第二接收模块60还用于接收客户端密钥,客户端密钥基于用户标识信息生成;
第一生成模块70还用于随机生成第二服务端密钥参数,并基于客户端密钥和第二服务端密钥参数生成服务端加密密钥;
加密模块90还用于根据服务端加密密钥和第二服务端密钥参数对第一私钥密文进行加密,得到并存储第二私钥密文。
第六方面,本公开提供了一种数字签名的装置,该装置应用于客户端。图12示出了一些实施方式中的装置,其包括:
第二发送模块1,用于在接收到用户的签名指令时,向服务端发送数字签名请求;
第三接收模块2,用于接收服务端根据数字签名请求返回的第一密文片段,根据用户输入的用户标识信息和第一密文片段生成客户端解密密钥;
第三发送模块3,用于向服务端发送客户端解密密钥和待签名数据,以使得服务端在根据客户端解密密钥对第二密文片段解密得到第一私钥密文之后,根据第一私钥密文对待签名数据进行数字签名;第二密文片段是服务端根据用户标识信息对第一私钥密文处理得到;
第四接收模块4,用于接收服务端返回的签名后的数据。
在一些实施方式中,如图13所示,的装置还包括:
第二获取模块5,用于获取用户输入的用户标识信息;
第二生成模块6,用于基于用户标识信息生成客户端密钥;
第四发送模块7,用于向服务端发送客户端密钥,以使得服务端基于客户端密钥对第一私钥密文进行加密。
第七方面,本公开提供了一种私钥协同加密装置,应用于服务端。图14示出了一些实施方式中的装置,包括:
第五接收模块100,用于接收客户端密钥,客户端密钥由客户端基于用户输入的用户标识信息生成;
第三生成模块200,用于随机生成第一服务端密钥参数,基于客户端密钥和第一服务端密钥参数生成服务端加密密钥;
第三获取模块300,用于获取第一私钥密文,第一私钥密文基于用户私钥生成;
第二处理模块400,用于根据服务端加密密钥和第一服务端密钥参数对第一私钥密文进行加密,得到并存储第二私钥密文。
第八方面,本公开提供了一种电子设备,包括:
处理器;和
存储器,与处理器可通信连接,其存储有可被处理器读取的计算机可读指令,在计算机可读指令被读取时,处理器执行上述任一实施方式中的方法。
第九方面,本公开提供了一种存储介质,存储有计算机指令,计算机指令用于使计算机执行上述任一实施方式中的方法。
具体而言,图15示出了适于用来实现本公开方法或处理器的计算机***600的结构示意图,通过图15所示***,实现第八方面和第九方面提供的电子设备及存储介质相应功能。
如图15所示,计算机***600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有***600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施方式,上文方法过程可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行上述方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
附图中的流程图和框图,图示了按照本公开各种实施方式的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
显然,上述实施方式仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本公开创造的保护范围之中。
Claims (18)
1.一种数字签名的方法,其特征在于,应用于服务端,所述方法包括:
接收客户端密钥,所述客户端密钥基于用户标识信息生成;
随机生成第一服务端密钥参数,并基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;
获取第一私钥密文,所述第一私钥密文基于用户私钥生成;
根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到并存储第二私钥密文;
当接收到客户端发送的数字签名请求时,向客户端发送所述第二私钥密文的第一密文片段,以使所述客户端根据所述用户标识信息和所述第一密文片段生成客户端解密密钥;
接收客户端发送的所述客户端解密密钥和待签名数据;
利用所述客户端解密密钥对所述第二私钥密文的第二密文片段解密,得到所述第一私钥密文;
根据所述第一私钥密文对所述待签名数据进行数字签名。
2.根据权利要求1所述的方法,其特征在于,所述第二私钥密文还包括第三密文片段,所述第三密文片段是根据所述用户标识信息对所述第一私钥密文Hash运算得到,
所述利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文,包括:
根据所述客户端解密密钥对所述第二密文片段解密,得到待验证私钥密文;
根据所述客户端解密密钥对所述待验证私钥密文进行Hash运算,得到第四密文片段;
判断所述第四密文片段与所述第三密文片段是否相同,
若是,则确定所述待验证私钥密文为所述第一私钥密文。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第一私钥密文对所述待签名数据进行数字签名,包括:
对所述第一私钥密文解密,得到用户私钥;
利用所述用户私钥对所述待签名数据进行数字签名。
4.根据权利要求1所述的方法,其特征在于,所述根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到所述第二私钥密文,包括:
根据所述第一服务端密钥参数得到所述第一密文片段;
根据所述服务端加密密钥对所述第一私钥密文处理得到所述第二密文片段。
5.根据权利要求1所述的方法,其特征在于,所述第二私钥密文还包括第三密文片段,
所述根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到所述第二私钥密文,还包括:
根据所述服务端加密密钥对所述第一私钥密文Hash运算得到第三密文片段。
6.根据权利要求1至3任一项所述的方法,其特征在于,在所述根据所述第一私钥密文对所述待签名数据进行数字签名之后,还包括:
接收所述客户端密钥;
随机生成第二服务端密钥参数,并基于所述客户端密钥和所述第二服务端密钥参数生成所述服务端加密密钥;
根据所述服务端加密密钥和所述第二服务端密钥参数对所述第一私钥密文进行加密,得到并存储所述第二私钥密文。
7.根据权利要求1所述的方法,其特征在于,所述服务端包括服务器和密码机,
所述接收客户端密钥包括:服务器接收所述客户端密钥,并将所述客户端密钥发送至密码机;
所述随机生成第一服务端密钥参数,并基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥包括:密码机随机生成所述第一服务端密钥参数,并基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;
所述获取所述第一私钥密文,所述第一私钥密文基于用户私钥生成,包括:密码机获取所述第一私钥密文,并根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到所述第二私钥密文;
所述根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到并存储所述第二私钥密文,包括:密码机将所述第二私钥密文发送至服务器,以使服务器存储所述第二私钥密文。
8.根据权利要求7所述的方法,其特征在于,还包括:
当服务器到接收客户端发送的数字签名请求时,提取所述第一密文片段,并将所述第一密文片段发送至客户端;
服务器接收客户端发送的所述客户端解密密钥和所述待签名数据,并将所述客户端解密密钥和所述待签名数据发送至所述密码机;
密码机利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文,并根据所述第一私钥密文对所述待签名数据进行数字签名;
密码机将签名后的数据发送至服务器,以使服务器将所述签名后的数据发送至客户端。
9.根据权利要求1所述的方法,其特征在于,在基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥之前,还包括:
利用服务端加密因子对所述客户端密钥进行解密,所述服务端加密因子由服务端分配至客户端,以使客户端根据所述服务端加密因子对所述客户端密钥进行加密。
10.一种数字签名的方法,其特征在于,应用于客户端,所述方法包括:
获取用户输入的用户标识信息;
基于所述用户标识信息生成客户端密钥;
向服务端发送所述客户端密钥,以使得服务端基于所述客户端密钥对第一私钥密文进行加密得到第二私钥密文;其中,所述第二私钥密文包括第一密文片段和第二密文片段,所述第二密文片段是服务端根据所述用户标识信息对第一私钥密文加密得到;
在接收到用户的签名指令时,向服务端发送数字签名请求;
接收服务端根据所述数字签名请求返回的所述第一密文片段,根据用户输入的用户标识信息和所述第一密文片段生成客户端解密密钥;
向服务端发送所述客户端解密密钥和待签名数据,以使得服务端在根据所述客户端解密密钥对所述第二密文片段解密得到所述第一私钥密文之后,根据所述第一私钥密文对所述待签名数据进行数字签名;
接收服务端返回的签名后的数据。
11.根据权利要求10所述的方法,其特征在于,在所述向服务端发送所述客户端密钥之前,还包括:
根据服务端加密因子对所述客户端密钥进行加密,所述服务端加密因子由服务端分配。
12.一种数字签名的***,其特征在于,包括服务端和客户端,
所述服务端用于接收客户端密钥,所述客户端密钥由客户端基于用户输入的用户标识信息生成;随机生成第一服务端密钥参数,基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;获取第一私钥密文,所述第一私钥密文基于用户私钥生成;根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到并存储第二私钥密文;当接收到客户端发送的数字签名请求时,向客户端发送所述第二私钥密文的第一密文片段,以使所述客户端根据所述用户标识信息和所述第一密文片段生成客户端解密密钥;接收客户端发送的所述客户端解密密钥和待签名数据;利用所述客户端解密密钥对所述第二私钥密文的第二密文片段解密,得到所述第一私钥密文;根据所述第一私钥密文对所述待签名数据进行数字签名;
所述客户端用于获取用户输入的所述用户标识信息;基于所述用户标识信息生成客户端密钥;向服务端发送所述客户端密钥,以使得服务端基于所述客户端密钥对所述第一私钥密文进行加密;在接收到用户的签名指令时,向服务端发送数字签名请求;接收服务端根据所述数字签名请求返回的第一密文片段,根据用户输入的用户标识信息和所述第一密文片段生成客户端解密密钥;向服务端发送所述客户端解密密钥和待签名数据,以使得服务端在根据所述客户端解密密钥对第二密文片段解密得到第一私钥密文之后,根据第一私钥密文对所述待签名数据进行数字签名;所述第二密文片段是服务端根据所述用户标识信息对第一私钥密文加密得到;接收服务端返回的签名后的数据。
13.一种数字签名的装置,其特征在于,应用于服务端,所述装置包括:
第二接收模块,用于接收客户端密钥,所述客户端密钥基于用户标识信息生成;
第一生成模块,用于随机生成第一服务端密钥参数,并基于所述客户端密钥和所述第一服务端密钥参数生成服务端加密密钥;
第一获取模块,用于获取第一私钥密文,所述第一私钥密文基于用户私钥生成;以及
加密模块,用于根据所述服务端加密密钥和所述第一服务端密钥参数对所述第一私钥密文进行加密,得到并存储第二私钥密文;
存储模块,用于存储第二私钥密文,所述第二私钥密文包括第一密文片段和第二密文片段,所述第二密文片段是根据用户输入的用户标识信息对第一私钥密文处理得到;
第一发送模块,用于当接收到客户端发送的数字签名请求时,向客户端发送所述第一密文片段,以使所述客户端根据所述用户标识信息和所述第一密文片段生成客户端解密密钥;
第一接收模块,用于接收客户端发送的所述客户端解密密钥和待签名数据;
第一处理模块,用于利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文;以及
签名模块,用于根据所述第一私钥密文对所述待签名数据进行数字签名。
14.根据权利要求13所述的装置,其特征在于,所述第二私钥密文还包括第三密文片段,所述第三密文片段是根据所述用户标识信息对所述第一私钥密文Hash运算得到,
所述第一处理模块在用于利用所述客户端解密密钥对所述第二密文片段解密,得到所述第一私钥密文时,具体用于:
根据所述客户端解密密钥对所述第二密文片段解密,得到待验证私钥密文;
根据所述客户端解密密钥对所述待验证私钥密文进行Hash运算,得到第四密文片段;
判断所述第四密文片段与所述第三密文片段是否相同,
若是,则确定所述待验证私钥密文为所述第一私钥密文。
15.根据权利要求13所述的装置,其特征在于,在所述签名模块用于根据所述第一私钥密文对所述待签名数据进行数字签名之后,
所述第二接收模块还用于接收所述客户端密钥;
所述第一生成模块还用于随机生成第二服务端密钥参数,并基于所述客户端密钥和所述第二服务端密钥参数生成所述服务端加密密钥;
所述加密模块还用于根据所述服务端加密密钥和所述第二服务端密钥参数对所述第一私钥密文进行加密,得到并存储所述第二私钥密文。
16.一种数字签名的装置,其特征在于,应用于客户端,所述装置包括:
第二获取模块,用于获取用户输入的用户标识信息;
第二生成模块,用于基于所述用户标识信息生成客户端密钥;
第四发送模块,用于向服务端发送所述客户端密钥,以使得服务端基于所述客户端密钥对第一私钥密文进行加密得到第二私钥密文;其中,所述第二私钥密文包括第一密文片段和第二密文片段,所述第二密文片段是服务端根据所述用户标识信息对第一私钥密文加密得到;
第二发送模块,用于在接收到用户的签名指令时,向服务端发送数字签名请求;
第三接收模块,用于接收服务端根据所述数字签名请求返回的所述第一密文片段,根据用户输入的用户标识信息和所述第一密文片段生成客户端解密密钥;
第三发送模块,用于向服务端发送所述客户端解密密钥和待签名数据,以使得服务端在根据所述客户端解密密钥对所述第二密文片段解密得到所述第一私钥密文之后,根据所述第一私钥密文对所述待签名数据进行数字签名;
第四接收模块,用于接收服务端返回的签名后的数据。
17.一种电子设备,其特征在于,包括:
处理器;和
存储器,与所述处理器可通信连接,其存储有可被所述处理器读取的计算机可读指令,在计算机可读指令被读取时,所述处理器执行根据权利要求1至11任一项所述方法。
18.一种存储介质,其特征在于,存储有计算机指令,所述计算机指令用于使计算机执行根据权利要求1至11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911371679.4A CN111130803B (zh) | 2019-12-26 | 2019-12-26 | 数字签名的方法、***及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911371679.4A CN111130803B (zh) | 2019-12-26 | 2019-12-26 | 数字签名的方法、***及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111130803A CN111130803A (zh) | 2020-05-08 |
CN111130803B true CN111130803B (zh) | 2023-02-17 |
Family
ID=70503582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911371679.4A Active CN111130803B (zh) | 2019-12-26 | 2019-12-26 | 数字签名的方法、***及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111130803B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111628863B (zh) * | 2020-05-29 | 2021-02-09 | 北京海泰方圆科技股份有限公司 | 一种数据签名的方法、装置、电子设备及存储介质 |
CN111769940B (zh) * | 2020-07-09 | 2023-02-03 | 天翼物联科技有限公司 | 一种密钥在线分发方法、***及介质 |
CN111970114B (zh) * | 2020-08-31 | 2023-08-18 | 中移(杭州)信息技术有限公司 | 文件加密方法、***、服务器和存储介质 |
CN112733200B (zh) * | 2020-12-30 | 2023-02-10 | 北京深盾科技股份有限公司 | 业务密钥的信息处理方法、加密机及信息处理*** |
WO2022121940A1 (zh) * | 2020-12-09 | 2022-06-16 | 北京深思数盾科技股份有限公司 | 业务密钥的信息处理方法、服务端及*** |
CN112581285B (zh) * | 2020-12-28 | 2022-12-09 | 上海万向区块链股份公司 | 一种股权交易***中基于区块链的账户生成方法、***及介质 |
CN113032802B (zh) * | 2021-03-09 | 2023-09-19 | 航天信息股份有限公司 | 一种数据安全存储方法及*** |
CN113868505A (zh) * | 2021-09-03 | 2021-12-31 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备、服务器及存储介质 |
CN114499871B (zh) * | 2021-12-23 | 2024-01-09 | 成都卫士通信息产业股份有限公司 | 一种签名加密方法、装置、***及计算机可读存储介质 |
CN114726597B (zh) * | 2022-03-25 | 2024-04-26 | 华润数字科技(深圳)有限公司 | 数据传输方法、装置、***及存储介质 |
CN114844716B (zh) * | 2022-05-25 | 2023-07-25 | 中国联合网络通信集团有限公司 | 数字签名报文处理方法、装置、设备及计算机介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107395368A (zh) * | 2017-08-18 | 2017-11-24 | 北京无字天书科技有限公司 | 无介质环境中的数字签名方法及解密封方法与解密方法 |
CN108173648A (zh) * | 2017-12-29 | 2018-06-15 | 数安时代科技股份有限公司 | 基于私钥托管的数字安全处理方法、设备及存储介质 |
WO2018127081A1 (zh) * | 2017-01-04 | 2018-07-12 | 天地融科技股份有限公司 | 一种加密密钥获取方法及*** |
CN108494551A (zh) * | 2018-03-16 | 2018-09-04 | 数安时代科技股份有限公司 | 基于协同密钥的处理方法、***、计算机设备及存储介质 |
WO2019052286A1 (zh) * | 2017-09-12 | 2019-03-21 | 广州广电运通金融电子股份有限公司 | 基于区块链的用户身份验证方法、装置及*** |
-
2019
- 2019-12-26 CN CN201911371679.4A patent/CN111130803B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018127081A1 (zh) * | 2017-01-04 | 2018-07-12 | 天地融科技股份有限公司 | 一种加密密钥获取方法及*** |
CN107395368A (zh) * | 2017-08-18 | 2017-11-24 | 北京无字天书科技有限公司 | 无介质环境中的数字签名方法及解密封方法与解密方法 |
WO2019052286A1 (zh) * | 2017-09-12 | 2019-03-21 | 广州广电运通金融电子股份有限公司 | 基于区块链的用户身份验证方法、装置及*** |
CN108173648A (zh) * | 2017-12-29 | 2018-06-15 | 数安时代科技股份有限公司 | 基于私钥托管的数字安全处理方法、设备及存储介质 |
CN108494551A (zh) * | 2018-03-16 | 2018-09-04 | 数安时代科技股份有限公司 | 基于协同密钥的处理方法、***、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111130803A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111130803B (zh) | 数字签名的方法、***及装置 | |
US10785019B2 (en) | Data transmission method and apparatus | |
CN107483212B (zh) | 一种双方协作生成数字签名的方法 | |
US6125185A (en) | System and method for encryption key generation | |
CN110932851B (zh) | 一种基于pki的多方协同运算的密钥保护方法 | |
CN113691502B (zh) | 通信方法、装置、网关服务器、客户端及存储介质 | |
CN110690956B (zh) | 双向认证方法及***、服务器和终端 | |
CN108199847B (zh) | 数字安全处理方法、计算机设备及存储介质 | |
CN109921905B (zh) | 基于私钥池的抗量子计算密钥协商方法和*** | |
CN107465665A (zh) | 一种基于指纹识别技术的文件加解密方法 | |
CN111342955B (zh) | 一种通信方法及其设备、计算机存储介质 | |
CN110519226B (zh) | 基于非对称密钥池和隐式证书的量子通信服务端保密通信方法和*** | |
CN105407467A (zh) | 短消息加密方法、装置和*** | |
CN106411520B (zh) | 一种虚拟资源数据的处理方法、装置及*** | |
CN113067823A (zh) | 邮件用户身份认证和密钥分发方法、***、设备及介质 | |
CN117081736A (zh) | 密钥分发方法、密钥分发装置、通信方法及通信装置 | |
US20060129812A1 (en) | Authentication for admitting parties into a network | |
US7360238B2 (en) | Method and system for authentication of a user | |
US20240106633A1 (en) | Account opening methods, systems, and apparatuses | |
CN110995648A (zh) | 安全加密方法 | |
CN114448640A (zh) | 一种双盲信息分发方法、装置及计算机可读存储介质 | |
WO2020042023A1 (zh) | 一种即时通信的数据加密方法及装置 | |
CN102036194B (zh) | 一种加密mms的方法及*** | |
CN111901335A (zh) | 基于中台的区块链数据传输管理方法及*** | |
US20230027010A1 (en) | Secret code verification protocol |
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 | ||
CP02 | Change in the address of a patent holder |
Address after: Room 301-A30, 3rd Floor, 123 Dongjiao South Road, Liwan District, Guangzhou City, Guangdong Province, 510375 Patentee after: Xin'an Shenzhou Technology (Guangzhou) Co.,Ltd. Address before: Unit 3F-13, Self-made Building A, No. 16, East Ho Shell Street, Shixi Village, Haizhu District, Guangzhou City, Guangdong Province, 510000 Patentee before: Xin'an Shenzhou Technology (Guangzhou) Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |