CN111314089B - 一种基于sm2的两方协同签名方法及解密方法 - Google Patents
一种基于sm2的两方协同签名方法及解密方法 Download PDFInfo
- Publication number
- CN111314089B CN111314089B CN202010100370.8A CN202010100370A CN111314089B CN 111314089 B CN111314089 B CN 111314089B CN 202010100370 A CN202010100370 A CN 202010100370A CN 111314089 B CN111314089 B CN 111314089B
- Authority
- CN
- China
- Prior art keywords
- communication party
- party
- private key
- elliptic curve
- user
- 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
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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- 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
Abstract
本发明涉及一种基于SM2的两方协同签名方法及解密方法,属于数字签名及解密技术领域。协同签名方法包括以下步骤:得到第一通信方自身的子私钥和第二通信方自身的子私钥作为用户的两方私钥,并基于SM2利用用户的两方私钥生成用户公钥;第一通信方利用所述用户公钥将待签名消息M生成消息摘要e发送给第二通信方,第二通信方基于SM2根据所述消息摘要e生成第一部分签名r发送给第一通信方;第一通信方根据所述第一部分签名r和所述第一通信方自身的子私钥生成第二部分签名s,得到完整签名并输出。同时本发明涉及一种基于SM2的两方解密方法。本发明实施例解决了现有技术中密钥的存储安全和使用安全存在较大隐患的问题。
Description
技术领域
本发明涉及数字签名及解密技术领域,尤其涉及一种基于SM2的两方协同签名方法及解密方法。
背景技术
随着国家大力推广国产自主密码算法的战略,公钥密码标准算法SM2在金融、电力、交通等重要信息系统获得了广泛应用。随着移动互联网的普及,越来越多的应用开始在移动终端进行操作,如手机银行,手机支付等,这些应用需要进行用户网络身份认证、网络数据加密,以保证网络应用的安全性。解决这些安全需求的常用手段是使用公钥密码技术来实现数字签名和公钥加密。在使用公钥密码技术时,保证所使用私钥的安全则是关键所在。在通常情况下,为了保证私钥的存储安全和使用安全,用于签名和解密的私钥都要求保存在专门的密码设备内(如USBKEY、SmartCard等硬件设备),相应的密码运算也在密码设备内执行。但手机等移动终端,使用密码设备很不方便,因而出现了将密钥直接保存在手机并利用手机CPU执行运算的软密码模块,这种软密码模块给密钥的存储安全和使用安全带来很大隐患。
目前最常用的方法是使用纯软件的密码模块,将私钥保存在用户本地的永久存储介质中,并通过PIN码等方式保护。这种保护方式存在用户私钥泄露的风险:首先PIN码保护安全性不高;另外使用私钥时需要将私钥解密,这时私钥会以明文的形式出现在内存中,攻击者可以通过一定手段从内存中获得私钥。
发明内容
鉴于上述的分析,本发明旨在提供一种基于SM2的两方协同签名方法及解密方法,以解决现有技术中密钥的存储安全和使用安全存在较大隐患的问题。
本发明的目的主要是通过以下技术方案实现的:
一方面,本发明提供了一种基于SM2的两方协同签名方法,包括以下步骤:
得到第一通信方自身的子私钥和第二通信方自身的子私钥作为用户的两方私钥,并基于SM2利用用户的两方私钥生成用户公钥;
第一通信方利用所述用户公钥将待签名消息M生成消息摘要e发送给第二通信方,第二通信方基于SM2根据所述消息摘要e生成第一部分签名r发送给第一通信方;
第一通信方根据所述第一部分签名r和所述第一通信方自身的子私钥生成第二部分签名s,得到完整签名并输出。
进一步地,第一通信方和第二通信方共享SM2的椭圆曲线参数E(Fp)、(p,a,b,G,n,h),其中,椭圆曲线E为包含p个元素的素域Fp上的椭圆曲线,E(Fp)为Fp上椭圆曲线E的包括无穷远点O的所有有理点组成的集合,a和b为Fp中的元素,G为椭圆曲线E上n阶的基点,h为余因子。
进一步地,若用户私钥未确定,第一通信方和第二通信方分别产生随机数,将产生的随机数作为自身的子私钥;
若用户私钥已确定,任一通信方产生一个随机数作为自身的子私钥;另一通信方根据所述用户私钥和已经得到的一方子私钥计算得到另一方自身的子私钥。
进一步地,所述第一通信方和第二通信方基于SM2利用用户的两方私钥生成用户公钥包括:
第一通信方根据公式Pu=[D1]G计算得到椭圆曲线点Pu,并将Pu发送给第二通信方;其中,D1为第一通信方自身的子私钥,G为SM2的椭圆曲线上的基点;
第二通信方验证Pu是否满足椭圆曲线方程,若不满足则报错并退出,否则根据公式PA=[D2]Pu-G生成用户公钥PA;其中,D2为第二通信方自身的子私钥。
进一步地,所述第一通信方利用所述用户公钥将待签名消息M生成消息摘要e,包括:
将杂凑Z和待签名消息M拼接后输入密码杂凑函数后得到消息摘要e,公式如下:
e=H256(Z||M);
其中,H256()为消息摘要长度256比特的密码杂凑函数,Z为用户的身份标识、部分椭圆曲线参数和用户公钥的杂凑。
进一步地,所述第二通信方基于SM2根据所述消息摘要e生成第一部分签名发送给第一通信方包括:
第二通信方接收到第一通信方根据计算公式Ru=[ku]G得到的椭圆曲线点Ru;其中,ku为第一通信方产生的一个位于[1,n-1]之间的随机数,G为SM2的椭圆曲线基点,坐标表示为G=(xG,yG),n为G的阶;
第二通信方根据公式(x1,y1)=[D2]Ru+[ks]G计算得到椭圆曲线点(x1,y1),并根据公式r=(e+x1)modn计算得到r,再由公式t=D2-1(ks+r)modn计算得到t,将r和t发送给第一通信方;其中,ks为第二通信方产生的一个位于[1,n-1]之间的随机数,D2为第二通信方自身的子私钥,Ru满足椭圆曲线方程,mod为求模运算。
进一步地,所述第一通信方根据所述第一部分签名r和所述第一通信方的子私钥生成第二部分签名s,包括:
第一通信方根据公式s=(D1-1(ku+t)-r)modn计算得到s,若s=0则报错并退出,否则将r、s的数据类型转换为字节串,得到消息M的签名(r,s);其中,ku为第一通信方产生的一个位于[1,n-1]之间的随机数,D1为第一通信方自身的子私钥,mod为求模运算。
另一方面,一种基于SM2的两方解密方法,用于对密文C进行解密,所述密文C使用所述用户的两方私钥协同计算,得到明文,包括以下步骤:
第一通信方和第二通信方分别获得自身的子私钥,并得到用户公钥;
第一通信方基于SM2从获取到的密文C中取出第一部分密文C1发送给第二通信方;
第二通信方接收所述C1,并根据自身的子私钥和第一部分密文C1生成R发送给第一通信方;
第一通信方基于SM2根据自身的子私钥和R以及第一部分密文C1、第二部分密文C2和第三部分密文C3进行解密后输出明文;
其中,密文C=C1||C3||C2。
进一步地,在第一通信方基于SM2从获取到的密文C中取出第一部分密文C1之后,还包括:第一通信方根据第一部分密文C1和SM2的椭圆曲线参数余因子h按照公式T=[h]C1计算得到椭圆曲线点T,若T是无穷远点,则报错并退出,否则将取出的第一部分密文C1发送给第二通信方;其中,C1满足椭圆曲线方程,若不满足则报错并退出;
在第二通信方接收所述C1之后,还包括:第二通信方验证C1是否满足椭圆曲线方程,若不满足则报错并退出,满足则根据公式R=[D2]C1计算得到椭圆曲线点R,并将R发送给第一通信方;其中,D2为第二通信方自身的子私钥。
进一步地,所述第一通信方基于SM2根据自身的子私钥和R以及第一部分密文C1、第二部分密文C2和第三部分密文C3进行解密后输出明文,包括:第一通信方验证R是否满足椭圆曲线方程,若不满足则报错并退出,满足则根据计算公式(x2,y2)=[D1]R-C1得到椭圆曲线点(x2,y2),将坐标x2、y2的数据类型转换为比特串,并根据公式t=KDF(x2||y2,klen)计算得到t;若t为全0比特串,则报错并退出,否则根据公式计算得到明文M′,并根据密码杂凑函数u=H256(x2||M′||y2)输出杂凑值u,若u≠C3,则报错并退出,否则输出明文M′;其中,klen为C2的比特长度,D1为第一通信方自身的子私钥。
本技术方案有益效果如下:本发明公开了一种基于SM2的两方协同签名方法,包括以下步骤:得到第一通信方自身的子私钥和第二通信方自身的子私钥作为用户的两方私钥,并基于SM2利用用户的两方私钥生成用户公钥;第一通信方利用所述用户公钥将待签名消息M生成消息摘要e发送给第二通信方,第二通信方基于SM2根据所述消息摘要e生成第一部分签名r发送给第一通信方;第一通信方根据所述第一部分签名r和所述第一通信方自身的子私钥生成第二部分签名s,得到完整签名并输出。同时公开了一种基于SM2的两方解密方法,用于对密文C进行解密,所述密文C使用所述用户的两方私钥协同计算,得到明文,包括以下步骤:第一通信方和第二通信方分别获得自身的子私钥,并得到用户公钥;第一通信方基于SM2从获取到的密文C中取出第一部分密文C1发送给第二通信方;第二通信方接收所述C1,并根据自身的子私钥和第一部分密文C1生成R发送给第一通信方;第一通信方基于SM2根据自身的子私钥和R以及第一部分密文C1、第二部分密文C2和第三部分密文C3进行解密后输出明文;其中,密文C=C1||C3||C2。本发明实施例不仅解决了现有技术中密钥的存储安全和使用安全存在较大隐患的问题,同时实现两方协调签名过程中通信双方交互的简化,使得解密过程的保密性更高。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例的一种基于SM2的两方协同签名方法流程图;
图2为本发明实施例的用户公钥生成方法流程图;
图3为本发明实施例的第一部分签名生成方法流程图;
图4为本发明实施例的一种基于SM2的两方协同解密方法流程图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
缩略语和关键术语:
Fp:包含p个元素的素域。
E(Fp):Fp上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。
(p,a,b,G,n,h):SM2算法的曲线参数,其中,p为一个256比特长度的素数;a和b为Fp中的元素,用于定义Fp上的一条椭圆曲线E;G为基点,用坐标表示G=(xG,yG);n为G的阶;h为余因子。
Hv():消息摘要长度为v比特的密码杂凑函数,该杂凑函数使用SM3。
IDA:用户A的身份标识。
ENTLA:IDA的长度,ENTLA的长度为2个字节;
mod n:模n运算。
O:椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。
PA:用户A的公钥,用坐标表示PA=(xA,yA)。
SPA:用户A的签名公钥。
EPA:用户A的加密公钥。
x||y:x与y的拼接,其中x、y是比特串或字节串。
ZA:关于用户A的身份标识、部分椭圆曲线系统参数和用户A公钥的杂凑值,具体为ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA)。
[k]P:椭圆曲线上点P的k倍点,即,k是正整数。
本发明的技术构思:为了提高密钥存储和密码运算的安全性,采用密钥分割存储和联合协作计算的方式,将用户私钥分割存储,在需要使用私钥对一个消息作数字签名时,由存储的两方联合完成签名计算,签名计算为SM2算法规定的签名计算方式,验签可以采用现有的验签方式实现,本说明实施例不再赘述。同样地,在需要对用户端公钥使用SM2加密算法加密后的密文进行解密时,由存储的两方联合完成对密文的解密计算。
本发明的技术基础:假设用户的私钥为DA,分割存放于第一通信方和第二通信方来表示通信双方,在实际应用中,第一通信方可以是客户端U或服务器端S,也可以是用户端1和用户端2,相应地,当第一通信方为客户端或用户端1,则第二通信方为服务器端或用户端2,当第一通信方为服务器端或用户端2,则第二通信方为客户端或用户端1。
本发明的一个具体实施例,如图1所示,公开了一种基于SM2的两方协同签名方法,包括以下步骤:
S11,得到第一通信方自身的子私钥和第二通信方自身的子私钥作为用户的两方私钥,并基于SM2利用用户的两方私钥生成用户公钥;
S12,第一通信方利用所述用户公钥将待签名消息M生成消息摘要e发送给第二通信方,第二通信方基于SM2根据所述消息摘要e生成第一部分签名r发送给第一通信方;
S13,第一通信方根据所述第一部分签名r和所述第一通信方自身的子私钥生成第二部分签名s,得到完整签名并输出。
与现有技术相比,本发明实施例将用户私钥分割存放于两个存储端,在进行SM2签名时,通信双方利用各自存放的分割私钥协作计算,完成签名,使得整个运算过程不会泄露私钥的任何信息,通信双方也不会获取到对端存放的任何私钥信息,从而有效规避了现有技术中密钥的存储安全和使用安全存在较大隐患的问题,同时实现了两方协调签名过程中通信双方交互的简化。
本发明的一个具体实施例,第一通信方和第二通信方共享SM2的椭圆曲线参数E(Fp)、(p,a,b,G,n,h),其中,椭圆曲线E为包含p个元素的素域Fp上的椭圆曲线,E(Fp)为Fp上椭圆曲线E的包括无穷远点O的所有有理点组成的集合,a和b为Fp中的元素,G为椭圆曲线E上n阶的基点,h为余因子。
本发明的一个具体实施例,若用户私钥未确定,第一通信方和第二通信方分别产生随机数,将产生的随机数作为自身的子私钥;
若用户私钥已确定,任一通信方产生一个随机数作为自身的子私钥;另一通信方根据所述用户私钥和已经得到的一方子私钥计算得到另一方自身的子私钥。
具体地,若用户私钥未确定,第一通信方生成自身的子私钥D1包括:第一通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D1;第二通信方生成自身的子私钥D2包括:第二通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D2;
若用户私钥已确定,第一通信方生成自身的子私钥D1包括:第一通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D1;第二通信方根据所述用户私钥和所述第一通信方自身的子私钥D1计算出第二通信方自身的子私钥D2,其公式如下:
D2=D1-1(DA+1)modn;或者
第二通信方生成自身的子私钥D2包括:第二通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D2;第一通信方根据所述用户私钥和所述第二通信方自身的子私钥D2计算出第一通信方自身的子私钥D1,其公式如下:
D1=D2-1(DA+1)modn;
其中,DA为用户私钥,n为G的阶,mod为求模运算。
本发明的一个具体实施例,如图2所示,所述第一通信方和第二通信方基于SM2利用用户的两方私钥生成用户公钥包括:
S21,第一通信方根据公式Pu=[D1]G计算得到椭圆曲线点Pu,并将Pu发送给第二通信方;其中,D1为第一通信方自身的子私钥,G为SM2的椭圆曲线上的基点;
S22,第二通信方验证Pu是否满足椭圆曲线方程,若不满足则报错并退出,否则根据公式PA=[D2]Pu-G生成用户公钥PA;其中,D2为第二通信方自身的子私钥。
具体地,用户A的公钥生成过程如下:
端U:
U1:计算椭圆曲线点Pu=[D1]G,并将Pu发送给端S;
端S:
S1:按SM2算法给出的方法,验证Pu是否满足椭圆曲线方程,若不满足则报错并退出;
S2:生成用户A的公钥PA=[D2]Pu-G。
本发明的一个具体实施例,所述第一通信方利用所述用户公钥将待签名消息M生成消息摘要e,包括:
将杂凑Z和待签名消息M拼接后输入密码杂凑函数后得到消息摘要e,公式如下:
e=H256(Z||M);
其中,H256()为消息摘要长度256比特的密码杂凑函数,Z为用户的身份标识、部分椭圆曲线参数和用户公钥的杂凑。
本发明的一个具体实施例,如图3所示,所述第二通信方基于SM2根据所述消息摘要e生成第一部分签名发送给第一通信方包括:
S31,第二通信方接收到第一通信方根据计算公式Ru=[ku]G得到的椭圆曲线点Ru;其中,ku为第一通信方产生的一个位于[1,n-1]之间的随机数,G为SM2的椭圆曲线基点,坐标表示为G=(xG,yG),n为G的阶;
S32,第二通信方根据公式(x1,y1)=[D2]Ru+[ks]G计算得到椭圆曲线点(x1,y1),并根据公式r=(e+x1)modn计算得到r,再由公式t=D2-1(ks+r)modn计算得到t,将r和t发送给第一通信方;其中,ks为第二通信方产生的一个位于[1,n-1]之间的随机数,D2为第二通信方自身的子私钥,Ru满足椭圆曲线方程,mod为求模运算。
本发明的一个具体实施例,所述第一通信方根据所述第一部分签名r和所述第一通信方的子私钥生成第二部分签名s,包括:
第一通信方根据公式s=(D1-1(ku+t)-r)modn计算得到s,若s=0则报错并退出,否则将r、s的数据类型转换为字节串,得到消息M的签名(r,s);其中,ku为第一通信方产生的一个位于[1,n-1]之间的随机数,D1为第一通信方自身的子私钥,mod为求模运算。
具体地,设待签名的消息为M,为了获取消息M的数字签名(r,s),端U和端S实现以下运算步骤。
端U:
U1:置
U2:计算按SM2算法给出的方法将e的数据类型转换为整数;
U3:用随机数发生器产生随机数ku∈[1,n-1];
U4:计算椭圆曲线点Ru=[ku]G,并将e和Ru发送给端S;
端S:
S1:按SM2算法给出的方法,验证Ru是否满足椭圆曲线方程,若不满足则报错并退出;
S2:用随机数发生器产生随机数ks∈[1,n-1];
S3:计算椭圆曲线点(x1,y1)=[D2]Ru+[ks]G,若(x1,y1)=O则返回S2;否则,按SM2算法给出的方法将x1的数据类型转换为整数;
S4:计算r=(e+x1)modn,若r=0则返回S2;
S5:计算t=D2-1(ks+r)modn,若t=0则返回S2;
S6:将r和t发送给端U;
端U:
U5:若r=0或t=0则报错并退出;
U6:计算s=(D1-1(ku+t)-r)modn,若s=0则报错并退出;
U7:按SM2算法将r、s的数据类型转换为字节串,消息M的签名为(r,s)。
本发明的一个具体实施例,如图4所示,公开了一种基于SM2的两方解密方法,用于对密文C进行解密,所述密文C使用所述用户的两方私钥协同计算,得到明文,包括以下步骤:
S41,第一通信方和第二通信方分别获得自身的子私钥,并得到用户公钥;
S42,第一通信方基于SM2从获取到的密文C中取出第一部分密文C1发送给第二通信方;
S43,第二通信方接收所述C1,并根据自身的子私钥和第一部分密文C1生成R发送给第一通信方;
S44,第一通信方基于SM2根据自身的子私钥和R以及第一部分密文C1、第二部分密文C2和第三部分密文C3进行解密后输出明文;
其中,密文C=C1||C3||C2。
上述实施例签名公私钥对和加密公私钥对为同一对,密钥分别存储增加了密钥的安全性,且通信双方交互过程中以部分密文进行传输,保证了传输的安全性。
本发明的一个具体实施例,在第一通信方基于SM2从获取到的密文C中取出第一部分密文C1之后,还包括:第一通信方根据第一部分密文C1和SM2的椭圆曲线参数余因子h按照公式T=[h]C1计算得到椭圆曲线点T,若T是无穷远点,则报错并退出,否则将取出的第一部分密文C1发送给第二通信方;其中,C1满足椭圆曲线方程,若不满足则报错并退出;
在第二通信方接收所述C1之后,还包括:第二通信方验证C1是否满足椭圆曲线方程,若不满足则报错并退出,满足则根据公式R=[D2]C1计算得到椭圆曲线点R,并将R发送给第一通信方;其中,D2为第二通信方自身的子私钥。
本发明的一个具体实施例,所述第一通信方基于SM2根据自身的子私钥和R以及第一部分密文C1、第二部分密文C2和第三部分密文C3进行解密后输出明文,包括:第一通信方验证R是否满足椭圆曲线方程,若不满足则报错并退出,满足则根据计算公式(x2,y2)=[D1]R-C1得到椭圆曲线点(x2,y2),将坐标x2、y2的数据类型转换为比特串,并根据公式t=KDF(x2||y2,klen)计算得到t;若t为全0比特串,则报错并退出,否则根据公式计算得到明文M′,并根据密码杂凑函数u=H256(x2||M′||y2)输出杂凑值u,若u≠C3,则报错并退出,否则输出明文M′;其中,klen为C2的比特长度,D1为第一通信方自身的子私钥。
具体地,设klen为密文中C2的比特长度,为了对密文C=C1||C3||C2进行解密,端U和端S实现以下运算步骤。
端U:
U1:从C中取出比特串C1,按SM2算法给出的方法,将C1的数据类型转换为椭圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出;
U2:计算椭圆曲线点T=[h]C1,若T是无穷远点,则报错并退出;
U3:将C1发给端S;
端S:
S1:按SM2算法给出的方法,验证C1是否满足椭圆曲线方程,若不满足则报错并退出;
S2:计算R=[D2]C1,并将R发送给端U;
端U:
U4:按SM2算法给出的方法,验证R是否满足椭圆曲线方程,若不满足则报错并退出;
U5:计算(x2,y2)=[D1]R-C1,按SM2算法给出的方法,将坐标x2、y2的数据类型转换为比特串;
U6:计算t=KDF(x2||y2,klen),若t为全0比特串,则报错并退出;
U7:从C中取出比特串C2,计算
U8:计算u=H256(x2||M′||y2),从C中取出比特串C3,若u≠C3,则报错并退出;
U9:输出明文M′。
需要说明的是,签名公私钥对和加密公私钥对也可以不是同一对,当不是同一对时,解密方案可以更为简单。假设加密私钥DEA在第一通信方和第一通信方分割的私钥信息分别为Deu和Des。DEA、Deu和Des∈[1,n-1],且满足如下关系式:DEA=DeuDes mod n。则这时加密公私钥对的生成方式和解密过程会相对更简单,具体做法参考上述解密运算过程内容,这里不再赘述。
综上所述,本发明公开了一种基于SM2的两方协同签名方法,包括以下步骤:得到第一通信方自身的子私钥和第二通信方自身的子私钥作为用户的两方私钥,并基于SM2利用用户的两方私钥生成用户公钥;第一通信方利用所述用户公钥将待签名消息M生成消息摘要e发送给第二通信方,第二通信方基于SM2根据所述消息摘要e生成第一部分签名r发送给第一通信方;第一通信方根据所述第一部分签名r和所述第一通信方自身的子私钥生成第二部分签名s,得到完整签名并输出。同时公开了一种基于SM2的两方解密方法,用于对密文C进行解密,所述密文C使用所述用户的两方私钥协同计算,得到明文,包括以下步骤:第一通信方和第二通信方分别获得自身的子私钥,并得到用户公钥;第一通信方基于SM2从获取到的密文C中取出第一部分密文C1发送给第二通信方;第二通信方接收所述C1,并根据自身的子私钥和第一部分密文C1生成R发送给第一通信方;第一通信方基于SM2根据自身的子私钥和R以及第一部分密文C1、第二部分密文C2和第三部分密文C3进行解密后输出明文;其中,密文C=C1||C3||C2。本发明技术方案将用户私钥分割存放于通信双方,在进行SM2签名和解密运算时,通信双方利用各自存放的分割私钥协作计算,完成签名和解密操作,使得整个运算过程不会泄露私钥的任何信息,任何一方也不会获取到对方存放的任何私钥信息,从而有效规避了现有技术中密钥的存储安全和使用安全存在较大隐患的问题。本发明的技术效果可以达到户私钥分割存储的目的,并且在通信双方相互交互、协作计算签名和解密时不会泄露私钥,也不会由交互内容得到完整私钥,防止一方泄露带来整个私钥泄露的风险,因此为现在智能手机等移动客户端使用软密码模块提供了一种较好的私钥保护解决方案,为智能客户端去硬件化提供必要保障。本发明实施例不仅解决了现有技术中密钥的存储安全和使用安全存在较大隐患的问题,同时实现两方协调签名过程中通信双方交互的简化,使得解密过程的保密性更高。
本领域技术人员可以理解,实现上述实施例中方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种基于SM2的两方协同签名方法,其特征在于,包括以下步骤:
得到第一通信方自身的子私钥和第二通信方自身的子私钥作为用户的两方私钥,并基于SM2利用用户的两方私钥生成用户公钥;
第一通信方利用所述用户公钥将待签名消息M生成消息摘要e发送给第二通信方,第二通信方基于SM2根据所述消息摘要e生成第一部分签名r发送给第一通信方,包括:第二通信方接收到第一通信方根据计算公式Ru=[ku]G得到的椭圆曲线点Ru;其中,ku为第一通信方产生的一个位于[1,n-1]之间的随机数,G为SM2的椭圆曲线基点,坐标表示为G=(xG,yG),n为G的阶;第二通信方根据公式(x1,y1)=[D2]Ru+[ks]G计算得到椭圆曲线点(x1,y1),并根据公式r=(e+x1)modn计算得到r,再由公式t=D2-1(ks+r)modn计算得到t,将r和t发送给第一通信方;其中,ks为第二通信方产生的一个位于[1,n-1]之间的随机数,D2为第二通信方自身的子私钥,Ru满足椭圆曲线方程,mod为求模运算;
第一通信方根据所述第一部分签名r和所述第一通信方自身的子私钥生成第二部分签名s,得到完整签名并输出,包括:
第一通信方根据公式s=(D1-1(ku+t)-r)modn计算得到s,若s=0则报错并退出,否则将r、s的数据类型转换为字节串,得到消息M的签名(r,s);其中,ku为第一通信方产生的一个位于[1,n-1]之间的随机数,D1为第一通信方自身的子私钥,mod为求模运算。
2.根据权利要求1所述的签名方法,其特征在于,第一通信方和第二通信方共享SM2的椭圆曲线参数E(Fp)、(p,a,b,G,n,h),其中,椭圆曲线E为包含p个元素的素域Fp上的椭圆曲线,E(Fp)为Fp上椭圆曲线E的包括无穷远点O的所有有理点组成的集合,a和b为Fp中的元素,G为椭圆曲线E上n阶的基点,h为余因子。
3.根据权利要求1所述的签名方法,其特征在于,若用户私钥未确定,第一通信方和第二通信方分别产生随机数,将产生的随机数作为自身的子私钥;
若用户私钥已确定,任一通信方产生一个随机数作为自身的子私钥;另一通信方根据所述用户私钥和已经得到的一方子私钥计算得到另一方自身的子私钥。
4.根据权利要求1-3任一项所述的签名方法,其特征在于,所述第一通信方和第二通信方基于SM2利用用户的两方私钥生成用户公钥包括:
第一通信方根据公式Pu=[D1]G计算得到椭圆曲线点Pu,并将Pu发送给第二通信方;其中,D1为第一通信方自身的子私钥,G为SM2的椭圆曲线上的基点;
第二通信方验证Pu是否满足椭圆曲线方程,若不满足则报错并退出,否则根据公式PA=[D2]Pu-G生成用户公钥PA;其中,D2为第二通信方自身的子私钥。
5.根据权利要求1所述的签名方法,其特征在于,所述第一通信方利用所述用户公钥将待签名消息M生成消息摘要e,包括:
将杂凑Z和待签名消息M拼接后输入密码杂凑函数后得到消息摘要e,公式如下:
e=H256(Z||M);
其中,H256()为消息摘要长度256比特的密码杂凑函数,Z为用户的身份标识、部分椭圆曲线参数和用户公钥的杂凑。
6.一种基于权利要求4的基于SM2的两方协同签名方法的两方解密方法,用于对密文C进行解密,其特征在于,所述密文C使用所述用户的两方私钥协同计算,得到明文,包括以下步骤:
第一通信方和第二通信方分别获得自身的子私钥,并得到用户公钥;
第一通信方基于SM2从获取到的密文C中取出第一部分密文C1发送给第二通信方;
第二通信方接收所述C1,并根据自身的子私钥和第一部分密文C1生成R发送给第一通信方;
第一通信方基于SM2根据自身的子私钥和R以及第一部分密文C1、第二部分密文C2和第三部分密文C3进行解密后输出明文;
其中,密文C=C1||C3||C2。
7.根据权利要求6所述的解密方法,其特征在于,在第一通信方基于SM2从获取到的密文C中取出第一部分密文C1之后,还包括:第一通信方根据第一部分密文C1和SM2的椭圆曲线参数余因子h按照公式T=[h]C1计算得到椭圆曲线点T,若T是无穷远点,则报错并退出,否则将取出的第一部分密文C1发送给第二通信方;其中,C1满足椭圆曲线方程,若不满足则报错并退出;
在第二通信方接收所述C1之后,还包括:第二通信方验证C1是否满足椭圆曲线方程,若不满足则报错并退出,满足则根据公式R=[D2]C1计算得到椭圆曲线点R,并将R发送给第一通信方;其中,D2为第二通信方自身的子私钥。
8.根据权利要求6或7所述的解密方法,其特征在于,所述第一通信方基于SM2根据自身的子私钥和R以及第一部分密文C1、第二部分密文C2和第三部分密文C3进行解密后输出明文,包括:第一通信方验证R是否满足椭圆曲线方程,若不满足则报错并退出,满足则根据计算公式(x2,y2)=[D1]R-C1得到椭圆曲线点(x2,y2),将坐标x2、y2的数据类型转换为比特串,并根据公式t=KDF(x2||y2,klen)计算得到t;若t为全0比特串,则报错并退出,否则根据公式计算得到明文M′,并根据密码杂凑函数u=H256(x2||M′||y2)输出杂凑值u,若u≠C3,则报错并退出,否则输出明文M′;其中,klen为C2的比特长度,D1为第一通信方自身的子私钥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010100370.8A CN111314089B (zh) | 2020-02-18 | 2020-02-18 | 一种基于sm2的两方协同签名方法及解密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010100370.8A CN111314089B (zh) | 2020-02-18 | 2020-02-18 | 一种基于sm2的两方协同签名方法及解密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111314089A CN111314089A (zh) | 2020-06-19 |
CN111314089B true CN111314089B (zh) | 2023-08-08 |
Family
ID=71159996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010100370.8A Active CN111314089B (zh) | 2020-02-18 | 2020-02-18 | 一种基于sm2的两方协同签名方法及解密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111314089B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111754233B (zh) * | 2020-06-29 | 2023-11-07 | 兴唐通信科技有限公司 | 基于多方签名的电子支付方法和系统 |
CN111756537B (zh) * | 2020-07-13 | 2022-11-29 | 广州安研信息科技有限公司 | 基于sm2标准的两方协同解密方法、系统及存储介质 |
CN111565108B (zh) * | 2020-07-15 | 2020-11-24 | 北京信安世纪科技股份有限公司 | 签名处理方法、装置及系统 |
CN112152807B (zh) * | 2020-09-27 | 2022-11-11 | 成都国泰网信科技有限公司 | 一种基于sm2算法的两方协同数字签名方法 |
CN112367175B (zh) * | 2020-11-12 | 2021-07-06 | 西安电子科技大学 | 基于sm2数字签名的隐式证书密钥生成方法 |
CN112968773B (zh) * | 2021-01-29 | 2023-11-07 | 北京无字天书科技有限公司 | 一种sm2协同签名系统的密钥授权委托系统及方法 |
CN113132099B (zh) * | 2021-04-06 | 2022-08-09 | 鼎铉商用密码测评技术(深圳)有限公司 | 一种基于硬件密码设备的传输文件加解密方法及装置 |
CN112994889B (zh) * | 2021-04-29 | 2021-08-31 | 北京信安世纪科技股份有限公司 | 基于sm2的数据处理方法、系统以及电子设备 |
CN113190862B (zh) * | 2021-05-10 | 2023-01-06 | 成都卫士通信息产业股份有限公司 | 基于sm2的无证书密钥生成方法、装置、电子设备及介质 |
CN113676462B (zh) * | 2021-08-03 | 2022-08-19 | 北京海泰方圆科技股份有限公司 | 一种密钥分发、解密方法、装置、设备及介质 |
CN114065241A (zh) * | 2021-11-11 | 2022-02-18 | 北京海泰方圆科技股份有限公司 | 一种密钥安全处理系统、方法、设备及介质 |
CN114978536B (zh) * | 2022-05-16 | 2024-01-30 | 福建凯特信息安全技术有限公司 | 一种基于sm2算法的多方联合签名方法及系统 |
CN115134093B (zh) * | 2022-08-30 | 2022-11-15 | 北京信安世纪科技股份有限公司 | 数字签名方法及计算设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及系统 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
CN108989047A (zh) * | 2018-07-19 | 2018-12-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于sm2算法的通信双方协同签名方法与系统 |
CN109088726A (zh) * | 2018-07-19 | 2018-12-25 | 郑州信大捷安信息技术股份有限公司 | 基于sm2算法的通信双方协同签名及解密方法和系统 |
EP3447667A1 (de) * | 2017-08-23 | 2019-02-27 | Bundesdruckerei GmbH | Kryptographische sicherung für eine verteilte datenspeicherung |
CN109450640A (zh) * | 2018-10-24 | 2019-03-08 | 成都卫士通信息产业股份有限公司 | 基于sm2的两方签名方法及系统 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
-
2020
- 2020-02-18 CN CN202010100370.8A patent/CN111314089B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及系统 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
EP3447667A1 (de) * | 2017-08-23 | 2019-02-27 | Bundesdruckerei GmbH | Kryptographische sicherung für eine verteilte datenspeicherung |
CN108989047A (zh) * | 2018-07-19 | 2018-12-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于sm2算法的通信双方协同签名方法与系统 |
CN109088726A (zh) * | 2018-07-19 | 2018-12-25 | 郑州信大捷安信息技术股份有限公司 | 基于sm2算法的通信双方协同签名及解密方法和系统 |
CN109450640A (zh) * | 2018-10-24 | 2019-03-08 | 成都卫士通信息产业股份有限公司 | 基于sm2的两方签名方法及系统 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111314089A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111314089B (zh) | 一种基于sm2的两方协同签名方法及解密方法 | |
Menezes et al. | Handbook of applied cryptography | |
CN109088726B (zh) | 基于sm2算法的通信双方协同签名及解密方法和系统 | |
CN104270249B (zh) | 一种从无证书环境到基于身份环境的签密方法 | |
CN111147246B (zh) | 一种基于sm2的多方协同签名方法及系统 | |
CN104301108B (zh) | 一种从基于身份环境到无证书环境的签密方法 | |
CN107425971B (zh) | 无证书的数据加/解密方法和装置、终端 | |
CN110535626B (zh) | 基于身份的量子通信服务站保密通信方法和系统 | |
CN114726546B (zh) | 数字身份认证方法、装置、设备和存储介质 | |
CN110519226B (zh) | 基于非对称密钥池和隐式证书的量子通信服务端保密通信方法和系统 | |
CN113660087A (zh) | 一种基于有限域的sm9标识密码算法硬件实现系统 | |
WO2012147001A1 (en) | Data encryption | |
US9641333B2 (en) | Authentication methods, systems, devices, servers and computer program products, using a pairing-based cryptographic approach | |
CN109831305B (zh) | 基于非对称密钥池的抗量子计算签密方法和系统 | |
US20150006900A1 (en) | Signature protocol | |
CN113468582A (zh) | 一种抗量子计算加密通信方法 | |
CN116346336B (zh) | 一种基于多层密钥生成中心的密钥分发方法及相关系统 | |
CN116318696B (zh) | 一种双方无初始信任情况下代理重加密数字资产授权方法 | |
CN110048852B (zh) | 基于非对称密钥池的量子通信服务站数字签密方法和系统 | |
EP4208982A1 (en) | Method for electronic signing and authenticaton strongly linked to the authenticator factors possession and knowledge | |
CN109787773B (zh) | 基于私钥池和Elgamal的抗量子计算签密方法和系统 | |
Prakash et al. | Digital Signatures and El Gamal Scheme Integration for Secure Data Transmission in Digital Transaction Survey | |
KR20200055672A (ko) | 순열그룹 기반의 암호화 기술을 적용한 암호화시스템 및 방법 | |
Fugkeaw et al. | Proxy-assisted digital signing scheme for mobile cloud computing | |
CN114189329B (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 |