CN109672539A - Sm2算法协同签名及解密方法、装置及*** - Google Patents
Sm2算法协同签名及解密方法、装置及*** Download PDFInfo
- Publication number
- CN109672539A CN109672539A CN201910158690.6A CN201910158690A CN109672539A CN 109672539 A CN109672539 A CN 109672539A CN 201910158690 A CN201910158690 A CN 201910158690A CN 109672539 A CN109672539 A CN 109672539A
- Authority
- CN
- China
- Prior art keywords
- client
- elliptic curve
- group element
- server
- curve group
- 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.)
- Granted
Links
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
- H04L9/3252—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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了SM2算法协同签名及解密方法、装置及***,其协同签名方法:通过计算第一椭圆曲线群元素组并发送给服务端校验后,对服务端反馈的第二椭圆曲线群元素组进行校验,并基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素;根据用户信息杂凑值、待签名消息以及第三椭圆曲线群元素的横坐标,计算第一数值,并根据第一数值、第一随机数以及客户端私钥分量,生成第二数值并发送给服务端;接收服务端根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值;根据第一数值和所述第三数值合成SM2数字签名。该方法具有输入验证和可证明安全特性,更加契合实际应用环境,能够更好地保护用户隐私。
Description
技术领域
本发明涉及数字签名技术领域,尤其是涉及SM2算法协同签名及解密方法、装置及***。
背景技术
2010年12月17日,为满足电子认证服务***等应用需求,国家密码管理局发布了SM2椭圆曲线公钥密码算法,包括SM2-1椭圆曲线数字签名算法、SM2-2椭圆曲线密钥协商协议、SM2-3椭圆曲线加密算法。其中,SM2签名算法见《GM/T0003.2-2012SM2椭圆曲线公钥密码算法》的第2部分:数字签名算法。
如今更多的电子商务与交易正在向移动互联网过渡和发展,在移动终端中使用数字证书做电子签名的需求与日俱增。为了提高云计算环境中的私钥的安全性,现有技术中的解决方案主要包括:
1)使用蓝牙、音码和NFC等智能密码钥匙、智能IC卡设备;
2)使用本地加密存储的私钥;
3)使用共同公钥生成方法,一部分私钥在本地加密存储,一部分私钥在服务端加密存储,由本地和服务端合作完成签名或解密。
但是,在对现有技术的研究和实践过程中,本发明的发明人发现:
对于解决方案1),硬件设备需要适配和兼容各种型号智能手机,存在兼容性差及使用复杂的问题,且成本较高;
对于解决方案2),在签名或解密计算过程中,需要将私钥解密后使用,这就导致完整的私钥出现在内存中,攻击者可能从手机内存中将其导出;
对于解决方案3),现有方案存在共同公钥生成方法不符合实际应用环境,共同签名方法缺乏输入验证,协同解密算法隐私性较差的问题。
发明内容
本发明实施例提供的SM2算法协同签名及解密方法、装置及***,更加契合实际应用环境,更好地保护用户隐私并抵抗恶意攻击。
为了解决上述技术问题,本发明实施例提供了一种SM2算法协同签名方法,包括:
基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端;
接收所述服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组;
基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素;
根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标,计算第一数值;并根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端;
接收所述服务端反馈的第三数值;所述第三数值为所述服务端根据所述第二数值、所述第二随机数以及服务端私钥分量计算所得;
根据所述第一数值和所述第三数值合成SM2数字签名。
进一步地,所述的SM2算法协同签名方法,在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端之后,还包括:
使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名并发送给所述服务端,以使所述服务端使用客户端公钥分量对所述第一数字签名进行验证。
进一步地,所述第一椭圆曲线群元素组为R'A=[kA]G和R”AA=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点;
所述的SM2算法协同签名方法,在所述基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端之后,还包括:
使所述服务端使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
进一步地,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数;
所述的SM2算法协同签名方法,在所述接收服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组之后,还包括:
使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
进一步地,所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA;
所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标;
所述第一数值的计算公式为:r=H(ZA||M)+xA modn;
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算;
所述第三数值的计算公式为
所述SM2数字签名为(r,t-r)。
进一步地,所述的SM2算法协同签名方法,还包括:
选择客户端私钥分量dA∈[1,n-1],计算客户端公钥分量PKA=[dA]G,并将所述客户端公钥分量发送给服务端;
接收所述服务端发送的服务端公钥分量PKBA和随机群元素RB;其中,所述服务端公钥分量为PKBA=[dBA]G,服务端私钥分量为dBA∈[1,n-1],所述随机群元素为RB=[kB]PKA,选取的随机数为kB∈[1,n-1];
选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标;
计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端生成证书签名请求CSR的内容,设为MCSR;
计算数值r=H(ZA||MCSR)+xA mod n和数值并把s'提交给所述服务端,以使所述服务端验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端;
计算SM2数字签名(r,t-r),合成完整的CSR,提交给所述服务端,使所述服务端验证完整的CSR与接收到的MCSR是否相符,是则向证书颁发机构CA提交,以使证书颁发机构CA在验证CSR后,颁发共同公钥证书,并存储到证书库中。
本发明实施例还提供了一种SM2算法协同签名方法,包括:
接收客户端发送的第一椭圆曲线群元素组;所述第一椭圆曲线群元素组为所述客户端基于服务端公钥分量以及选取的第一随机数计算所得;
基于所述客户端公钥分量以及选取的第二随机数,计算第二椭圆曲线群元素组,并将所述第二椭圆曲线群元素组发送给所述客户端;
接收所述客户端发送的第二数值;所述第二数值为所述客户端根据第一数值、所述第一随机数以及客户端私钥分量生成;所述第一数值为所述客户端根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标计算所得;所述第三椭圆曲线群元素为所述客户端基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组计算所得;
根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值并反馈给所述客户端,以使所述客户端根据所述第一数值和所述第三数值合成SM2数字签名。
进一步地,所述的SM2算法协同签名方法,在接收所述客户端发送的第二数值之后,还包括:
接收所述客户端发送的第一数字签名;所述第一数字签名为所述客户端基于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值,使用客户端私钥分量计算所得;
使用客户端公钥分量对所述第一数字签名进行验证。
进一步地,所述的SM2算法协同签名方法,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点;
所述的SM2算法协同签名方法,在接收客户端发送的第一椭圆曲线群元素组之后,还包括:
使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
进一步地,所述的SM2算法协同签名方法,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数;
所述的SM2算法协同签名方法,还包括:在将所述第二椭圆曲线群元素组发送给所述客户端之后,使所述客户端使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
进一步地,所述的SM2算法协同签名方法,
所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA;
所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标;
所述第一数值的计算公式为:r=H(ZA||M)+xA modn;
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算;
所述第三数值的计算公式为
所述SM2数字签名为(r,t-r)。
进一步地,所述的SM2算法协同签名方法,还包括:
接收客户端基于选择的客户端私钥分量dA∈[1,n-1]反馈的客户端公钥分量PKA=[dA]G;
基于服务端私钥分量dBA∈[1,n-1],计算服务端公钥分量PKBA=[dBA]G,并选取随机数kB∈[1,n-1]计算随机群元素RB=[kB]PKA,且将PKBA和RB返回给所述客户端,以使所述客户端选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标;
接收所述客户端提交的数值s';其中,数值数值r=H(ZA||MCSR)+xA mod n,MCSR为所述客户端计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端所生成证书签名请求CSR的内容;
验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端;
接收客户端提交的在计算SM2数字签名(r,t-r)后合成完整的CSR;
验证完整的CSR与接收到的MCSR是否相符,是则向证书颁发机构CA提交,以使证书颁发机构CA在验证CSR后,颁发共同公钥证书,并存储到证书库中。
本发明实施例还提供了一种SM2算法协同解密方法,包括:
基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素并发送给服务端;
接收服务端发送的第五椭圆曲线群元素和第六椭圆曲线群元素;所述第五椭圆曲线群元素和所述第六椭圆曲线群元素为所述服务端基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素计算所得;
根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
在所述第四数值不等于所述SM2密文第三分量时,报错并退出;
在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
进一步地,所述的SM2算法协同解密方法,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1];
所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量;
所述第三随机数和所述第四随机数分别为
所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为
所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为
所述第七椭圆曲线群元素为
所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
所述明文为其中,表示按位异或运算;
所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
进一步地,所述的SM2算法协同解密方法,还包括:
计算消息M=T1||T2的第二数字签名δ,并把所述第二数字签名δ发送给服务端,以使所述服务端使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
本发明实施例还提供了一种SM2算法协同解密方法,包括:
接收客户端发送的第三椭圆曲线群元素和第四椭圆曲线群元素;所述第三椭圆曲线群元素和所述第四椭圆曲线群元素为所述客户端基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数计算所得;
基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素并发送给客户端,以使所述客户端执行如下步骤:
根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
在所述第四数值不等于所述SM2密文第三分量时,报错并退出;
在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
进一步地,所述的SM2算法协同解密方法,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1];
所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量;
所述第三随机数和所述第四随机数分别为
所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为
所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为
所述第七椭圆曲线群元素为
所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
所述明文为其中,表示按位异或运算;
所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
进一步地,所述的SM2算法协同解密方法,还包括:
接收所述客户端所计算的消息M=T1||T2的第二数字签名δ;
使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
本发明实施例还提供了一种SM2算法协同签名装置,包括:
计算单元,用于基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组;
通信单元,用于将所述第一椭圆曲线群元素组发送给服务端,以及接收所述服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组;
所述计算单元,还用于基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素;
所述计算单元,还用于根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素对应的横坐标,计算第一数值;
所述计算单元,还用于根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值;
所述通信单元,还用于把所述第二数值发送给所述服务端,并接收所述服务端反馈的第三数值;所述第三数值为所述服务端根据所述第二数值、所述第二随机数以及服务端私钥分量计算所得;
SM2数字签名单元,用于根据所述第一数值和所述第三数值合成SM2数字签名。
进一步地,所述的SM2算法协同签名装置,还包括:
所述计算单元,还用于在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端之后,使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名;
所述通信单元,还用于将所述第一签名发送给所述服务端,以使所述服务端使用客户端公钥分量对所述第一数字签名进行验证。
本发明实施例还提供了一种SM2算法协同签名装置,包括:
通信单元,用于接收客户端发送的第一椭圆曲线群元素组;所述第一椭圆曲线群元素组为所述客户端基于服务端公钥分量以及选取的第一随机数计算所得;
计算单元,用于基于所述客户端公钥分量以及选取的第二随机数,计算第二椭圆曲线群元素组;
所述通信单元,还用于接收所述客户端发送的第二数值;所述第二数值为所述客户端根据第一数值、所述第一随机数以及客户端私钥分量生成;所述第一数值为所述客户端根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标计算所得;所述第三椭圆曲线群元素为所述客户端基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组计算所得;
所述计算单元,还用于根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值;
所述通信单元,还用于将所述第三数值反馈给所述客户端,以使所述客户端根据所述第一数值和所述第三数值合成SM2数字签名。
进一步地,所述的SM2算法协同签名装置,还包括:
所述通信单元,还用于在接收所述客户端发送的第二数值之后,接收所述客户端发送的第一数字签名;所述第一数字签名为所述客户端基于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值,使用客户端私钥分量计算所得;
验证单元,用于使用客户端公钥分量对所述第一数字签名进行验证。
本发明实施例还提供了一种SM2算法协同解密装置,包括:
计算单元,用于基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素;
通信单元,用于将所述第三椭圆曲线群元素和所述第四椭圆曲线群元素发送给服务端,以及接收服务端发送的第五椭圆曲线群元素和第六椭圆曲线群元素;所述第五椭圆曲线群元素和所述第六椭圆曲线群元素为所述服务端基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素计算所得;
所述计算单元,还用于根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
所述计算单元,还用于基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
所述计算单元,还用于将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
所述计算单元,还用于基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
判断单元,用于在所述第四数值不等于所述SM2密文第三分量时,报错并退出;在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
进一步地,所述的SM2算法协同解密装置,还包括:
所述计算单元,还用于计算消息的第二数字签名;
所述通信单元,还用于把所述第二数字签名发送给服务端,以使所述服务端使用客户端公钥分量验证所述第二数字签名。
本发明实施例还提供了一种SM2算法协同解密装置,包括:
通信单元,用于接收客户端发送的第三椭圆曲线群元素和第四椭圆曲线群元素;所述第三椭圆曲线群元素和所述第四椭圆曲线群元素为所述客户端基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数计算所得;
计算单元,用于基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素;
所述通信单元,还用于将所述第五椭圆曲线群元素和所述第六椭圆曲线群元素发送给客户端,以使所述客户端执行如下步骤:
根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
在所述第四数值不等于所述SM2密文第三分量时,报错并退出;
在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
进一步地,所述的SM2算法协同解密装置,还包括:
所述通信单元,还用于接收所述客户端所计算并发送的消息的第二数字签名;
验证单元,用于使用客户端公钥分量验证所述第二数字签名。
本发明实施例还提供了一种SM2算法协同签名***,包括客户端和服务端,协同签名由客户端发起;
所述客户端,用于基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端;
所述服务端,用于基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组给所述客户端;
所述客户端,还用于基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素;
所述客户端,还用于根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素对应的横坐标,计算第一数值;并根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端;
所述服务端,还用于根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值并反馈给所述客户端;
所述客户端,还用于根据所述第一数值和所述第三数值合成SM2数字签名。
进一步地,所述的SM2算法协同签名***,还包括:
所述客户端,还用于在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值之后,使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名,并将所述第一签名发送给所述服务端;
所述服务端,还用于使用客户端公钥分量对所述第一数字签名进行验证。
进一步地,所述第一椭圆曲线群元素组为R'A=[kA]G和R”AA=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点;
所述服务端,还用于在接收所述客户端发送的第一椭圆曲线群元素组之后,使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
进一步地,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数;
所述客户端,还用于使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
进一步地,所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA;
所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标;
所述第一数值的计算公式为:r=H(ZA||M)+xA modn;
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算;
所述第三数值的计算公式为
所述SM2数字签名为(r,t-r)。
进一步地,所述的SM2算法协同签名***,还包括证书颁发机构CA;
所述客户端,还用于选择客户端私钥分量dA∈[1,n-1],计算客户端公钥分量PKA=[dA]G,并将所述客户端公钥分量发送给服务端;
所述服务端,还用于发送服务端公钥分量PKBA和随机群元素RB给所述客户端;其中,所述服务端公钥分量为PKBA=[dBA]G,服务端私钥分量为dBA∈[1,n-1],所述随机群元素为RB=[kB]PKA,选取的随机数为kB∈[1,n-1];
所述客户端,还用于选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标;
所述客户端,还用于计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端生成证书签名请求CSR的内容,设为MCSR;
所述客户端,还用于计算数值r=H(ZA||MCSR)+xA mod n和数值并把s'提交给所述服务端;
所述服务端,还用于验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端;
所述客户端,还用于计算SM2数字签名(r,t-r),合成完整的CSR,提交给所述服务端;
所述服务端,还用于验证完整的CSR与接收到的MCSR是否相符,是则向所述证书颁发机构CA提交;
所述证书颁发机构CA,用于在验证CSR后,颁发共同公钥证书,并存储到证书库中。
本发明实施例还提供了一种SM2算法协同解密***,包括客户端和服务端;
所述客户端,用于基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素并发送给服务端;
所述服务端,用于基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素并发送给客户端;
所述客户端,还用于根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
所述客户端,还用于基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
所述客户端,还用于将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
所述客户端,还用于基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
所述客户端,还用于在所述第四数值不等于所述SM2密文第三分量时,报错并退出;在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
进一步地,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1];
所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量;
所述第三随机数和所述第四随机数分别为
所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为
所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为
所述第七椭圆曲线群元素为
所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
所述明文为其中,表示按位异或运算;
所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
进一步地,所述的SM2算法协同解密***,还包括:
所述客户端,用于计算消息M=T1||T2的第二数字签名δ,并把所述第二数字签名δ发送给服务端;
所述服务端,还用于使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
实施本发明实施例,具有如下有益效果:
本发明提供的SM2算法协同签名及解密方法、装置及***,其协同签名方法:通过计算第一椭圆曲线群元素组并发送给服务端校验后,对服务端反馈的第二椭圆曲线群元素组进行校验,并基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素;根据用户信息杂凑值、待签名消息以及第三椭圆曲线群元素的横坐标,计算第一数值,并根据第一数值、第一随机数以及客户端私钥分量,生成第二数值并发送给服务端;接收服务端根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值;根据第一数值和所述第三数值合成SM2数字签名。该方法具有输入验证和可证明安全特性,更加契合实际应用环境,能够更好地保护用户隐私。
附图说明
图1是本发明实施例提供的SM2算法协同签名方法的流程示意图;
图2是本发明实施例提供的SM2算法协同签名方法的另一流程示意图;
图3是本发明实施例提供的SM2算法协同签名解密的流程示意图;
图4是本发明实施例提供的SM2算法协同签名解密的另一流程示意图;
图5是本发明实施例提供的SM2算法协同签名***的示意图;
图6是本发明实施例提供的SM2算法协同解密***的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为满足电子认证服务***等应用需求,国家密码管理局发布了SM2椭圆曲线公钥密码算法,包括SM2-1椭圆曲线数字签名算法、SM2-2椭圆曲线密钥协商协议、SM2-3椭圆曲线加密算法。
SM2签名算法见《GM/T 0003.2-2012SM2椭圆曲线公钥密码算法第2部分:数字签名算法》,设待签名的消息为M,作为签名者的用户A具有长度为entlenA比特的可辨别标识IDA,具有密钥对包括私钥dA和公钥PA=[dA]G=(xA,yA),为了获取M的数字签名(r,s),用户A应该实现以下运算步骤:
1)置其中ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA);
2)计算
3)用随机数发生器产生随机数k∈[1,n-1];
4)计算椭圆曲线点(x1,y1)=[k]G;
5)计算r=(e+x1)modn,若r=0或r+k=n则返回3);
6)计算s=((1+dA)-1·(k-r·dA))mod n,若s=0则返回3);
7)得到消息M的签名(r,s)。
SM2解密算法见《GM/T 0003.4-2012SM2椭圆曲线公钥密码算法第4部分:公钥加密算法》,作为解密者的B具有密钥对包括私钥dB和公钥PB=[dB]G=(xB,yB),为了对密文C=C1||C2||C3进行解密,B应实现以下运算步骤:
从C中取出比特串C1,验证C1是否满足椭圆曲线方程,若不满足则报错并退出;
计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出;
计算[dB]C1=(x2,y2);
计算t=KDF(x2||y2,klen),若t为全0比特串,则报错并退出;
从C中取出比特串C2,计算
计算u=Hash(x2||M'||y2),从C中取出比特串C3,若u≠C3,则报错并退出;
输出明文M'。
针对当前共同公钥生成方法不符合实际应用环境,共同签名方法缺乏输入验证,协同解密算法隐私性较差的问题,本发明实施例给出共同公钥证书的具体生成过程,给出具有输入验证和可证明安全特性的协同签名方法,以及更好的保护用户隐私的协同解密方法,使得共同公钥密码体制可以切实的应用在生产实践中,更好的保护用户隐私,提供更好的安全性。
第一方面。
请参阅图1,图1是本发明实施例提供的SM2算法协同签名方法的流程示意图。所述SM2算法协同签名方法,由客户端执行,包括如下步骤S101-S106。
S101、基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端。
其中,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点。
在一优选实施例中,所述的SM2算法协同签名方法,在所述基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端之后,还包括:
使所述服务端使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
在具体的实施例当中,R”A=[kA]PKBA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
S102、接收所述服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组。
其中,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数。
在一优选实施例中,所述的SM2算法协同签名方法,在所述接收服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组之后,还包括:
使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
在具体的实施例当中,R'B=[kB]G的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
S103、基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素。
其中,所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标。
S104、根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标,计算第一数值;并根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端。
其中,所述第一数值的计算公式为:r=H(ZA||M)+xA modn。
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算。
S105、接收所述服务端反馈的第三数值;所述第三数值为所述服务端根据所述第二数值、所述第二随机数以及服务端私钥分量计算所得。
其中,所述第三数值的计算公式为
S106、根据所述第一数值和所述第三数值合成SM2数字签名。
其中,所述SM2数字签名为(r,t-r)。
在具体的实施例当中,客户端合成SM2数字签名(r,t-r)后,验证数字签名的正确性,验证无效退出协议,否则获得签名。
客户端和服务端分别持有部分私钥分量,攻击者在劫持其中一方的条件下无法获得完整的私钥,也无法实现私钥脱机使用,提升了私钥存储的安全性。签名需要客户端和服务端共同完成,任意一方都无法单独完成签名,保证了签名的安全性。
在一优选的实施例中,所述的SM2算法协同签名方法,在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端之后,还包括:
使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名并发送给所述服务端,以使所述服务端使用客户端公钥分量对所述第一数字签名进行验证。
其中,所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA。
在具体的实施例当中,δA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
在一优选的实施例中,所述的SM2算法协同签名方法,还包括:
选择客户端私钥分量dA∈[1,n-1],计算客户端公钥分量PKA=[dA]G,并将所述客户端公钥分量发送给服务端。
接收所述服务端发送的服务端公钥分量PKBA和随机群元素RB;其中,所述服务端公钥分量为PKBA=[dBA]G,服务端私钥分量为dBA∈[1,n-1],所述随机群元素为RB=[kB]PKA,选取的随机数为kB∈[1,n-1]。
选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标。
计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端生成证书签名请求CSR的内容,设为MCSR。
在具体的实施例当中,计算共同公钥PK分别需要客户端和服务端各自的私钥分量参与计算才能获得。其中,本实施例已绑定证书签发过程,由客户端计算共同公钥PK。。
计算数值r=H(ZA||MCSR)+xA mod n和数值并把s'提交给所述服务端,以使所述服务端验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端。
计算SM2数字签名(r,t-r),合成完整的CSR,提交给所述服务端,使所述服务端验证完整的CSR与接收到的MCSR是否相符,是则向证书颁发机构CA提交,以使证书颁发机构CA在验证CSR后,颁发共同公钥证书,并存储到证书库中。
在具体的实施例当中,在产生公钥之后,按GM/T 0003.1-2012标准6.2给出的方法验证公钥是否有效。
本实施例中,共同公钥证书申请兼容当前的CA证书颁发流程,过程中包含服务端对客户端的身份认证,并且身份与完整的CSR绑定,有效的防止客户端提供虚假信息。
需要说明的是,客户端或者服务端都可以获取证书库中的共同公钥证书,客户端在本地存储该共同公钥证书和服务端的公钥分量,服务端在本地存储该共同公钥证书和客户端的公钥分量。
请参阅图2,图2是本发明实施例提供的SM2算法协同签名方法的另一流程示意图。所述SM2算法协同签名方法,由服务端执行,包括如下步骤S201-S204。
S201、接收客户端发送的第一椭圆曲线群元素组;所述第一椭圆曲线群元素组为所述客户端基于服务端公钥分量以及选取的第一随机数计算所得。
其中,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点。
在一优选实施例中,所述的SM2算法协同签名方法,在接收客户端发送的第一椭圆曲线群元素组之后,还包括:
使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
在具体的实施例当中,R”A=[kA]PKBA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
S202、基于所述客户端公钥分量以及选取的第二随机数,计算第二椭圆曲线群元素组,并将所述第二椭圆曲线群元素组发送给所述客户端。
其中,所述的SM2算法协同签名方法,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数。
在一优选实施例中,所述的SM2算法协同签名方法,还包括:在将所述第二椭圆曲线群元素组发送给所述客户端之后,使所述客户端使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
在具体的实施例当中,R'B=[kB]G的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
S203、接收所述客户端发送的第二数值;所述第二数值为所述客户端根据第一数值、所述第一随机数以及客户端私钥分量生成;所述第一数值为所述客户端根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标计算所得;所述第三椭圆曲线群元素为所述客户端基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组计算所得。
其中,所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标。
所述第一数值的计算公式为:r=H(ZA||M)+xA modn。
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算。
S204、根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值并反馈给所述客户端,以使所述客户端根据所述第一数值和所述第三数值合成SM2数字签名。
其中,所述第三数值的计算公式为所述SM2数字签名为(r,t-r)。
在具体的实施例当中,客户端合成SM2数字签名(r,t-r)后,验证数字签名的正确性,验证无效退出协议,否则获得签名。
客户端和服务端分别持有部分私钥分量,攻击者在劫持其中一方的条件下无法获得完整的私钥,也无法实现私钥脱机使用,提升了私钥存储的安全性。签名需要客户端和服务端共同完成,任意一方都无法单独完成签名,保证了签名的安全性。
在一优选的实施例中,所述的SM2算法协同签名方法,在接收所述客户端发送的第二数值之后,还包括:
接收所述客户端发送的第一数字签名;所述第一数字签名为所述客户端基于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值,使用客户端私钥分量计算所得;
使用客户端公钥分量对所述第一数字签名进行验证。
其中,所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA。
在具体的实施例当中,δA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
在一优选的实施例中,所述的SM2算法协同签名方法,还包括:
接收客户端基于选择的客户端私钥分量dA∈[1,n-1]反馈的客户端公钥分量PKA=[dA]G。
基于服务端私钥分量dBA∈[1,n-1],计算服务端公钥分量PKBA=[dBA]G,并选取随机数kB∈[1,n-1]计算随机群元素RB=[kB]PKA,且将PKBA和RB返回给所述客户端,以使所述客户端选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标。
接收所述客户端提交的数值s';其中,数值数值r=H(ZA||MCSR)+xA mod n,MCSR为所述客户端计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端所生成证书签名请求CSR的内容。
在具体的实施例当中,计算共同公钥PK分别需要客户端和服务端各自的私钥分量参与计算才能获得。其中,本实施例已绑定证书签发过程,由客户端计算共同公钥PK。
验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端。
接收客户端提交的在计算SM2数字签名(r,t-r)后合成完整的CSR。
验证完整的CSR与接收到的MCSR是否相符,是则向证书颁发机构CA提交,以使证书颁发机构CA在验证CSR后,颁发共同公钥证书,并存储到证书库中。
在具体的实施例当中,在产生公钥之后,按GM/T 0003.1-2012标准6.2给出的方法验证公钥是否有效。
本实施例中,共同公钥证书申请兼容当前的CA证书颁发流程,过程中包含服务端对客户端的身份认证,并且身份与完整的CSR绑定,有效的防止客户端提供虚假信息。
需要说明的是,客户端或者服务端都可以获取证书库中的共同公钥证书,客户端在本地存储该共同公钥证书和服务端的公钥分量,服务端在本地存储该共同公钥证书和客户端的公钥分量。
第二方面。
请参阅图3,图3是本发明实施例提供的SM2算法协同解密方法的流程示意图。所述SM2算法协同解密方法,由客户端执行,包括如下步骤S301-S307。
S301、基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素并发送给服务端。
S302、接收服务端发送的第五椭圆曲线群元素和第六椭圆曲线群元素;所述第五椭圆曲线群元素和所述第六椭圆曲线群元素为所述服务端基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素计算所得。
S303、根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素。
S304、基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥。
S305、将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文。
S306、基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值。
S307、在所述第四数值不等于所述SM2密文第三分量时,报错并退出;在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
其中,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1]。所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量。所述第三随机数和所述第四随机数分别为所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为所述第七椭圆曲线群元素为所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;所述明文为其中,表示按位异或运算。所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
在具体的实施例当中,客户端接收到共同公钥PK加密的密文(C1,C2,C3)之后,需要与服务端通信完成解密,流程如下:
客户端选择随机数计算椭圆曲线群元素 使用客户端私钥分量计算消息M=T1||T2的普通SM2数字签名δ,然后把(T1,T2,δ)发送给服务端;
服务端使用客户端公钥分量PKA验证数字签名δ,验证不通过则退出,否则选择随机数计算椭圆曲线群元素然后把(T3,T4)发送给客户端;
客户端计算椭圆曲线群元素
客户端计算对称密钥t=KDF(x2||y2,klen),其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
客户端计算明文其中,表示按位异或运算;
客户端计算验证数据u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法,若u≠C3,则报错并退出;
客户端输出明文M'。
本实施例中,解密过程引入混淆因子,避免攻击者监听密文和过程数据后解密出密文,更好的保护用户隐私。解密需要客户端和服务端共同完成,任意一方都无法单独完成解密,保证了解密的安全性。
在一优选实施例中,所述的SM2算法协同解密方法,还包括:
计算消息M=T1||T2的第二数字签名δ,并把所述第二数字签名δ发送给服务端,以使所述服务端使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
需要说明的是,所述第二数字签名δ为非必需的,在具体的实施例当中,δ的计算和验证不影响正常的解密流程,即使删除也能够完成解密流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
请参阅图4,图4是本发明实施例提供的SM2算法协同解密方法的另一流程示意图。所述SM2算法协同解密方法,由服务端执行,包括如下步骤S401-S402。
S401、接收客户端发送的第三椭圆曲线群元素和第四椭圆曲线群元素;所述第三椭圆曲线群元素和所述第四椭圆曲线群元素为所述客户端基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数计算所得。
S402、基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素并发送给客户端,以使所述客户端执行如下步骤:
根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
在所述第四数值不等于所述SM2密文第三分量时,报错并退出;
在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
其中,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1]。所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量。所述第三随机数和所述第四随机数分别为所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为所述第七椭圆曲线群元素为所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;所述明文为其中,表示按位异或运算。所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
在具体的实施例当中,客户端接收到共同公钥PK加密的密文(C1,C2,C3)之后,需要与服务端通信完成解密,流程如下:
客户端选择随机数计算椭圆曲线群元素 使用客户端私钥分量计算消息M=T1||T2的普通SM2数字签名δ,然后把(T1,T2,δ)发送给服务端;
服务端使用客户端公钥分量PKA验证数字签名δ,验证不通过则退出,否则选择随机数计算椭圆曲线群元素然后把(T3,T4)发送给客户端;
客户端计算椭圆曲线群元素
客户端计算对称密钥t=KDF(x2||y2,klen),其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
客户端计算明文其中,表示按位异或运算;
客户端计算验证数据u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法,若u≠C3,则报错并退出;
客户端输出明文M'。
本实施例中,解密过程引入混淆因子,避免攻击者监听密文和过程数据后解密出密文,更好的保护用户隐私。解密需要客户端和服务端共同完成,任意一方都无法单独完成解密,保证了解密的安全性。
在一优选实施例中,所述的SM2算法协同解密方法,还包括:
接收所述客户端所计算的消息M=T1||T2的第二数字签名δ;
使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
需要说明的是,所述第二数字签名δ为非必需的,在具体的实施例当中,δ的计算和验证不影响正常的解密流程,即使删除也能够完成解密流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
第三方面。
本发明实施例还提供了一种SM2算法协同签名装置,包括:
计算单元,用于基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组。
其中,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点。
在一优选实施例中,所述的SM2算法协同签名方法,在所述基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端之后,还包括:
使所述服务端使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
在具体的实施例当中,R”A=[kA]PKBA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
通信单元,用于将所述第一椭圆曲线群元素组发送给服务端,以及接收所述服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组。
其中,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数。
在一优选实施例中,所述的SM2算法协同签名方法,在所述接收服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组之后,还包括:
使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
在具体的实施例当中,R'B=[kB]G的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
所述计算单元,还用于基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素。
其中,所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标。
所述计算单元,还用于根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素对应的横坐标,计算第一数值。
所述计算单元,还用于根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值。
其中,所述第一数值的计算公式为:r=H(ZA||M)+xA modn。
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算。
所述通信单元,还用于把所述第二数值发送给所述服务端,并接收所述服务端反馈的第三数值;所述第三数值为所述服务端根据所述第二数值、所述第二随机数以及服务端私钥分量计算所得。
其中,所述第三数值的计算公式为
SM2数字签名单元,用于根据所述第一数值和所述第三数值合成SM2数字签名。
其中,所述SM2数字签名为(r,t-r)。
在具体的实施例当中,客户端合成SM2数字签名(r,t-r)后,验证数字签名的正确性,验证无效退出协议,否则获得签名。
客户端和服务端分别持有部分私钥分量,攻击者在劫持其中一方的条件下无法获得完整的私钥,也无法实现私钥脱机使用,提升了私钥存储的安全性。签名需要客户端和服务端共同完成,任意一方都无法单独完成签名,保证了签名的安全性。
在一优选的实施例中,所述的SM2算法协同签名装置,还包括:
所述计算单元,还用于在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端之后,使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名;
所述通信单元,还用于将所述第一签名发送给所述服务端,以使所述服务端使用客户端公钥分量对所述第一数字签名进行验证。
其中,所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA。
在具体的实施例当中,δA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
在一优选的实施例中,所述的SM2算法协同签名装置,还用于:
选择客户端私钥分量dA∈[1,n-1],计算客户端公钥分量PKA=[dA]G,并将所述客户端公钥分量发送给服务端。
接收所述服务端发送的服务端公钥分量PKBA和随机群元素RB;其中,所述服务端公钥分量为PKBA=[dBA]G,服务端私钥分量为dBA∈[1,n-1],所述随机群元素为RB=[kB]PKA,选取的随机数为kB∈[1,n-1]。
选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标。
计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端生成证书签名请求CSR的内容,设为MCSR。
在具体的实施例当中,计算共同公钥PK分别需要客户端和服务端各自的私钥分量参与计算才能获得。其中,本实施例已绑定证书签发过程,由客户端计算共同公钥PK。
计算数值r=H(ZA||MCSR)+xA mod n和数值并把s'提交给所述服务端,以使所述服务端验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端。
计算SM2数字签名(r,t-r),合成完整的CSR,提交给所述服务端,使所述服务端验证完整的CSR与接收到的MCSR是否相符,是则向证书颁发机构CA提交,以使证书颁发机构CA在验证CSR后,颁发共同公钥证书,并存储到证书库中。
在具体的实施例当中,在产生公钥之后,按GM/T 0003.1-2012标准6.2给出的方法验证公钥是否有效。
本实施例中,共同公钥证书申请兼容当前的CA证书颁发流程,过程中包含服务端对客户端的身份认证,并且身份与完整的CSR绑定,有效的防止客户端提供虚假信息。
需要说明的是,客户端或者服务端都可以获取证书库中的共同公钥证书,客户端在本地存储该共同公钥证书和服务端的公钥分量,服务端在本地存储该共同公钥证书和客户端的公钥分量。
本发明实施例还提供了一种SM2算法协同签名装置,包括:
通信单元,用于接收客户端发送的第一椭圆曲线群元素组;所述第一椭圆曲线群元素组为所述客户端基于服务端公钥分量以及选取的第一随机数计算所得。
其中,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点。
在一优选实施例中,所述的SM2算法协同签名方法,在接收客户端发送的第一椭圆曲线群元素组之后,还包括:
使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
在具体的实施例当中,R”A=[kA]PKBA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
计算单元,用于基于所述客户端公钥分量以及选取的第二随机数,计算第二椭圆曲线群元素组。
其中,所述的SM2算法协同签名方法,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数。
在一优选实施例中,所述的SM2算法协同签名方法,还包括:在将所述第二椭圆曲线群元素组发送给所述客户端之后,使所述客户端使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
在具体的实施例当中,R'B=[kB]G的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
所述通信单元,还用于接收所述客户端发送的第二数值;所述第二数值为所述客户端根据第一数值、所述第一随机数以及客户端私钥分量生成;所述第一数值为所述客户端根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标计算所得;所述第三椭圆曲线群元素为所述客户端基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组计算所得。
其中,所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标。
所述第一数值的计算公式为:r=H(ZA||M)+xA modn。
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算。
所述计算单元,还用于根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值。
所述通信单元,还用于将所述第三数值反馈给所述客户端,以使所述客户端根据所述第一数值和所述第三数值合成SM2数字签名。
其中,所述第三数值的计算公式为所述SM2数字签名为(r,t-r)。
在具体的实施例当中,客户端合成SM2数字签名(r,t-r)后,验证数字签名的正确性,验证无效退出协议,否则获得签名。
客户端和服务端分别持有部分私钥分量,攻击者在劫持其中一方的条件下无法获得完整的私钥,也无法实现私钥脱机使用,提升了私钥存储的安全性。签名需要客户端和服务端共同完成,任意一方都无法单独完成签名,保证了签名的安全性。
在一优选的实施例中,所述的SM2算法协同签名装置,还包括:
所述通信单元,还用于在接收所述客户端发送的第二数值之后,接收所述客户端发送的第一数字签名;所述第一数字签名为所述客户端基于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值,使用客户端私钥分量计算所得;
验证单元,用于使用客户端公钥分量对所述第一数字签名进行验证。
其中,所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA。
在具体的实施例当中,δA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
在一优选的实施例中,所述的SM2算法协同签名装置,还用于:
接收客户端基于选择的客户端私钥分量dA∈[1,n-1]反馈的客户端公钥分量PKA=[dA]G。
基于服务端私钥分量dBA∈[1,n-1],计算服务端公钥分量PKBA=[dBA]G,并选取随机数kB∈[1,n-1]计算随机群元素RB=[kB]PKA,且将PKBA和RB返回给所述客户端,以使所述客户端选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标。
接收所述客户端提交的数值s';其中,数值数值r=H(ZA||MCSR)+xA mod n,MCSR为所述客户端计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端所生成证书签名请求CSR的内容。
在具体的实施例当中,计算共同公钥PK分别需要客户端和服务端各自的私钥分量参与计算才能获得。其中,本实施例已绑定证书签发过程,由客户端计算共同公钥PK。
验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端。
接收客户端提交的在计算SM2数字签名(r,t-r)后合成完整的CSR。
验证完整的CSR与接收到的MCSR是否相符,是则向证书颁发机构CA提交,以使证书颁发机构CA在验证CSR后,颁发共同公钥证书,并存储到证书库中。
在具体的实施例当中,在产生公钥之后,按GM/T 0003.1-2012标准6.2给出的方法验证公钥是否有效。
本实施例中,共同公钥证书申请兼容当前的CA证书颁发流程,过程中包含服务端对客户端的身份认证,并且身份与完整的CSR绑定,有效的防止客户端提供虚假信息。
需要说明的是,客户端或者服务端都可以获取证书库中的共同公钥证书,客户端在本地存储该共同公钥证书和服务端的公钥分量,服务端在本地存储该共同公钥证书和客户端的公钥分量。
第四方面。
本发明实施例还提供了一种SM2算法协同解密装置,包括:
计算单元,用于基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素。
通信单元,用于将所述第三椭圆曲线群元素和所述第四椭圆曲线群元素发送给服务端,以及接收服务端发送的第五椭圆曲线群元素和第六椭圆曲线群元素;所述第五椭圆曲线群元素和所述第六椭圆曲线群元素为所述服务端基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素计算所得。
所述计算单元,还用于根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素。
所述计算单元,还用于基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥。
所述计算单元,还用于将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文。
所述计算单元,还用于基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值。
判断单元,用于在所述第四数值不等于所述SM2密文第三分量时,报错并退出;在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
其中,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1]。所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量。所述第三随机数和所述第四随机数分别为所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为所述第七椭圆曲线群元素为所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;所述明文为其中,表示按位异或运算。所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
在具体的实施例当中,客户端接收到共同公钥PK加密的密文(C1,C2,C3)之后,需要与服务端通信完成解密,流程如下:
客户端选择随机数计算椭圆曲线群元素 使用客户端私钥分量计算消息M=T1||T2的普通SM2数字签名δ,然后把(T1,T2,δ)发送给服务端;
服务端使用客户端公钥分量PKA验证数字签名δ,验证不通过则退出,否则选择随机数计算椭圆曲线群元素然后把(T3,T4)发送给客户端;
客户端计算椭圆曲线群元素
客户端计算对称密钥t=KDF(x2||y2,klen),其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
客户端计算明文其中,表示按位异或运算;
客户端计算验证数据u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法,若u≠C3,则报错并退出;
客户端输出明文M'。
本实施例中,解密过程引入混淆因子,避免攻击者监听密文和过程数据后解密出密文,更好的保护用户隐私。解密需要客户端和服务端共同完成,任意一方都无法单独完成解密,保证了解密的安全性。
在一优选实施例中,所述的SM2算法协同解密装置,还包括:
所述计算单元,还用于计算消息的第二数字签名;
所述通信单元,还用于把所述第二数字签名发送给服务端,以使所述服务端使用客户端公钥分量验证所述第二数字签名。
需要说明的是,所述第二数字签名δ为非必需的,在具体的实施例当中,δ的计算和验证不影响正常的解密流程,即使删除也能够完成解密流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
本发明实施例还提供了一种SM2算法协同解密装置,包括:
通信单元,用于接收客户端发送的第三椭圆曲线群元素和第四椭圆曲线群元素;所述第三椭圆曲线群元素和所述第四椭圆曲线群元素为所述客户端基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数计算所得。
计算单元,用于基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素。
所述通信单元,还用于将所述第五椭圆曲线群元素和所述第六椭圆曲线群元素发送给客户端,以使所述客户端执行如下步骤。
根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素。
基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥。
将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文。
基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值。
在所述第四数值不等于所述SM2密文第三分量时,报错并退出。
在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
其中,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1]。所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量。所述第三随机数和所述第四随机数分别为所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为所述第七椭圆曲线群元素为所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;所述明文为其中,表示按位异或运算。所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
在具体的实施例当中,客户端接收到共同公钥PK加密的密文(C1,C2,C3)之后,需要与服务端通信完成解密,流程如下:
客户端选择随机数计算椭圆曲线群元素 使用客户端私钥分量计算消息M=T1||T2的普通SM2数字签名δ,然后把(T1,T2,δ)发送给服务端;
服务端使用客户端公钥分量PKA验证数字签名δ,验证不通过则退出,否则选择随机数计算椭圆曲线群元素然后把(T3,T4)发送给客户端;
客户端计算椭圆曲线群元素
客户端计算对称密钥t=KDF(x2||y2,klen),其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
客户端计算明文其中,表示按位异或运算;
客户端计算验证数据u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法,若u≠C3,则报错并退出;
客户端输出明文M'。
本实施例中,解密过程引入混淆因子,避免攻击者监听密文和过程数据后解密出密文,更好的保护用户隐私。解密需要客户端和服务端共同完成,任意一方都无法单独完成解密,保证了解密的安全性。
在一优选实施例中,所述的SM2算法协同解密装置,还包括:
所述通信单元,还用于接收所述客户端所计算并发送的消息的第二数字签名;
验证单元,用于使用客户端公钥分量验证所述第二数字签名。
需要说明的是,所述第二数字签名δ为非必需的,在具体的实施例当中,δ的计算和验证不影响正常的解密流程,即使删除也能够完成解密流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
第五方面。
请参阅图5,图5是本发明实施例提供的SM2算法协同签名***的示意图。
所述SM2算法协同签名***,包括客户端和服务端,协同签名由客户端发起。
所述客户端,用于基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端。
其中,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点。
在一优选实施例中,所述服务端,还用于在接收所述客户端发送的第一椭圆曲线群元素组之后,使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
在具体的实施例当中,R”A=[kA]PKBA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
所述服务端,用于基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组给所述客户端。
其中,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数;
在一优选实施例中,所述客户端端,还用于使用客户端私钥分量dA验证[dA-1]RB=R'B,若不成立则退出协议;其中,dA∈[1,n-1]。
在具体的实施例当中,R'B=[kB]G的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了增强签名方案的安全性。
所述客户端,还用于基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素。
其中,所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标。
所述客户端,还用于根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素对应的横坐标,计算第一数值;并根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端。
其中,所述第一数值的计算公式为:r=H(ZA||M)+xA modn。
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算。
所述服务端,还用于根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值并反馈给所述客户端。
其中,所述第三数值的计算公式为
所述客户端,还用于根据所述第一数值和所述第三数值合成SM2数字签名。
其中,所述SM2数字签名为(r,t-r)。
在具体的实施例当中,客户端合成SM2数字签名(r,t-r)后,验证数字签名的正确性,验证无效退出协议,否则获得签名。
客户端和服务端分别持有部分私钥分量,攻击者在劫持其中一方的条件下无法获得完整的私钥,也无法实现私钥脱机使用,提升了私钥存储的安全性。签名需要客户端和服务端共同完成,任意一方都无法单独完成签名,保证了签名的安全性。
在一优选的实施例中,所述的SM2算法协同签名***,还包括:
所述客户端,还用于在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值之后,使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名,并将所述第一签名发送给所述服务端;
所述服务端,还用于使用客户端公钥分量对所述第一数字签名进行验证。
其中,所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA。
在具体的实施例当中,δA的计算和验证不影响正常的签名流程,即使删除也能够完成签名流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
在一优选的实施例中,所述的SM2算法协同签名***,还包括证书颁发机构CA。
所述客户端,还用于选择客户端私钥分量dA∈[1,n-1],计算客户端公钥分量PKA=[dA]G,并将所述客户端公钥分量发送给服务端。
所述服务端,还用于发送服务端公钥分量PKBA和随机群元素RB给所述客户端;其中,所述服务端公钥分量为PKBA=[dBA]G,服务端私钥分量为dBA∈[1,n-1],所述随机群元素为RB=[kB]PKA,选取的随机数为kB∈[1,n-1]。
所述客户端,还用于选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标。
所述客户端,还用于计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端生成证书签名请求CSR的内容,设为MCSR。
在具体的实施例当中,计算共同公钥PK分别需要客户端和服务端各自的私钥分量参与计算才能获得。其中,本实施例已绑定证书签发过程,由客户端计算共同公钥PK。
所述客户端,还用于计算数值r=H(ZA||MCSR)+xA mod n和数值并把s’提交给所述服务端。
所述服务端,还用于验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端。
所述客户端,还用于计算SM2数字签名(r,t-r),合成完整的CSR,提交给所述服务端。
所述服务端,还用于验证完整的CSR与接收到的MCSR是否相符,是则向所述证书颁发机构CA提交。
所述证书颁发机构CA,用于在验证CSR后,颁发共同公钥证书,并存储到证书库中。
在具体的实施例当中,在产生公钥之后,按GM/T 0003.1-2012标准6.2给出的方法验证公钥是否有效。
本实施例中,共同公钥证书申请兼容当前的CA证书颁发流程,过程中包含服务端对客户端的身份认证,并且身份与完整的CSR绑定,有效的防止客户端提供虚假信息。
需要说明的是,客户端或者服务端都可以获取证书库中的共同公钥证书,客户端在本地存储该共同公钥证书和服务端的公钥分量,服务端在本地存储该共同公钥证书和客户端的公钥分量。
第六方面。
请参阅图6,图6是本发明实施例提供的。
所述SM2算法协同解密***,包括客户端和服务端。
所述客户端,用于基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素并发送给服务端。
所述服务端,用于基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素并发送给客户端。
所述客户端,还用于根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素。
所述客户端,还用于基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥。
所述客户端,还用于将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文。
所述客户端,还用于基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值。
所述客户端,还用于在所述第四数值不等于所述SM2密文第三分量时,报错并退出;在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
其中,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1]。所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量。所述第三随机数和所述第四随机数分别为所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为所述第七椭圆曲线群元素为所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;所述明文为其中,表示按位异或运算。所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
在具体的实施例当中,客户端接收到共同公钥PK加密的密文(C1,C2,C3)之后,需要与服务端通信完成解密,流程如下:
客户端选择随机数计算椭圆曲线群元素 使用客户端私钥分量计算消息M=T1||T2的普通SM2数字签名δ,然后把(T1,T2,δ)发送给服务端;
服务端使用客户端公钥分量PKA验证数字签名δ,验证不通过则退出,否则选择随机数计算椭圆曲线群元素然后把(T3,T4)发送给客户端;
客户端计算椭圆曲线群元素
客户端计算对称密钥t=KDF(x2||y2,klen),其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
客户端计算明文其中,表示按位异或运算;
客户端计算验证数据u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法,若u≠C3,则报错并退出;
客户端输出明文M'。
本实施例中,解密过程引入混淆因子,避免攻击者监听密文和过程数据后解密出密文,更好的保护用户隐私。解密需要客户端和服务端共同完成,任意一方都无法单独完成解密,保证了解密的安全性。
在一优选实施例中,所述的SM2算法协同解密***,还包括:
所述客户端,用于计算消息M=T1||T2的第二数字签名δ,并把所述第二数字签名δ发送给服务端;
所述服务端,还用于使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
需要说明的是,所述第二数字签名δ为非必需的,在具体的实施例当中,δ的计算和验证不影响正常的解密流程,即使删除也能够完成解密流程,此处是为了验证客户端的身份(服务端对客户端的身份鉴别),防止任意客户端都能使用服务端的私钥分量,即避免了服务端私钥的非授权使用。
第七方面。
本发明实施例还提供一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时实现上述任一实施例中的SM2算法协同签名方法。
本发明实施例还提供一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时实现上述任一实施例中的SM2算法协同解密方法。
第八方面。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任一实施例中的SM2算法协同签名方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任一实施例中的的SM2算法协同解密方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (35)
1.一种SM2算法协同签名方法,其特征在于,包括:
基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端;
接收所述服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组;
基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素;
根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标,计算第一数值;并根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端;
接收所述服务端反馈的第三数值;所述第三数值为所述服务端根据所述第二数值、所述第二随机数以及服务端私钥分量计算所得;
根据所述第一数值和所述第三数值合成SM2数字签名。
2.根据权利要求1所述的SM2算法协同签名方法,其特征在于,在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端之后,还包括:
使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名并发送给所述服务端,以使所述服务端使用客户端公钥分量对所述第一数字签名进行验证。
3.根据权利要求2所述的SM2算法协同签名方法,其特征在于,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点;
在所述基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端之后,还包括:
使所述服务端使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
4.根据权利要求3所述的SM2算法协同签名方法,其特征在于,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数;
在所述接收服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组之后,还包括:
使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
5.根据权利要求4所述的SM2算法协同签名方法,其特征在于,
所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA;
所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标;
所述第一数值的计算公式为:r=H(ZA||M)+xAmodn;
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算;
所述第三数值的计算公式为
所述SM2数字签名为(r,t-r)。
6.根据权利要求5所述的SM2算法协同签名方法,其特征在于,还包括:
选择客户端私钥分量dA∈[1,n-1],计算客户端公钥分量PKA=[dA]G,并将所述客户端公钥分量发送给服务端;
接收所述服务端发送的服务端公钥分量PKBA和随机群元素RB;其中,所述服务端公钥分量为PKBA=[dBA]G,服务端私钥分量为dBA∈[1,n-1],所述随机群元素为RB=[kB]PKA,选取的随机数为kB∈[1,n-1];
选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标;
计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端生成证书签名请求CSR的内容,设为MCSR;
计算数值r=H(ZA||MCSR)+xA mod n和数值并把s'提交给所述服务端,以使所述服务端验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端;
计算SM2数字签名(r,t-r),合成完整的CSR,提交给所述服务端,使所述服务端验证完整的CSR与接收到的MCSR是否相符,是则向证书颁发机构CA提交,以使证书颁发机构CA在验证CSR后,颁发共同公钥证书,并存储到证书库中。
7.一种SM2算法协同签名方法,其特征在于,包括:
接收客户端发送的第一椭圆曲线群元素组;所述第一椭圆曲线群元素组为所述客户端基于服务端公钥分量以及选取的第一随机数计算所得;
基于所述客户端公钥分量以及选取的第二随机数,计算第二椭圆曲线群元素组,并将所述第二椭圆曲线群元素组发送给所述客户端;
接收所述客户端发送的第二数值;所述第二数值为所述客户端根据第一数值、所述第一随机数以及客户端私钥分量生成;所述第一数值为所述客户端根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标计算所得;所述第三椭圆曲线群元素为所述客户端基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组计算所得;
根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值并反馈给所述客户端,以使所述客户端根据所述第一数值和所述第三数值合成SM2数字签名。
8.根据权利要7所述的SM2算法协同签名方法,其特征在于,在接收所述客户端发送的第二数值之后,还包括:
接收所述客户端发送的第一数字签名;所述第一数字签名为所述客户端基于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值,使用客户端私钥分量计算所得;
使用客户端公钥分量对所述第一数字签名进行验证。
9.根据权利要求8所述的SM2算法协同签名方法,其特征在于,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点;
所述的SM2算法协同签名方法,在接收客户端发送的第一椭圆曲线群元素组之后,还包括:
使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
10.根据权利要求9所述的SM2算法协同签名方法,其特征在于,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数;
所述的SM2算法协同签名方法,还包括:在将所述第二椭圆曲线群元素组发送给所述客户端之后,使所述客户端使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
11.根据权利要求10所述的SM2算法协同签名方法,其特征在于,
所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA;
所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标;
所述第一数值的计算公式为:r=H(ZA||M)+xA modn;
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算;
所述第三数值的计算公式为
所述SM2数字签名为(r,t-r)。
12.根据权利要求11所述的SM2算法协同签名方法,其特征在于,还包括:
接收客户端基于选择的客户端私钥分量dA∈[1,n-1]反馈的客户端公钥分量PKA=[dA]G;
基于服务端私钥分量dBA∈[1,n-1],计算服务端公钥分量PKBA=[dBA]G,并选取随机数kB∈[1,n-1]计算随机群元素RB=[kB]PKA,且将PKBA和RB返回给所述客户端,以使所述客户端选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标;
接收所述客户端提交的数值s';其中,数值数值r=H(ZA||MCSR)+xA mod n,MCSR为所述客户端计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端所生成证书签名请求CSR的内容;
验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端;
接收客户端提交的在计算SM2数字签名(r,t-r)后合成完整的CSR;
验证完整的CSR与接收到的MCSR是否相符,是则向证书颁发机构CA提交,以使证书颁发机构CA在验证CSR后,颁发共同公钥证书,并存储到证书库中。
13.一种SM2算法协同解密方法,其特征在于,包括:
基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素并发送给服务端;
接收服务端发送的第五椭圆曲线群元素和第六椭圆曲线群元素;所述第五椭圆曲线群元素和所述第六椭圆曲线群元素为所述服务端基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素计算所得;
根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
在所述第四数值不等于所述SM2密文第三分量时,报错并退出;
在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
14.根据权利要求13所述的SM2算法协同解密方法,其特征在于,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1];
所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量;
所述第三随机数和所述第四随机数分别为
所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为
所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为
所述第七椭圆曲线群元素为
所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
所述明文为其中,表示按位异或运算;
所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
15.根据权利要求14所述的SM2算法协同解密方法,其特征在于,还包括:
计算消息M=T1||T2的第二数字签名δ,并把所述第二数字签名δ发送给服务端,以使所述服务端使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
16.一种SM2算法协同解密方法,其特征在于,包括:
接收客户端发送的第三椭圆曲线群元素和第四椭圆曲线群元素;所述第三椭圆曲线群元素和所述第四椭圆曲线群元素为所述客户端基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数计算所得;
基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素并发送给客户端,以使所述客户端执行如下步骤:
根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
在所述第四数值不等于所述SM2密文第三分量时,报错并退出;
在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
17.根据权利要求16所述的SM2算法协同解密方法,其特征在于,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1];
所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量;
所述第三随机数和所述第四随机数分别为
所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为
所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为
所述第七椭圆曲线群元素为
所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
所述明文为其中,表示按位异或运算;
所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
18.根据权利要求17所述的SM2算法协同解密方法,其特征在于,还包括:
接收所述客户端所计算的消息M=T1||T2的第二数字签名δ;
使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
19.一种SM2算法协同签名装置,其特征在于,包括:
计算单元,用于基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组;
通信单元,用于将所述第一椭圆曲线群元素组发送给服务端,以及接收所述服务端基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组;
所述计算单元,还用于基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素;
所述计算单元,还用于根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素对应的横坐标,计算第一数值;
所述计算单元,还用于根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值;
所述通信单元,还用于把所述第二数值发送给所述服务端,并接收所述服务端反馈的第三数值;所述第三数值为所述服务端根据所述第二数值、所述第二随机数以及服务端私钥分量计算所得;
SM2数字签名单元,用于根据所述第一数值和所述第三数值合成SM2数字签名。
20.根据权利要求19所述的SM2算法协同签名装置,其特征在于,还包括:
所述计算单元,还用于在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端之后,使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名;
所述通信单元,还用于将所述第一签名发送给所述服务端,以使所述服务端使用客户端公钥分量对所述第一数字签名进行验证。
21.一种SM2算法协同签名装置,其特征在于,包括:
通信单元,用于接收客户端发送的第一椭圆曲线群元素组;所述第一椭圆曲线群元素组为所述客户端基于服务端公钥分量以及选取的第一随机数计算所得;
计算单元,用于基于所述客户端公钥分量以及选取的第二随机数,计算第二椭圆曲线群元素组;
所述通信单元,还用于接收所述客户端发送的第二数值;所述第二数值为所述客户端根据第一数值、所述第一随机数以及客户端私钥分量生成;所述第一数值为所述客户端根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素的横坐标计算所得;所述第三椭圆曲线群元素为所述客户端基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组计算所得;
所述计算单元,还用于根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值;
所述通信单元,还用于将所述第三数值反馈给所述客户端,以使所述客户端根据所述第一数值和所述第三数值合成SM2数字签名。
22.根据权利要求21所述的SM2算法协同签名装置,其特征在于,还包括:
所述通信单元,还用于在接收所述客户端发送的第二数值之后,接收所述客户端发送的第一数字签名;所述第一数字签名为所述客户端基于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值,使用客户端私钥分量计算所得;
验证单元,用于使用客户端公钥分量对所述第一数字签名进行验证。
23.一种SM2算法协同解密装置,其特征在于,包括:
计算单元,用于基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素;
通信单元,用于将所述第三椭圆曲线群元素和所述第四椭圆曲线群元素发送给服务端,以及接收服务端发送的第五椭圆曲线群元素和第六椭圆曲线群元素;所述第五椭圆曲线群元素和所述第六椭圆曲线群元素为所述服务端基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素计算所得;
所述计算单元,还用于根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
所述计算单元,还用于基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
所述计算单元,还用于将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
所述计算单元,还用于基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
判断单元,用于在所述第四数值不等于所述SM2密文第三分量时,报错并退出;在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
24.根据权利要求23所述的SM2算法协同解密装置,其特征在于,还包括:
所述计算单元,还用于计算消息的第二数字签名;
所述通信单元,还用于把所述第二数字签名发送给服务端,以使所述服务端使用客户端公钥分量验证所述第二数字签名。
25.一种SM2算法协同解密装置,其特征在于,包括:
通信单元,用于接收客户端发送的第三椭圆曲线群元素和第四椭圆曲线群元素;所述第三椭圆曲线群元素和所述第四椭圆曲线群元素为所述客户端基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数计算所得;
计算单元,用于基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素;
所述通信单元,还用于将所述第五椭圆曲线群元素和所述第六椭圆曲线群元素发送给客户端,以使所述客户端执行如下步骤:
根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
在所述第四数值不等于所述SM2密文第三分量时,报错并退出;
在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
26.根据权利要求25所述的SM2算法协同解密装置,其特征在于,还包括:
所述通信单元,还用于接收所述客户端所计算并发送的消息的第二数字签名;
验证单元,用于使用客户端公钥分量验证所述第二数字签名。
27.一种SM2算法协同签名***,其特征在于,包括客户端和服务端,协同签名由客户端发起;
所述客户端,用于基于服务端公钥分量以及选取的第一随机数,计算第一椭圆曲线群元素组并发送给服务端;
所述服务端,用于基于客户端公钥分量以及选取的第二随机数反馈的第二椭圆曲线群元素组给所述客户端;
所述客户端,还用于基于所述第一椭圆曲线群元素组和所述第二椭圆曲线群元素组,计算第三椭圆曲线群元素;
所述客户端,还用于根据用户信息杂凑值、待签名消息以及所述第三椭圆曲线群元素对应的横坐标,计算第一数值;并根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值并发送给所述服务端;
所述服务端,还用于根据所述第二数值、所述第二随机数以及服务端私钥分量计算第三数值并反馈给所述客户端;
所述客户端,还用于根据所述第一数值和所述第三数值合成SM2数字签名。
28.根据权利要求27所述的SM2算法协同签名***,其特征在于,还包括:
所述客户端,还用于在所述根据所述第一数值、所述第一随机数以及客户端私钥分量,生成第二数值之后,使用客户端私钥分量计算关于所述第一椭圆曲线群元素组、所述第二椭圆曲线群元素组以及所述第二数值的第一数字签名,并将所述第一签名发送给所述服务端;
所述服务端,还用于使用客户端公钥分量对所述第一数字签名进行验证。
29.根据权利要求28所述的SM2算法协同签名***,其特征在于,所述第一椭圆曲线群元素组为R'A=[kA]G和R”A=[kA]PKBA;其中,PKBA为服务端公钥分量,kA∈[1,n-1]为第一随机数,G为椭圆曲线基点;
所述服务端,还用于在接收所述客户端发送的第一椭圆曲线群元素组之后,使用服务端私钥分量dBA验证若不成立则退出协议;其中,dBA∈[1,n-1]。
30.根据权利要求29所述的SM2算法协同签名***,其特征在于,所述第二椭圆曲线群元素组为RB=[kB]PKA和R'B=[kB]G,其中,PKA为客户端公钥分量,kB∈[1,n-1]为第二随机数;
所述客户端,还用于使用客户端私钥分量dA验证若不成立则退出协议;其中,dA∈[1,n-1]。
31.根据权利要求30所述的SM2算法协同签名***,其特征在于,
所述第一数字签名为关于(R'A,R”A,RB,R'B,s')的普通SM2数字签名δA;
所述第三椭圆曲线群元素基于以下公式生成:RA=R'A+RB,且RA=(xA,yA),其中,xA、yA分别为RA的x轴坐标和y轴坐标;
所述第一数值的计算公式为:r=H(ZA||M)+xA modn;
所述第二数值的计算公式为:其中,H表示预先定义的密码杂凑算法,ZA表示用户的可辨识标识、部分椭圆曲线***参数和公钥的用户信息杂凑值,M为待签名消息,定义与GM/T 0003.2-2012保持一致,mod n表示模n运算;
所述第三数值的计算公式为
所述SM2数字签名为(r,t-r)。
32.根据权利要求31所述的SM2算法协同签名***,其特征在于,还包括证书颁发机构CA;
所述客户端,还用于选择客户端私钥分量dA∈[1,n-1],计算客户端公钥分量PKA=[dA]G,并将所述客户端公钥分量发送给服务端;
所述服务端,还用于发送服务端公钥分量PKBA和随机群元素RB给所述客户端;其中,所述服务端公钥分量为PKBA=[dBA]G,服务端私钥分量为dBA∈[1,n-1],所述随机群元素为RB=[kB]PKA,选取的随机数为kB∈[1,n-1];
所述客户端,还用于选取随机数kA∈[1,n-1],计算随机群元素RA=[kA]G+RB,RA=(xA,yA);其中,xA、yA分别为RA的x轴坐标和y轴坐标;
所述客户端,还用于计算共同公钥PK=[dA]PKBA-G,并获取用户身份信息以在客户端生成证书签名请求CSR的内容,设为MCSR;
所述客户端,还用于计算数值r=H(ZA||MCSR)+xAmodn和数值并把s'提交给所述服务端;
所述服务端,还用于验证证书签名请求CSR的内容MCSR,核对用户身份信息,并在校验成功后计算数值返回给所述客户端;
所述客户端,还用于计算SM2数字签名(r,t-r),合成完整的CSR,提交给所述服务端;
所述服务端,还用于验证完整的CSR与接收到的MCSR是否相符,是则向所述证书颁发机构CA提交;
所述证书颁发机构CA,用于在验证CSR后,颁发共同公钥证书,并存储到证书库中。
33.一种SM2算法协同解密***,其特征在于,包括客户端和服务端;
所述客户端,用于基于SM2密文第一分量、客户端私钥分量,以及选取的第三随机数和第四随机数,计算第三椭圆曲线群元素和第四椭圆曲线群元素并发送给服务端;
所述服务端,用于基于选取的第五随机数、服务端私钥分量,以及所述第三椭圆曲线群元素和所述第四椭圆曲线群元素,计算第五椭圆曲线群元素和第六椭圆曲线群元素并发送给客户端;
所述客户端,还用于根据所述SM2密文第一分量、所述第三随机数和所述第四随机数,以及所述第五椭圆曲线群元素和所述第六椭圆曲线群元素,计算第七椭圆曲线群元素;
所述客户端,还用于基于预先定义的密钥派生函数和所述第七椭圆曲线群元素,计算对称密钥;
所述客户端,还用于将所述SM2密文第二分量与所述对称密钥按位异或运算,得到明文;
所述客户端,还用于基于预先定义的密码杂凑算法,根据所述明文和所述第七椭圆曲线群元素,计算第四数值;
所述客户端,还用于在所述第四数值不等于所述SM2密文第三分量时,报错并退出;在所述第四数值等于所述SM2密文第三分量时,输出所述明文。
34.根据权利要求33所述的SM2算法协同解密***,其特征在于,客户端私钥分量为dA∈[1,n-1],服务端私钥分量为dBA∈[1,n-1];
所述SM2密文为(C1,C2,C3),其中C1为SM2密文第一分量,C2为SM2密文第二分量,C3为SM2密文第三分量;
所述第三随机数和所述第四随机数分别为
所述第三椭圆曲线群元素和所述第四椭圆曲线群元素分别为
所述第五随机数为所述第五椭圆曲线群元素和所述第六椭圆曲线群元素分别为
所述第七椭圆曲线群元素为
所述对称密钥t=KDF(x2||y2,klen);其中,KDF为预先定义的密钥派生函数,定义与GM/T 0003.4-2012保持一致,klen为输出比特长度,若t为全0比特串,则报错并退出;
所述明文为其中,表示按位异或运算;
所述第四数值为u=Hash(x2||M'||y2),其中,Hash表示预先定义的密码杂凑算法。
35.根据权利要求34所述的SM2算法协同解密***,其特征在于,还包括:
所述客户端,用于计算消息M=T1||T2的第二数字签名δ,并把所述第二数字签名δ发送给服务端;
所述服务端,还用于使用客户端公钥分量PKA=[dA]G验证所述第二数字签名δ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910158690.6A CN109672539B (zh) | 2019-03-01 | 2019-03-01 | Sm2算法协同签名及解密方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910158690.6A CN109672539B (zh) | 2019-03-01 | 2019-03-01 | Sm2算法协同签名及解密方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109672539A true CN109672539A (zh) | 2019-04-23 |
CN109672539B CN109672539B (zh) | 2021-11-05 |
Family
ID=66151895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910158690.6A Active CN109672539B (zh) | 2019-03-01 | 2019-03-01 | Sm2算法协同签名及解密方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109672539B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188416A (zh) * | 2019-05-14 | 2019-08-30 | 燕山大学 | 一种电控永磁压边装置磁力耦合计算方法 |
CN110224812A (zh) * | 2019-06-12 | 2019-09-10 | 江苏慧世联网络科技有限公司 | 一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备 |
CN110266478A (zh) * | 2019-05-31 | 2019-09-20 | 联想(北京)有限公司 | 一种信息处理方法、电子设备 |
CN110601841A (zh) * | 2019-11-01 | 2019-12-20 | 成都卫士通信息产业股份有限公司 | Sm2协同签名及解密方法、装置 |
CN110738474A (zh) * | 2019-10-14 | 2020-01-31 | 普联软件股份有限公司 | 一种基于国密sm2算法加密的数字代币券的方法及*** |
CN110971411A (zh) * | 2019-12-02 | 2020-04-07 | 南京壹证通信息科技有限公司 | 一种基于sotp技术对私钥乘加密的sm2同态签名方法 |
CN111049650A (zh) * | 2019-12-27 | 2020-04-21 | 上海市数字证书认证中心有限公司 | 一种基于sm2算法的协同解密方法及装置、***、介质 |
CN111130804A (zh) * | 2019-12-27 | 2020-05-08 | 上海市数字证书认证中心有限公司 | 一种基于sm2算法的协同签名方法及装置、***、介质 |
CN111147246A (zh) * | 2020-02-18 | 2020-05-12 | 数据通信科学技术研究所 | 一种基于sm2的多方协同签名方法及*** |
CN111162906A (zh) * | 2019-12-27 | 2020-05-15 | 上海市数字证书认证中心有限公司 | 一种基于茫然传输算法的协同秘密分享方法及装置、***、介质 |
CN111200502A (zh) * | 2020-01-03 | 2020-05-26 | 信安神州科技(广州)有限公司 | 协同数字签名方法和装置 |
CN111314089A (zh) * | 2020-02-18 | 2020-06-19 | 数据通信科学技术研究所 | 一种基于sm2的两方协同签名方法及解密方法 |
CN111343160A (zh) * | 2020-02-13 | 2020-06-26 | 南京如般量子科技有限公司 | 基于秘密共享和路由装置的抗量子计算区块链交易方法和*** |
CN111355582A (zh) * | 2020-03-03 | 2020-06-30 | 成都天瑞芯安科技有限公司 | 基于sm2算法的两方联合签名和解密的方法及*** |
CN111565108A (zh) * | 2020-07-15 | 2020-08-21 | 北京信安世纪科技股份有限公司 | 签名处理方法、装置及*** |
CN111582867A (zh) * | 2020-05-11 | 2020-08-25 | 浙江同花顺智能科技有限公司 | 一种协同签名和解密方法、装置、电子设备和存储介质 |
CN111614637A (zh) * | 2020-05-08 | 2020-09-01 | 郑州信大捷安信息技术股份有限公司 | 一种基于软件密码模块的安全通信方法及*** |
CN111754233A (zh) * | 2020-06-29 | 2020-10-09 | 兴唐通信科技有限公司 | 基于多方签名的电子支付方法和*** |
CN112152807A (zh) * | 2020-09-27 | 2020-12-29 | 成都国泰网信科技有限公司 | 一种基于sm2算法的两方协同数字签名方法 |
CN112364335A (zh) * | 2020-11-09 | 2021-02-12 | 成都卫士通信息产业股份有限公司 | 标识身份鉴别方法、装置及电子设备和存储介质 |
CN112822026A (zh) * | 2021-04-22 | 2021-05-18 | 北京信安世纪科技股份有限公司 | 数字签名方法、装置及*** |
CN112887097A (zh) * | 2019-11-29 | 2021-06-01 | 航天信息股份有限公司 | 基于sm2椭圆曲线的签名方法、相关装置、及存储介质 |
CN112968773A (zh) * | 2021-01-29 | 2021-06-15 | 北京无字天书科技有限公司 | 一种sm2协同签名***的密钥授权委托***及方法 |
CN113742670A (zh) * | 2021-08-30 | 2021-12-03 | 建信金融科技有限责任公司 | 多方协同解密方法和装置 |
CN113821807A (zh) * | 2021-08-18 | 2021-12-21 | 北京中电飞华通信有限公司 | Rfid资产信息的加密方法与装置、解密方法与装置及安全*** |
CN114039722A (zh) * | 2021-01-26 | 2022-02-11 | 中安网脉(北京)技术股份有限公司 | 一种可秘密共享的隐藏身份sm2签名私钥产生装置及其方法 |
CN115037441A (zh) * | 2022-07-07 | 2022-09-09 | 三未信安科技股份有限公司 | 一种基于同态运算的sm2协同签名方法、装置及*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140211938A1 (en) * | 2013-01-29 | 2014-07-31 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
CN106685651A (zh) * | 2016-12-22 | 2017-05-17 | 北京信安世纪科技有限公司 | 一种客户端和服务端协作生成数字签名的方法 |
CN106712968A (zh) * | 2017-02-22 | 2017-05-24 | 北京智慧云测科技有限公司 | 密钥获取方法、数字签名方法和装置 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
CN108259506A (zh) * | 2018-02-08 | 2018-07-06 | 上海交通大学 | Sm2白盒密码实现方法 |
CN108989047A (zh) * | 2018-07-19 | 2018-12-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于sm2算法的通信双方协同签名方法与*** |
CN109088726A (zh) * | 2018-07-19 | 2018-12-25 | 郑州信大捷安信息技术股份有限公司 | 基于sm2算法的通信双方协同签名及解密方法和*** |
-
2019
- 2019-03-01 CN CN201910158690.6A patent/CN109672539B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140211938A1 (en) * | 2013-01-29 | 2014-07-31 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
CN106685651A (zh) * | 2016-12-22 | 2017-05-17 | 北京信安世纪科技有限公司 | 一种客户端和服务端协作生成数字签名的方法 |
CN106712968A (zh) * | 2017-02-22 | 2017-05-24 | 北京智慧云测科技有限公司 | 密钥获取方法、数字签名方法和装置 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
CN108259506A (zh) * | 2018-02-08 | 2018-07-06 | 上海交通大学 | Sm2白盒密码实现方法 |
CN108989047A (zh) * | 2018-07-19 | 2018-12-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于sm2算法的通信双方协同签名方法与*** |
CN109088726A (zh) * | 2018-07-19 | 2018-12-25 | 郑州信大捷安信息技术股份有限公司 | 基于sm2算法的通信双方协同签名及解密方法和*** |
Non-Patent Citations (1)
Title |
---|
李玉生: "SM2椭圆曲线公钥加密算法的研究与实现", 《无线互联科技》 * |
Cited By (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188416B (zh) * | 2019-05-14 | 2021-01-15 | 燕山大学 | 一种电控永磁压边装置磁力耦合计算方法 |
CN110188416A (zh) * | 2019-05-14 | 2019-08-30 | 燕山大学 | 一种电控永磁压边装置磁力耦合计算方法 |
CN110266478A (zh) * | 2019-05-31 | 2019-09-20 | 联想(北京)有限公司 | 一种信息处理方法、电子设备 |
CN110266478B (zh) * | 2019-05-31 | 2021-05-18 | 联想(北京)有限公司 | 一种信息处理方法、电子设备 |
CN110224812B (zh) * | 2019-06-12 | 2023-03-14 | 江苏慧世联网络科技有限公司 | 一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备 |
CN110224812A (zh) * | 2019-06-12 | 2019-09-10 | 江苏慧世联网络科技有限公司 | 一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备 |
CN110738474A (zh) * | 2019-10-14 | 2020-01-31 | 普联软件股份有限公司 | 一种基于国密sm2算法加密的数字代币券的方法及*** |
CN110601841A (zh) * | 2019-11-01 | 2019-12-20 | 成都卫士通信息产业股份有限公司 | Sm2协同签名及解密方法、装置 |
CN110601841B (zh) * | 2019-11-01 | 2022-06-14 | 成都卫士通信息产业股份有限公司 | Sm2协同签名及解密方法、装置 |
CN112887097A (zh) * | 2019-11-29 | 2021-06-01 | 航天信息股份有限公司 | 基于sm2椭圆曲线的签名方法、相关装置、及存储介质 |
CN110971411A (zh) * | 2019-12-02 | 2020-04-07 | 南京壹证通信息科技有限公司 | 一种基于sotp技术对私钥乘加密的sm2同态签名方法 |
CN110971411B (zh) * | 2019-12-02 | 2022-07-12 | 南京壹证通信息科技有限公司 | 一种基于sotp技术对私钥乘加密的sm2同态签名方法 |
CN111130804B (zh) * | 2019-12-27 | 2022-09-06 | 上海市数字证书认证中心有限公司 | 一种基于sm2算法的协同签名方法及装置、***、介质 |
CN111049650B (zh) * | 2019-12-27 | 2022-10-25 | 上海市数字证书认证中心有限公司 | 一种基于sm2算法的协同解密方法及装置、***、介质 |
CN111162906A (zh) * | 2019-12-27 | 2020-05-15 | 上海市数字证书认证中心有限公司 | 一种基于茫然传输算法的协同秘密分享方法及装置、***、介质 |
CN111130804A (zh) * | 2019-12-27 | 2020-05-08 | 上海市数字证书认证中心有限公司 | 一种基于sm2算法的协同签名方法及装置、***、介质 |
CN111049650A (zh) * | 2019-12-27 | 2020-04-21 | 上海市数字证书认证中心有限公司 | 一种基于sm2算法的协同解密方法及装置、***、介质 |
CN111200502A (zh) * | 2020-01-03 | 2020-05-26 | 信安神州科技(广州)有限公司 | 协同数字签名方法和装置 |
CN111200502B (zh) * | 2020-01-03 | 2023-04-07 | 信安神州科技(广州)有限公司 | 协同数字签名方法和装置 |
CN111343160A (zh) * | 2020-02-13 | 2020-06-26 | 南京如般量子科技有限公司 | 基于秘密共享和路由装置的抗量子计算区块链交易方法和*** |
CN111343160B (zh) * | 2020-02-13 | 2022-07-08 | 南京如般量子科技有限公司 | 基于秘密共享和路由装置的抗量子计算区块链交易方法和*** |
CN111314089A (zh) * | 2020-02-18 | 2020-06-19 | 数据通信科学技术研究所 | 一种基于sm2的两方协同签名方法及解密方法 |
CN111314089B (zh) * | 2020-02-18 | 2023-08-08 | 数据通信科学技术研究所 | 一种基于sm2的两方协同签名方法及解密方法 |
CN111147246A (zh) * | 2020-02-18 | 2020-05-12 | 数据通信科学技术研究所 | 一种基于sm2的多方协同签名方法及*** |
CN111147246B (zh) * | 2020-02-18 | 2023-08-08 | 数据通信科学技术研究所 | 一种基于sm2的多方协同签名方法及*** |
CN111355582A (zh) * | 2020-03-03 | 2020-06-30 | 成都天瑞芯安科技有限公司 | 基于sm2算法的两方联合签名和解密的方法及*** |
CN111614637A (zh) * | 2020-05-08 | 2020-09-01 | 郑州信大捷安信息技术股份有限公司 | 一种基于软件密码模块的安全通信方法及*** |
CN111582867B (zh) * | 2020-05-11 | 2023-09-22 | 浙江同花顺智能科技有限公司 | 一种协同签名和解密方法、装置、电子设备和存储介质 |
CN111582867A (zh) * | 2020-05-11 | 2020-08-25 | 浙江同花顺智能科技有限公司 | 一种协同签名和解密方法、装置、电子设备和存储介质 |
CN111754233A (zh) * | 2020-06-29 | 2020-10-09 | 兴唐通信科技有限公司 | 基于多方签名的电子支付方法和*** |
CN111754233B (zh) * | 2020-06-29 | 2023-11-07 | 兴唐通信科技有限公司 | 基于多方签名的电子支付方法和*** |
CN111565108A (zh) * | 2020-07-15 | 2020-08-21 | 北京信安世纪科技股份有限公司 | 签名处理方法、装置及*** |
CN112152807B (zh) * | 2020-09-27 | 2022-11-11 | 成都国泰网信科技有限公司 | 一种基于sm2算法的两方协同数字签名方法 |
CN112152807A (zh) * | 2020-09-27 | 2020-12-29 | 成都国泰网信科技有限公司 | 一种基于sm2算法的两方协同数字签名方法 |
CN112364335B (zh) * | 2020-11-09 | 2022-05-13 | 成都卫士通信息产业股份有限公司 | 标识身份鉴别方法、装置及电子设备和存储介质 |
CN112364335A (zh) * | 2020-11-09 | 2021-02-12 | 成都卫士通信息产业股份有限公司 | 标识身份鉴别方法、装置及电子设备和存储介质 |
CN114039722A (zh) * | 2021-01-26 | 2022-02-11 | 中安网脉(北京)技术股份有限公司 | 一种可秘密共享的隐藏身份sm2签名私钥产生装置及其方法 |
CN112968773B (zh) * | 2021-01-29 | 2023-11-07 | 北京无字天书科技有限公司 | 一种sm2协同签名***的密钥授权委托***及方法 |
CN112968773A (zh) * | 2021-01-29 | 2021-06-15 | 北京无字天书科技有限公司 | 一种sm2协同签名***的密钥授权委托***及方法 |
CN112822026A (zh) * | 2021-04-22 | 2021-05-18 | 北京信安世纪科技股份有限公司 | 数字签名方法、装置及*** |
CN112822026B (zh) * | 2021-04-22 | 2021-09-17 | 北京信安世纪科技股份有限公司 | 数字签名方法、装置及*** |
CN113821807A (zh) * | 2021-08-18 | 2021-12-21 | 北京中电飞华通信有限公司 | Rfid资产信息的加密方法与装置、解密方法与装置及安全*** |
CN113821807B (zh) * | 2021-08-18 | 2023-11-14 | 北京中电飞华通信有限公司 | Rfid资产信息的加密方法与装置、解密方法与装置及安全*** |
CN113742670B (zh) * | 2021-08-30 | 2023-06-06 | 建信金融科技有限责任公司 | 多方协同解密方法和装置 |
CN113742670A (zh) * | 2021-08-30 | 2021-12-03 | 建信金融科技有限责任公司 | 多方协同解密方法和装置 |
CN115037441A (zh) * | 2022-07-07 | 2022-09-09 | 三未信安科技股份有限公司 | 一种基于同态运算的sm2协同签名方法、装置及*** |
CN115037441B (zh) * | 2022-07-07 | 2023-11-10 | 三未信安科技股份有限公司 | 一种基于同态运算的sm2协同签名方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN109672539B (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109672539A (zh) | Sm2算法协同签名及解密方法、装置及*** | |
CN102594558B (zh) | 一种可信计算环境的匿名数字证书***及验证方法 | |
CN108199835B (zh) | 一种多方联合私钥解密方法 | |
CN110460439A (zh) | 信息传输方法、装置、客户端、服务端及存储介质 | |
CN103765809B (zh) | 隐式认证的公钥 | |
CN109274503A (zh) | 分布式协同签名方法及分布式协同签名装置、软盾*** | |
CN111464315B (zh) | 数字签名处理方法、装置、计算机设备以及存储介质 | |
CN109309569A (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
CN110188551B (zh) | 一种保单加密传输方法及*** | |
CN103733564A (zh) | 利用隐式证书链的数字签名 | |
CN104901935A (zh) | 一种基于cpk的双向认证及数据交互安全保护方法 | |
CN109309566B (zh) | 一种认证方法、装置、***、设备及存储介质 | |
CN109361508A (zh) | 数据传输方法、电子设备及计算机可读存储介质 | |
CN111769938A (zh) | 一种区块链传感器的密钥管理***、数据验证*** | |
CN108199847A (zh) | 数字安全处理方法、计算机设备及存储介质 | |
CN109361512A (zh) | 数据传输方法 | |
CN103108245A (zh) | 一种智能电视支付密钥***以及基于智能电视的支付方法 | |
CN111582867A (zh) | 一种协同签名和解密方法、装置、电子设备和存储介质 | |
US20230327884A1 (en) | Method for electronic signing and authenticaton strongly linked to the authenticator factors possession and knowledge | |
CN107104788A (zh) | 终端及其不可抵赖的加密签名方法和装置 | |
CN114726536A (zh) | 一种时间戳生成方法、装置、电子设备及存储介质 | |
CN114331456A (zh) | 一种通信方法、装置、***以及可读存储介质 | |
CN105530089A (zh) | 属性基加密方法和装置 | |
CN108933659A (zh) | 一种智能电网的身份验证***及验证方法 | |
CN116703593A (zh) | 基于区块链的电子保函业务监管审批方法及*** |
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 |