CN111130804A - 一种基于sm2算法的协同签名方法及装置、系统、介质 - Google Patents
一种基于sm2算法的协同签名方法及装置、系统、介质 Download PDFInfo
- Publication number
- CN111130804A CN111130804A CN201911376293.2A CN201911376293A CN111130804A CN 111130804 A CN111130804 A CN 111130804A CN 201911376293 A CN201911376293 A CN 201911376293A CN 111130804 A CN111130804 A CN 111130804A
- Authority
- CN
- China
- Prior art keywords
- private key
- algorithm
- result
- calculating
- component
- 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
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/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/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/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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Telephonic Communication Services (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及数字签名技术领域,更具体的说,涉及一种基于SM2算法的协同签名方法及装置、系统、介质。本方法包括以下步骤:S1第一通信方和第二通信方分别生成第一私钥分量DA和第二私钥分量DB,执行基于SM2算法的安全计算协议,得到双方共同的公钥Ppub;S2第一通信方和第二通信方的第一私钥分量DA和第二私钥分量DB进行加法分享变换,获得第一私钥变换分量D1和第二私钥变换分量D2,满足如下变换关系,D1+D2=DA·DB modn;S3第一通信方和第二通信方,采用第一私钥变换分量D1和第二私钥变换分量D2,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。本发明实现两方协同完成数字签名,既保证签名的正确性,又保证签名密钥的安全性。
Description
技术领域
本发明涉及数字签名技术领域,更具体的说,涉及一种基于SM2算法的协同签名方法及装置、系统、介质。
背景技术
公钥密码算法已经在电子商务、电子政务、移动警务、移动办公得到广泛使用,在车联网、智能医疗系统、智能家居系统等物联网应用以及云计算系统中也发挥了越来越重要的作用。在公钥密码体制中,保证私钥的安全性是一个非常重要的问题。用户的私钥通常需要在专门的硬件安全模块(HSM,Hardware Security Module)中安全存储和使用,私钥不能从密码硬件中导出。常见的HSM包括USBKEY(U盾)、智能卡、TF卡(Trans-flash Card,闪存卡)、密码芯片等。
随着互联网技术的发展,移动智能终端的普及率越来越高,随之而来的是安全问题,需要解决移动端的身份认证和数字签名。智能移动终端通常并没有配置专用的硬件密码模块,只能依赖于软件密码模块来完成密码运算,私钥则需要存储在用户终端本地存储介质中。
然而智能移动终端的防护能力较弱,虽然存储私钥时可以使用加密、PIN码(Personal Identification Number,个人识别密码)等方式加以保护,并保存在永久存储设备中,但是攻击者可能通过权限提升、动态分析算法运算过程等手段来获得私钥,这增加了私钥泄露的风险。比如,攻击者通过木马窃取保存在移动终端中的用户私钥,破解用户保护私钥的PIN码,从而获得用户私钥。
针对此类问题,常见的解决方法是采用门限秘密共享方案,将签名私钥被分割成t个子密钥,并安全地分给t个参与者掌管,这些t个参与者中的k(k≤t)个及以上所构成的子集可以重构签名私钥,少于k个参与者则无法获得完整签名私钥。这会存在以下两个问题,一方面,恢复出完整签名私钥之后,持有完整签名私钥的一方就可以在其他参与方不知情的情况下独立地进行签名,从而破坏了系统的安全性和公平性,另一方面,参与者的原始的子密钥参与重构签名私钥会造成原始子密钥泄露的风险。特别是在只有两个参与方的情况下,原始子密钥的泄露或者某一方恢复并持有完整签名私钥,就可以在另一方不知情的情况下独立地进行签名,给系统造成利益损失。
发明内容
本发明的目的是提供一种基于SM2算法的协同签名方法及装置、系统、介质,解决现有技术中两个参与方之间协同完成数字签名时的私钥分量的安全性问题。
为了实现上述目的,本发明提供了一种基于SM2算法的协同签名方法,包括以下步骤:
S1第一通信方和第二通信方分别生成第一私钥分量DA和第二私钥分量DB,执行基于SM2算法的安全计算协议,得到双方共同的公钥Ppub,其中,第一私钥分量DA和第二私钥分量DB为乘法分享的私钥分量;
S2第一通信方和第二通信方的第一私钥分量DA和第二私钥分量DB进行加法分享变换,获得第一私钥变换分量D1和第二私钥变换分量D2,满足如下变换关系,D1+D2=DA·DBmodn,n为素数,是椭圆曲线E的基点G的阶,
其中,第一私钥变换分量D1和第二私钥变换分量D2为加法分享的私钥分量,用于执行后续的协同签名操作;
S3第一通信方和第二通信方,采用第一私钥变换分量D1和第二私钥变换分量D2,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。
在一实施例中,所述步骤S1中,基于SM2算法的安全计算协议,进一步包括以下步骤:S111第一通信方选择一个随机数DA∈[1,…,n-1],作为第一私钥分量DA;
S112第二通信方选择一个随机数DB∈[1,…,n-1],作为第二私钥分量DB;
在一实施例中,所述步骤S1中,得到双方共同的公钥Ppub之后,进一步包括以下步骤:验证公钥Ppub是否有效。
在一实施例中,所述步骤S1中,得到双方共同的公钥Ppub之后,进一步包括以下步骤:将生成的公钥Ppub发送公开。
在一实施例中,所述步骤S1中,基于SM2算法的安全计算协议,进一步包括以下步骤:
S121第一通信方选择一个随机数DA∈[1,…,n-1],作为第一私钥分量DA;
S122第二通信方选择一个随机数DB∈[1,…,n-1],作为第二私钥分量DB;
S125第一通信方和第二通信方分别独立计算得到公钥Ppub,并发送公开公钥。
在一实施例中,所述步骤S2中,私钥分量变换,采用基于茫然传输协议的私钥分量变换协议实现,进一步包括以下步骤:
S21第一通信方和第二通信方在椭圆曲线E上随机选取一个群元素P作为公共参数;
S22第二通信方基于SM2算法计算得到混淆因子集合{Ui}={U1,U2,…,Ul},所述混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB中的1个比特相对应;
第二通信方将混淆因子集合的计算结果{Ui}发给第一通信方;
S23第一通信方接收混淆因子集合{Ui};
选择l个随机数x1,x2,…,xl,根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l};
第一通信方将随机参数Va和加密结果集合{<Xj,X′j>}发送给第二通信方;
S24第二通信方接收随机参数Va和加密结果集合{<Xj,X′j>};
根据随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB中的1个比特相对应;
在一实施例中,所述步骤S21中,第一通信方和第二通信方通过密钥协商算法,协商选取公共参数。
在一实施例中,所述步骤S22中,混淆因子集合{Ui}的计算方法,进一步包括以下步骤:S221选择l个随机数m1,m2,…,mi,…ml,l为第二私钥分量DB的比特长度;
S222第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S223第二通信方根据比特bi的值来决定计算Ui的计算公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是协商选取的公共参数,[mi]G代表基点G的mi倍点。
在一实施例中,所述步骤S23中,随机参数Va、VaP和第一集合{〈sj,s′j>}通过以下步骤获得:根据第一私钥分量DA,计算得到第一集合{<sj,s′j>},j∈{1,2,…,l},其中第j个元素<sj,s′j>的计算公式为:
选取1个比特长度为l的随机数a∈{0,1}l,计算随机参数Va和VaP,其中随机参数Va和VaP的计算公式为:
在一实施例中,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
在一实施例中,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2411第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2412第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
在一实施例中,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
在一实施例中,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:S2421第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
在一实施例中,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:
在一实施例中,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2431第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2432第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
在一实施例中,所述第一私钥变换分量D1设为固定值。
在一实施例中,所述步骤S3中,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素之前,还包括以下步骤:基于SM2算法,根据用户的可辨别标识计算出杂凑值ZA,并获取待签名原文M作为输入。
在一实施例中,所述步骤S3中,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,进一步包括以下步骤:
S31第一通信方选择第一随机数;
根据第一随机数和第一私钥变换分量D1,计算得到第一中间结果;
根据第一随机数和公钥Ppub,计算得到第一椭圆曲线群元素;
将第一中间结果和第一椭圆曲线群元素发送给第二通信方;
S32第二通信方接收第一中间结果和第一椭圆曲线群元素;
选择第二随机数;
根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,y1)的x轴坐标;
根据消息摘要e和第二椭圆曲线群元素(x1,y1),计算得到第二部分签名结果r;
根据第一中间结果、第二随机数,第二部分签名结果r和第二私钥变换分量D2,计算得到第二中间结果;
将第二中间结果和第二部分签名结果r发送给第一通信方;
S33第一通信方接收第二中间结果和第二部分签名结果r;
根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1,计算得到第一部分签名结果s;
根据第一部分签名结果s和第二部分签名结果r,输出完整的数字签名结果(r,s)。
在一实施例中,步骤S31中,所述第一随机数包括随机数k1∈[1,…,n-1],随机数k′1∈[1,…,n-1];
所述第一中间结果u=D1k1;
步骤S32中,所述第二随机数包括随机数k2∈[1,…,n-1],随机数k′2∈[1,…,n-1];
所述第二椭圆曲线群元素(x1,y1)=[k2]R1+R′1+[k′2](Ppub+G);
所述消息摘要e=Hv(ZA||M),其中ZA为基于SM2算法根据用户的可辨别标识计算出的杂凑值,M为待签名原文;
所述第二部分签名结果r=e+x1mod n;
步骤S33中,所述第一部分签名结果s=r(D1-1)+v2+v1k1+k′1。
在一实施例中,步骤S31中,所述第一随机数包括随机数k1∈[1,…,n-1],随机数k′1∈[1,…,n-1];
所述第一中间结果u=D1+k1;
所述第一椭圆曲线群元素包括R1=[k1+k′1]G+[k′1]Ppub;
步骤S32中,所述第二随机数包括随机数k2∈[1,…,n-1],随机数k′2∈[1,…,n-1];
所述第二椭圆曲线群元素(x1,y1)=R1+[k2+k′2]G+[k′2]Ppub;
所述消息摘要e=Hv(ZA||M),其中ZA为基于SM2算法根据用户的可辨别标识计算出的杂凑值,M为待签名原文;
所述第二部分签名结果r=e+x1mod n;
步骤S33中,所述第一部分签名结果s=r(D1-1)+v2+(D1+v1)k1+k′1。
在一实施例中,所述步骤S3中,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,进一步包括以下步骤:
S31第一通信方选择第一随机数;
根据第一随机数和公钥Ppub,计算得到第一椭圆曲线群元素;
将第一椭圆曲线群元素发送给第二通信方;
S32第二通信方接收第一椭圆曲线群元素;
选择第二随机数;
根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,y1)的x轴坐标;
根据消息摘要e和第二椭圆曲线群元素(x1,y1),计算得到第二部分签名结果r;
根据第二随机数,第二部分签名结果r和第二私钥变换分量D2,计算得到第二中间结果;
将第二中间结果和第二部分签名结果r发送给第一通信方;
S33第一通信方接收第二中间结果和第二部分签名结果r;
根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1,计算第一部分签名结果s;
结合第一部分签名结果s和第二部分签名结果r,输出完整的数字签名结果(r,s)。
在一实施例中,步骤S31中,所述第一随机数包括随机数k1∈[1,…,n-1];所述第一椭圆曲线群元素包括R1=[k1](Ppub+G);
步骤S32中,所述第二随机数包括随机数k2∈[1,…,n-1];
所述第二椭圆曲线群元素(x1,y1)=R1+[k2](Ppub+G);
所述消息摘要e=Hv(ZA||M),其中ZA为基于SM2算法根据用户的可辨别标识计算出的杂凑值,M为待签名原文;
所述第二部分签名结果r=e+x1mod n;
所述第二中间结果包括u=rD2+k2;
步骤S33中,所述第一部分签名结果s=u+r(D1-1)+k1。
在一实施例中,所述步骤S32中,第二通信方计算得到第二部分签名结果r之后,还包括以下步骤:判断第二部分签名r的值,如果r=0,则返回步骤S1重新执行。
在一实施例中,所述步骤S32中,第二通信方计算得到第二部分签名结果r之后,还包括以下步骤:计算[r]G+(x1,y1),判断计算结果与无穷远点O是否相等,如果相等则返回步骤S1重新执行。
在一实施例中,所述步骤S33中,第一通信方接收第二中间结果之后,还包括以下步骤:判断第二中间结果的值,如果第二中间结果值为0,则返回步骤S1重新执行。
在一实施例中,所述步骤S33中,第一通信方计算得到第一部分签名结果s之后,还包括以下步骤:计算r+s,判断计算结果是否满足(r+s)mod n=0,如果满足条件则返回步骤S1重新执行。
为了实现上述目的,本发明提供了一种基于SM2算法的协同签名装置,包括第一通信方和第二通信方:
所述第一通信方包括第一密钥生成单元、第一密钥变换单元和第一协同签名单元;
所述第二通信方包括第二密钥生成单元、第二密钥变换单元和第二协同签名单元:
所述第一密钥生成单元,生成乘法分享的第一私钥分量DA,所述第二密钥生成单元,生成乘法分享的第二私钥分量DB;
第一密钥生成单元和第二密钥生成单元,基于SM2算法的安全计算协议计算得到公钥Ppub;
所述第一密钥变换单元和第二密钥变换单元,将乘法分享的第一私钥分量DA和第二私钥分量DB,变换为加法分享的第一私钥变换分量D1和第二私钥变换分量D2,满足如下变换关系,D1+D2=DA·DBmod n,n为素数,是椭圆曲线E的基点G的阶;
所述第一协同签名单元,接收第一密钥变换单元的得到的第一私钥变换分量D1;所述第二协同签名单元,接收第二密钥变换单元的得到的第二私钥变换分量D2;
第一协同签名单元和第二协同签名单元,基于SM2算法的协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。
在一实施例中,所述第一密钥变换单元和第二密钥变换单元,采用基于茫然传输协议实现私钥分量变换;
第一通信方和第二通信方在椭圆曲线E上随机选取一个群元素P作为公共参数;
所述第一密钥变换单元,接收第二密钥变换单元发送的混淆因子集合{Ui},
所述第一密钥变换单元,根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l},向第二密钥变换单元发送随机参数Va和加密结果集合{<Xj,X′j>};
所述第二密钥变换单元,基于SM2算法计算得到混淆因子集合{Ui}={U1,U2,…,Ul},向第一密钥单元发送混淆因子集合{Ui},所述混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB中的1个比特相对应;
所述第二密钥变换单元,根据随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},计算得到第二私钥变换分量D2:所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB中的1个比特相对应。
在一实施例中,所述混淆因子集合{Ui},由第二密钥变换单元通过以下方式获得:
选择l个随机数m1,m2,…,mi,…ml,l为第二私钥分量DB的比特长度;
从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算Ui的计算公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是协商选取的公共参数,[mi]G代表基点G的mi倍点。
在一实施例中,所述随机参数Va、VaP和第一集合{<sj,s′j>},由第一密钥变换单元通过以下方式获得,
选择l个随机数x1,x2,…,xl,根据第一私钥分量DA,计算得到第一集合{<sj,s′j>},j∈{1,2,…,l},其中第j个元素<sj,s′j>的计算公式为:
选取1个比特长度为l的随机数a∈{0,1}l,计算随机参数Va和VaP,其中随机参数Va和VaP的计算公式为:
在一实施例中,所述第一密钥变换单元,对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式为:
在一实施例中,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
在一实施例中,所述第一密钥变换单元,对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式为:
在一实施例中,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
在一实施例中,所述第一密钥变换单元,对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式为:
在一实施例中,所述分享参数集合{ti},由第二密钥变换单元通过以下方式获得:从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
在一实施例中,所述第一协同签名单元,选择第一随机数,将计算获得的第一中间结果和第一椭圆曲线群元素发送给第二协同签名单元;
所述第二协同签名单元,接收第一中间结果和第一椭圆曲线群元素,选择第二随机数,将计算获得的第二中间结果和第二部分签名结果r发送给第一协同签名单元;
第一协同签名单元,接收第二中间结果和第二部分签名结果r,计算得到第一部分签名结果s,输出完整的数字签名结果(r,s);
其中,第一中间结果由第一协同签名单元并根据第一随机数和第一私钥变换分量D1计算得到;第一椭圆曲线群元素由第一协同签名单元根据第一随机数和公钥Ppub计算得到;
第二部分签名结果r由第二协同签名单元通过以下方式获得:
根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,y1)的x轴坐标;
基于SM2算法,根据用户的可辨别标识计算出杂凑值ZA,并获取待签名原文M作为输入,根据杂凑值ZA和待签名原文M,计算得到消息摘要e;
根据消息摘要e和第二椭圆曲线群元素(x1,y1),计算得到第二部分签名结果r;
第二中间结果由第二协同签名单元根据第一中间结果、第二随机数,第二部分签名结果r和第二私钥变换分量D2计算得到;
第一部分签名结果s由第一协同签名单元根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1计算得到。
在一实施例中,所述第一协同签名单元,选择第一随机数,将计算获得的第一椭圆曲线群元素发送给第二协同签名单元;
所述第二协同签名单元,接收第一椭圆曲线群元素,选择第二随机数,将计算获得的第二中间结果和第二部分签名结果r发送给第一协同签名单元;
第一协同签名单元,接收第二中间结果和第二部分签名结果r,计算得到第一部分签名结果s,输出完整的数字签名结果(r,s);
其中,第一椭圆曲线群元素由第一协同签名单元根据第一随机数和公钥Ppub计算得到;
第二部分签名结果r由第二协同签名单元通过以下方式获得:
根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,y1)的x轴坐标;
基于SM2算法,根据用户的可辨别标识计算出杂凑值ZA,并获取待签名原文M作为输入,根据杂凑值ZA和待签名原文M,计算得到消息摘要e;
根据消息摘要e和第二椭圆曲线群元素(x1,y1),计算得到第二部分签名结果r;
第二中间结果由第二协同签名单元根据第二随机数,第二部分签名结果r和第二私钥变换分量D2计算得到;
第一部分签名结果s由第一协同签名单元根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1计算得到。
在一实施例中,第一通信方是客户端,第二通信方是服务器。
为了实现上述目的,本发明提供了一种基于SM2算法的协同签名系统,包括:存储器,用于存储可由处理器执行的指令;
处理器,用于执行所述指令以实现如上述任一项所述的方法。
为了实现上述目的,本发明提供了一种计算机可读介质,其上存储有计算机指令,其中当计算机指令被处理器执行时,执行如上述任一项所述的方法。
本发明提供的一种SM2算法的协同签名方法及装置、系统、介质,实现两个参与方之间协同完成数字签名,该签名必须由两方共同参与,并且原始的私钥分量不参与签名过程,在签名过程中不会恢复完整的签名私钥,既保证签名的正确性,又能保证签名密钥的安全性。
附图说明
本发明上述的以及其他的特征、性质和优势将通过下面结合附图和实施例的描述而变的更加明显,在附图中相同的附图标记始终表示相同的特征,其中:
图1揭示了根据本发明一实施例的基于SM2算法的协同签名方法流程图;
图2揭示了根据本发明一实施例的协同签名装置的结构示意图;
图3揭示了根据本发明一实施例的协同签名系统的框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释发明,并不用于限定发明。
椭圆曲线密码(ECC,Elliptic curve cryptography)是一种基于在有限域上定义的椭圆曲线算法的公开密钥体制。SM2算法是是ECC密码体制的一种具体算法。在国家标准《GB/T 32918信息安全技术SM2椭圆曲线公钥密码算法》标准中规定了一种椭圆曲线公钥密码算法,基于SM2的数字签名的生成算法符合该标准的规定。
本发明的技术方案基于椭圆曲线密码体制(ECC,Elliptic curvecryptography),涉及两个对等的通信实体,在通信双方执行规定的协议,实现基于SM2算法的两方协同签名。
参考图1所示,图1揭示了根据本发明一实施例的基于SM2算法的协同签名方法流程图。该基于SM2算法的协同签名方法,主要包括如下的步骤:
S1、密钥对生成。第一通信方和第二通信方分别生成第一私钥分量DA和第二私钥分量DB,执行基于SM2算法的安全计算协议,得到双方共同的公钥Ppub,其中,第一私钥分量DA和第二私钥分量DB为乘法分享的私钥分量。
S2、私钥分量变换。第一通信方和第二通信方的第一私钥分量DA和第二私钥分量DB进行加法分享变换,获得第一私钥变换分量D1和第二私钥变换分量D2,满足如下变换关系,D1+D2=DA·DBmod n,n为素数,是椭圆曲线E的基点G的阶,
其中,第一私钥变换分量D1和第二私钥变换分量D2为加法分享的私钥分量,用于执行后续的协同签名操作。
S3、两方协同生成数字签名。第一通信方和第二通信方,采用第一私钥变换分量D1和第二私钥变换分量D2,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。
下面对基于SM2算法的协同签名方法中的每一步骤进行详细的展开阐述。
不失一般性,使用Alice和Bob来标识两个对等的通信实体。通信实体Alice和Bob分别对应第一通信方和第二通信方,两者的地位与顺序可以互换,不影响整体方案的实现。
Alice和Bob共同约定椭圆曲线的公共参数,并规定以下符号,以下符号同样参照了国家标准《GB/T 32918信息安全技术SM2椭圆曲线公钥密码算法》规定的参数:
Fq,包含q个元素的有限域;a,b,Fq中的元素,它们定义Fq上的一条椭圆曲线E;E,有限域上由a和b定义的一条椭圆曲线。
E(Fq),Fq上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。
#E(Fq),E(Fq)上点的数目,称为椭圆曲线E(Fq)的阶。
G,椭圆曲线的一个基点,其阶为素数;n,基点G的阶,n是#E(Fq)的素因子;mod n,模n运算。
O,椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元;P,P=(xP,yP)是椭圆曲线上除O之外的一个点,其坐标xP,yP满足椭圆曲线方程。
xP,点P的x坐标;yP,点P的y坐标;x||y,x与y的拼接,其中x和y是比特串或字节串;P1+P2,椭圆曲线E上两个点P1与P2的和。
Hv(*),消息摘要长度为v比特的密码杂凑算法;IDA,用户A的可辨别标识;M,待签名消息;e,密码杂凑算法作用于消息M的输出值。
ZA,关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值。
⊕,长度相等的两个比特串按比特的异或运算。
步骤S1、密钥对生成。
在进行数字签名之前,通信实体Alice和Bob分别生成第一私钥分量和第二私钥分量,并执行基于SM2算法的两方安全计算协议,推导得出双方共享的共同公钥Ppub,其中,第一私钥分量和第二私钥分量为乘法分享的私钥分量。较佳的,私钥和公钥密码算法符合国家标准《GB/T 32918信息安全技术SM2椭圆曲线公钥密码算法》。
本方法中生成私钥分量及执行基于SM2的安全计算协议的第一实施例进一步包括如下步骤:
S111、Alice选择一个随机数DA∈[1,…,n-1],作为第一私钥分量DA;
S112、Bob选择一个随机数DB∈[1,…,n-1],作为第二私钥分量DB;
更进一步的,还可以包括以下步骤:
在步骤S114生成公钥Ppub后,验证公钥Ppub是否有效。
可选的,验证公钥Ppub的方法为GB/T 32918.1标准给出的公钥验证方法。
更进一步的,还可以包括以下步骤:
在步骤S114生成公钥Ppub后,公钥Ppub发送给电子认证机构(CA机构)用于签发数字证书,电子认证机构签发数字证书的过程可以与后续私钥分量变换的步骤并行完成,减少总体运行时间。
本方法中生成私钥分量及执行基于SM2的安全计算协议的第二实施例进一步包括如下步骤:
S121、Alice选择一个随机数DA∈[1,…,n-1],作为第一私钥分量DA;
S122、Bob选择一个随机数DB∈[1,…,n-1],作为第二私钥分量DB;
S125、Alice和Bob分别独立计算出公钥Ppub,并公开公钥。
该技术方案类似与DH(Diffie-Hellman,密钥交换协议)算法,如果攻击者替换了中间结果(第一公钥参数P1或第二公钥参数P2),则Alice和Bob两方的公钥计算结果不一致,从而进一步保证安全性。
步骤S2、私钥分量变换。
Alice和Bob在生成第一私钥分量DA和第二私钥分量DB并推导共同的SM2公钥之后,还需要将私钥分量进行变换,获得第一私钥变换分量D1和第二私钥变换分量D2,用于执行后续的两方协同签名操作,其中,第一私钥变换分量D1和第二私钥变换分量D2为加法分享的私钥分量。
第一私钥变换分量D1、第二私钥变换分量D2和第一私钥分量DA、第二私钥分量DB应满足如下数学关系:
Dl+D2=DA·DBmod n;
其中,n为素数,是椭圆曲线E的基点G的阶。
本步骤中的私钥分量变换得到的加法分享的私钥分量D1、D2,参与后续的两方协同签名操作,解决了以下两方面的问题:
一方面,加法分享的私钥分量D1、D2不会逆向得到原始的乘法分享的私钥分量DA、DB,双方都无法获取到对方私钥DA、DB的任何信息,保证私钥分量DA、DB的安全性;
另一方面,加法分享的私钥分量D1、D2参与协同签名过程中,不会恢复出完整的签名密钥,解决了参与的一方获得完整的签名密钥,从而破坏安全性的问题。
本步骤中的私钥分量变换可以采用多种安全多方计算协议来实现。可选的,采用基于Paillier(帕耶)半同态加密实现该私钥分量的变换。
作为较优实施例,本发明提出一种基于茫然传输协议(Oblivious Transfer,简称OT)的技术方案,实现基于茫然传输协议的私钥分量变换协议。
Alice持有比特长度为l的第一私钥分量DA作为秘密输入,Bob持有比特长度为l的第二私钥分量DB作为秘密输入。Alice与Bob通过交换中间计算结果,并执行如下分布式计算协议:
S21、Alice和Bob在椭圆曲线E上随机选取一个群元素P作为公共参数。
作为安全条件Alice和Bob可以通过密钥协商算法,协商选取公共参数。在本实施例中,Alice和Bob执行ECDH(elliptic curves Diffie-Hellman,椭圆曲线密钥交换算法)协议来选取群元素P,计算共享的点乘结果,Alice和Bob任何一方均无法获得群元素P的离散对数结果。
S22、Bob基于SM2算法计算混淆因子集合{Ui}={U1,U2,…,Ul},混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB的1个比特相对应。
本实施例中,混淆因子集合{Ui}具体计算规则如下:
步骤S221、Bob选择l个随机数m1,m2,…,mi,…ml,l为第二私钥分量DB的比特长度;
步骤S222、Bob从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
步骤S223、根据比特bi的值来决定计算Ui的公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是在步骤S21中协商获得的公共参数;
[mi]G代表基点G的mi倍点。
在完成对混淆因子集合{Ui}的计算之后,Bob将混淆因子集合{Ui}的结果发给Alice。
S23、Alice收到混淆因子集合{Ui}之后,选择1个比特长度为l的随机数a∈{0,1}l,计算以下随机参数:
选择l个随机数x1,x2,…,xl,根据第一私钥分量DA,来计算得到第一集合{<sj,s′j>},j∈{1,2,…,l},其中第j个元素<sj,s′j>的计算公式为:
根据随机参数VaP和混淆因子集合{Ui},对第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l}。
本发明根据加密结果集合的加密计算方法的区别,提出三种不同的实施例。
在第一实施例中,加密结果集合{<Xj,X′j>},j∈{1,2,…,l},其中第j个元素<Xj,X′j>的计算公式:
其中,运算符“||”代表将其两边的操作数执行比特串接的运算;Uj是混淆因子集合{Ui}的第j个元素,是一个椭圆曲线E上的群元素;[a]Uj代表以标量a作为输入与群元素Uj执行椭圆曲线点乘运算的计算结果。
labelA和labelB是固定的标签参数,在本实施例中,labelA=′DA′,labelB=′DB′。
{(x,y)|[a]Uj}代表将点乘计算结果[a]Uj的横坐标x和纵坐标y按照预先定义的方式进行处理。在本实施例中,预先定义的方式为将比特串进行串接。
Hv(*)代表使用预先规定的密码杂凑函数H来对输入数据进行处理并获得杂凑值,保证了本发明算法的安全性。可选的,密码杂凑函数Hv采用的SM3密码杂凑算法。更进一步的,密码杂凑算法采用的相关标准为GB/T32905-2016《信息安全技术SM3密码杂凑算法》。
在第二实施例中,加密结果集合{<Xj,X′j>},j∈{1,2,…,l},其中第j个元素<Xj,X′j>的计算公式:
其中,Uj是混淆因子集合{Ui}的第j个元素,是一个椭圆曲线E上的群元素;[a]Uj代表以标量a作为输入与群元素Uj执行椭圆曲线点乘运算的计算结果。
{(x,y)|[a]Uj}代表将点乘计算结果[a]Uj的横坐标x和纵坐标y按照预先定义的方式进行处理。在本实施例中,预先定义的方式为将比特串进行串接。
Hv(*)代表使用预先规定的密码杂凑函数Hv来对输入数据进行处理并获得杂凑值,可选的,密码杂凑函数Hv采用的SM3密码杂凑算法。更进一步的,密码杂凑算法采用的相关标准为GB/T 32905-2016《信息安全技术SM3密码杂凑算法》。
在第三实施例中,加密结果集合{<Xj,X′j>},j∈{1,2,…,l},其中第j个元素<Xj,X′j>的计算公式:
其中,{(x,y)|[a]Uj}代表将点乘计算结果[a]Uj的横坐标x和纵坐标y按照预先定义的方式进行处理。在本实施例中,预先定义的方式为将比特串进行串接。
KDF(*)代表使用预先规定的密钥派生函数,klen表述输出的比特串长度。密钥派生函数的作用是对输入数据进行处理并获得密钥数据。可选的,密钥派生函数采用的相关标准为GB/T 32918.4-2016《信息安全技术SM2椭圆曲线公钥密码算法第4部分:公钥加密算法》。
在完成计算之后,Alice将随机参数Va和加密结果集合{<Xj,X′j>}发送给Bob。
在一实施例中,第一私钥变换分量D1设为固定值,l个随机数x1,x2,…,xl求和得到的值为固定值,从而简化Alice作为服务器端的实现。对于每一个用户Bob,在执行乘法-加法变换的OT协议过程中,服务端Alice都选择一组不同的随机数xi,i∈{1,2,…,l},但是xi的求和总是和固定值D1相等。这一方案的优点是作为服务端的Alice仅需要存储1个加法第一私钥变换分量D1,就可以为海量的移动终端Bob提供协同签名服务。为了确保安全性,服务端需要将第一私钥变换分量D1存储在HSM内部以保证私钥变换分量的私密性。
S24、Bob在收到随机参数Va和加密结果集合{<Xj,X′j>}之后,根据收到的结果来计算分享参数集合{ti},所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB中的1个比特相对应。
对应于加密结果集合的三个实施例,在第一实施例中,分享参数集合{ti}计算规则如下:
S2411第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2412第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
在第二实施例中,分享参数集合{ti}计算规则如下:
步骤S2421、Bob从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
步骤S2422、Bob根据比特bi的值来决定计算分享参数集合{ti}中第i个元素ti的公式:
在第三实施例中,分享参数集合{ti}计算规则如下:
S2431第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2432第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
Bob在计算出分享参数集合{ti}之后,计算得到第二私钥变换分量D2:
在执行上述分布式计算协议之后,Alice获得第一私钥变换分量D1,Bob获得第二私钥变换分量D2,它们满足如下数学关系:D1+D2=DA·DBmod n。
通过基于ECC的茫然传输协议来执行私钥变换操作,可以在协同签名方案中采用SM2标准算法实现全部私钥变换过程,而不需要引入其他类型的半同态加密算法,有利于产品标准化,满足合规性。
同时,基于ECC的茫然传输协议的效率较高,相比逐比特传输可以减少大量运算步骤。对于双方传输256比特的秘密,与本发明的技术方案相比较,现有技术的茫然传输协议将需要执行更多的ECC点乘运算,同时需要传输更多的中间计算结果。
步骤S3、两方协同生成数字签名。
Alice和Bob,采用第一私钥变换分量D1和第二私钥变换分量D2,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。根据交换中间结果和/或椭圆曲线群元素的不同,本发明提出了以下三种协同签名方案。
第一种协同签名方案的具体实施步骤如下所示:
在生成数字签名之前,根据用户A的可辨别标识IDA计算出杂凑值ZA,并获取待签名原文M作为输入。
在本实施例中,按照GB/T 32918标准的规定计算杂凑值。作为签名者的用户A具有长度为entlenA比特的可辨别标识IDA,记ENTLA是由整数entlenA转换而成的两个字节,使用密码杂凑函数Hv求得用户A的杂凑值ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA),其中椭圆曲线方程参数a、b、G的坐标xG、yG、和公钥PA的坐标xA、yA,在本实施例中,消息摘要长度为256比特。
Alice持有第一私钥变换分量D1,Bob持有第二私钥变换分量D2。
Alice与Bob协同执行如下协议,两方协同生成数字签名结果(r,s)。
S311、Alice选择第一随机数,第一随机数包括随机数k1∈[1,…,n-1],随机数k′1∈[1,…,n-1]。
根据随机数k1和第一私钥变换分量D1,计算得到第一中间结果:
u=D1k1。
根据随机数k1、随机数k′1和公钥Ppub,计算得到第一椭圆曲线群元素:
将第一椭圆曲线群元素R1、R′1和第一中间结果u发送给Bob。
S312、Bob接收第一椭圆曲线群元素R1、R′1和第一中间结果u。
Bob选择第二随机数,第二随机数包括随机数k2∈[1,…,n-1],随机数k′2∈[1,…,n-1],计算得到第二椭圆曲线群元素:
(x1,y1)=[k2]R1+R′1+[k′2](Ppub+G);
其中,x1是第二椭圆曲线群元素(x1,y1)的x轴坐标。
Bob根据杂凑值ZA和待签名原文M,计算得到消息摘要e。
Bob计算消息摘要e=H(ZA||M),计算第二部分签名结果r=e+x1mod n。
更进一步的,判断第二部分签名r的值,如果r=0,则返回步骤S1重新执行。
更进一步的,计算[r]G+(x1,y1),检查判断计算结果与无穷远点O是否相等,如果相等则返回步骤S1重新执行。
上述验证步骤来对中间计算结果进行检查,提升安全性,如果不进行检查,则其后续步骤计算及传输的中间结果可能会泄漏私钥的部分信息。
Bob使用第二随机数k2、k′2、第二部分签名结果r和第二私钥变换分量D2计算第二中间结果:
在完成计算之后,Bob将第二中间结果v1和v2,第二部分签名结果r发送给Alice。
S313、Alice接收第二中间结果v1和v2,第二部分签名结果r。
更进一步的,检查判断第二中间结果v1和v2的值,若检查发现v1=0或者v2=0,则返回步骤S1重新执行。
Alice使用第一随机数k1、k′1、第二部分签名结果r和第一私钥变换分量D1,计算得到另一个部分签名结果,即第一部分签名结果s:
s=r(D1-1)+v2+v1k1+k′1。
更进一步的,计算r+s,判断计算结果是否满足(r+s)mod n=0,如果满足条件则返回步骤S1重新执行。
上述验证步骤来对中间计算结果进行检查,提升安全性,如果不进行检查,则其后续步骤计算及传输的中间结果可能会泄漏私钥的部分信息。
Alice根据第一部分签名结果s和第二部分签名结果r,输出完整的数字签名结果(r,s)。
第二种协同签名方案与第一种协同签名方案的步骤相似,区别在于第一中间结果、第二中间结果、第一椭圆曲线群元素和第二椭圆曲线群元素的计算形式和具体值不同,第二种协同签名方案具体实施步骤如下所示:
在生成数字签名之前,根据用户A的可辨别标识IDA计算出杂凑值ZA,并获取待签名原文M作为输入。在本实施例中,按照GB/T 32918标准的规定计算杂凑值。
Alice持有第一私钥变换分量D1,Bob持有第二私钥变换分量D2。
Alice与Bob协同执行如下协议,生成数字签名结果(r,s):
S321、Alice选择第一随机数,第一随机数包括随机数k1∈[1,…,n-1],随机数k′1∈[1,…,n-1]。
根据随机数k1和第一私钥变换分量D1,计算得到第一中间结果:
u=D1+k1。
根据随机数k1、随机数k′1和公钥Ppub,计算得到第一椭圆曲线群元素:
R1=[k1+k′1]G+[k′1]Ppub。
将第一椭圆曲线群元素R1和第一中间结果u发送给Bob。
S322、Bob接收第一椭圆曲线群元素R1和第一中间结果u。
Bob选择第二随机数,第二随机数包括随机数k2∈[1,…,n-1],随机数k′2∈[1,…,n-1],计算得到第二椭圆曲线群元素:
(x1,y1)=R1+[k2+k′2]G+[k′2]Ppub
其中,x1是第二椭圆曲线群元素(x1,y1)的x轴坐标。
Bob根据杂凑值ZA和待签名原文M,计算得到消息摘要e。
Bob计算消息摘要e=H(ZA||M),计算第二部分签名结果r=e+x1mod n。
更进一步的,判断第二部分签名r的值,如果r=0,则返回步骤S1重新执行。
更进一步的,计算[r]G+(x1,y1),检查判断计算结果与无穷远点O是否相等,若相等则返回步骤S1重新执行。
Bob第二随机数k2、k′2、第二部分签名结果r和第二私钥变换分量D2计算第二中间结果:
在完成计算之后,Bob将第二中间结果v1和v2,第二部分签名结果r发送给Alice。
S323、Alice接收第二中间结果v1和v2,第二部分签名结果r。
更进一步的,检查判断第二中间结果v1和v2的值,若检查发现v1=0或者v2=0,则返回步骤S1重新执行。
Alice使用第一随机数k1、k′1、第二部分签名结果r和第一私钥变换分量D1,计算得到另一个部分签名结果,即第一部分签名结果s:
s=r(D1-1)+v2+(D1+v1)k1+k′1
更进一步的,计算r+s,判断计算结果是否满足(r+s)mod n=0,如果满足条件则返回步骤S1重新执行。
Alice根据第一部分签名结果s和第二部分签名结果r,输出完整的数字签名结果(r,s)。
第三种协同签名方案与第一种、第二种协同签名方案的区别在于,第三种协同签名方案的交换结果中不存在第一中间结果,第三种协同签名方案具体实施步骤如下所示:
在生成数字签名之前,根据用户A的可辨别标识IDA计算出杂凑值ZA,并获取待签名原文M作为输入。
在本实施例中,按照GB/T 32918标准的规定计算杂凑值。
Alice持有第一私钥变换分量D1,Bob持有第二私钥变换分量D2。
Alice与Bob协同执行如下协议,两方协同生成数字签名结果(r,s)。
S331、Alice选择第一随机数,第一随机数包括随机数k1∈[1,…,n-1]。
根据第一随机数k1和公钥Ppub,计算得到第一椭圆曲线群元素:
R1=[k1](Ppub+G)。
然后将第一椭圆曲线群元素R1发送给Bob。
S332、Bob接收第一椭圆曲线群元素R1。
Bob选择第二随机数k2∈[1,…,n-1],计算得到第二椭圆曲线群元素:
(x1,y1)=R1+[k2](Ppub+G)。
其中,x1是第二椭圆曲线群元素(x1,y1)的x轴坐标。
Bob根据杂凑值ZA和待签名原文M,计算得到消息摘要e。
Bob计算消息摘要e=H(ZA||M),计算第二部分签名结果r=e+x1mod n。
更进一步的,判断第二部分签名r的值,如果r=0,则返回步骤S1重新执行。
更进一步的,计算[r]G+(x1,y1),然后检查计算结果与无穷远点O是否相等,如果相等则返回步骤S1重新执行。
Bob使用第二随机数k2、第二部分签名结果r和第二私钥变换分量D2计算第二中间结果:u=rD2+k2。
在完成计算之后,Bob将第二中间结果u和第二部分签名结果r发送给Alice。
S333、Alice接收第二中间结果u和第二部分签名结果r。
更进一步的,检查判断第二中间结果u的值,若检查发现u=0,则返回步骤S1重新执行。
Alice使用第一随机数k1、第二部分签名结果r和第一私钥变换分量D1,计算得到另一个部分签名结果,即第一部分签名结果s:
s=u+r(D1-1)+k1。
更进一步的,计算r+s,判断计算结果是否满足(r+s)mod n=0,如果满足条件则返回步骤S1重新执行。
Alice根据第一部分签名结果s和第二部分签名结果r,输出完整的数字签名结果(r,s)。
必须指出,在上述基于SM2算法的协同签名方法中,Alice和Bob可以代表客户端、服务端其中一个角色,如果Alice是客户端则Bob是服务端。一般地,优先选择服务端执行Bob的步骤,因为客户端执行Alice的步骤,则客户端计算明文摘要和输出签名结果,这样有利于保护用户隐私。
本发明的基于SM2算法的协同签名方案,结合移动端的特点,利用移动设备(客户端)和云端密码服务(服务端)共同产生SM2密钥,并将密钥分割为两部分(私钥分量),分别由移动设备端和云端密码服务器各自保存,由移动设备和云端共同完成数字签名,保证了签名过程密钥不被泄露,并能有效的保护移动设备端的密钥安全性。协同签名过程中不使用原始的乘法分享的私钥分量,通信双方均无法获取到对方私钥的任何信息,因此攻击者在入侵其中任何一方的情况下,都不能伪造签名或解密密文。
本发明还提供了一种可以实现上述基于SM2算法的协同签名方法的协同签名装置。图2揭示了根据本发明一实施例的协同签名装置的结构示意图,如图2所示,该协同签名装置包括第一通信方100和第二通信方200:
所述第一通信方100包括第一密钥生成单元101、第一密钥变换单元102和第一协同签名单元103;所述第二通信方200包括第二密钥生成单元201、第二密钥变换单元202和第二协同签名单元203。
第一密钥生成单元101,与第一密钥变换单元102连接,生成乘法分享的第一私钥分量DA,并发送给第一密钥变换单元102,与第二密钥生成单元201连接。
第二密钥生成单元201,与第二密钥变换单元202连接,生成乘法分享的第二私钥分量DB,并发送给第二密钥变换单元202,第一密钥生成单元101和第二密钥生成单元201,基于SM2算法的安全计算协议共同计算得到公钥Ppub。
所述第一密钥变换单元102和第二密钥变换单元202,进行中间数据交换,将乘法分享的第一私钥分量DA和第二私钥分量DB,变换为加法分享的第一私钥变换分量D1和第二私钥变换分量D2,满足如下变换关系,D1+D2=DA·DBmod n,n为素数,是椭圆曲线E的基点G的阶。
所述第一协同签名单元103,与第一密钥变换单元102、第二协同签名单元203连接,接收第一密钥变换单元102的第一私钥变换分量D1;所述第二协同签名单元203,与第二密钥变换单元202连接,接收第二密钥变换单元202的第二私钥变换分量D2。第一协同签名单元103和第二协同签名单元203,基于SM2算法的协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。
更进一步的,所述第一密钥变换单元102和第二密钥变换单元202,采用基于茫然传输协议实现私钥分量变换,具体通过以下方法实现:
第一通信方100和第二通信方200在椭圆曲线E上随机选取一个群元素P作为公共参数。
第一密钥变换单元102,接收第二密钥变换单元202发送的混淆因子集合{Ui},根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l},向第二密钥变换单元202发送随机参数Va和加密结果集合{<Xj,X′j>}。
第二密钥变换单元202,根据第一密钥变换单元102发送的随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},计算得到第二私钥变换分量D2:所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB中的1个比特相对应。
其中,混淆因子集合{Ui},由第二密钥变换单元202通过步骤S2中的方式获得;随机参数Va、VaP、第一集合{<sj,s′j>},由第一密钥变化单元102通过步骤S22中的方式获得。
更进一步的,所述第一密钥变换单元102,对第一集合{<sj,s′j>}的每一个元素进行加密计算,加密计算公式通过上述步骤S23中的方式获得。
更进一步的,所述分享参数集合{ti}的计算公式,由第二密钥变换单元通过上述步骤S24中的方式获得。
以下通过两个实施例对第一协同签名单元103与第二协同签名单元203的协同签名过程进行详细说明。
在第一实施例中,所述第一协同签名单元103,选择第一随机数,将计算获得的第一中间结果和第一椭圆曲线群元素发送给第二协同签名单元203。
所述第二协同签名单元203,接收第一中间结果和第一椭圆曲线群元素,选择第二随机数,将计算获得的第二中间结果和第二部分签名结果r发送给第一协同签名单元103。
第一协同签名单元103,接收第二中间结果和第二部分签名结果r,计算得到第一部分签名结果s,输出完整的数字签名结果(r,s);
其中,第一中间结果由第一协同签名单元103根据第一随机数和第一私钥变换分量D1计算得到;第一椭圆曲线群元素由第一协同签名单元103第一随机数和公钥Ppub计算得到。
第二部分签名结果r由第二协同签名单元203通过上述步骤S3中的方式获得;第二中间结果由第二协同签名单元203根据第一中间结果、第二随机数,第二部分签名结果r和第二私钥变换分量D2计算得到。
第一部分签名结果s由第一协同签名单元103根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1计算得到。
在第二实施例中,第一协同签名单元103和第二协同签名单元203的协同签名流程与第一实施例中相同,区别在于具体算法不同,在第二实施例中,第一协同签名单元103不产生第一中间结果,第一协同签名单元103和第二协同签名单元203之间的交换中没有第一中间结果参与。
基于同样的理由,较佳的,第一通信方100是客户端,第二通信方200是服务器,则客户端计算明文摘要和输出签名结果,这样有利于保护用户隐私。
如果系统仅需支持协同签名操作,不需要支持协同解密操作,则在获得第一私钥变换分量D1和第二私钥变换分量D2之后,第一通信方100可以销毁第一私钥分量DA并仅存储第一私钥变换分量D1,第二通信方200可以销毁第二私钥分量DB并仅存储第二私钥变换分量D2,进一步保证原始乘法分享的私钥分量DA、DB的安全性。
如果系统需要同时支持协同签名、协同解密操作,则第一通信方100需要同时存储私钥分量D1和DA,第二通信方200需要同时存储私钥分量D2和DB。
图3揭示了根据本发明一实施例的协同签名系统的框图。协同签名系统可包括内部通信总线301、处理器(processor)302、只读存储器(ROM)303、随机存取存储器(RAM)304、通信端口305、输入/输出端306以及硬盘307。内部通信总线301可以实现协同签名系统组件间的数据通信。处理器302可以进行判断和发出提示。在一些实施例中,处理器302可以由一个或多个处理器组成。
通信端口305可以实现协同签名系统与外部的输入/输出设备之间进行数据传输与通信。在一些实施例中,协同签名系统可以通过通信端口305从网络发送和接收信息及数据。在一些实施例中,协同签名系统可以通过输入/输出端306以有线的形式与外部的输入/输出设备之间进行数据传输与通信。在一些实施例中,输入端为虚拟键盘,在签名过程中供用户在移动终端输入验证信息,验证信息可以是PIN码。
协同签名系统还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘307,只读存储器(ROM)303和随机存取存储器(RAM)304,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器302所执行的可能的程序指令。处理器302执行这些指令以实现方法的主要部分。处理器302处理的结果通过通信端口305传给外部的输出设备,在输出设备的用户界面上显示。
举例来说,上述的协同签名方法的实施过程文件可以为计算机程序,保存在硬盘307中,并可记载到处理器302中执行,以实施本申请的方法。
需要指出的是,术语“计算机”应该做广义的理解,可以包括但不限于云计算服务器,智能移动终端,物联网设备,计算机电脑等。对于移动端,私钥分量/私钥变换分量可以储存在本地介质中,对于服务端,私钥分量/私钥变换分量可以选择储存在数据库、HSM内部。
协同签名方法的实施过程文件为计算机程序时,也可以存储在计算机或移动设备的可读存储介质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)、数字多功能盘(DVD))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(EPROM)、卡、棒、键驱动)。此外,本文描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
本发明提供的一种SM2算法的协同签名方法及装置、系统、介质,实现两个参与方之间协同完成数字签名,该签名必须由两方共同参与,并且原始的私钥分量不参与签名过程,在签名过程中不会恢复完整的签名密钥,既保证签名的正确性,又能保证签名密钥的安全性。本发明具体具有以下技术效果:
1)在执行生成乘法私钥分量并推导出共同公钥之后,可以将公钥发给CA机构,因此CA签发数字证书的过程与私钥变换的过程可以并行完成,减少总体运行时间;
2)通过基于ECC的茫然传输协议来执行私钥变换操作,这样可以在协同签名方案中采用SM2标准算法实现全部过程,而不需要引入其他类型的半同态加密算法,有利于产品标准化,满足合规性;
3)茫然传输协议的效率较高,相比逐比特传输可以减少大量运算步骤。
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的,熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
Claims (40)
1.一种基于SM2算法的协同签名方法,其特征在于,包括以下步骤:
S1第一通信方和第二通信方分别生成第一私钥分量DA和第二私钥分量DB,执行基于SM2算法的安全计算协议,得到双方共同的公钥Ppub,其中,第一私钥分量DA和第二私钥分量DB为乘法分享的私钥分量;
S2第一通信方和第二通信方的第一私钥分量DA和第二私钥分量DB进行加法分享变换,获得第一私钥变换分量D1和第二私钥变换分量D2,满足如下变换关系,D1+D2=DA·DBmod n,n为素数,是椭圆曲线E的基点G的阶,
其中,第一私钥变换分量D1和第二私钥变换分量D2为加法分享的私钥分量,用于执行后续的协同签名操作;
S3第一通信方和第二通信方,采用第一私钥变换分量D1和第二私钥变换分量D2,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。
3.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S1中,得到双方共同的公钥Ppub之后,进一步包括以下步骤:
验证公钥Ppub是否有效。
4.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S1中,得到双方共同的公钥Ppub之后,进一步包括以下步骤:
将生成的公钥Ppub发送公开。
6.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S2中,私钥分量进行加法分享变换,采用基于茫然传输协议的私钥分量变换协议实现,进一步包括以下步骤:
S21第一通信方和第二通信方在椭圆曲线E上随机选取一个群元素P作为公共参数;
S22第二通信方基于SM2算法计算得到混淆因子集合{Ui}={U1,U2,...,Ul},所述混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB中的1个比特相对应;
第二通信方将混淆因子集合的计算结果{Ui}发给第一通信方;
S23第一通信方接收混淆因子集合{Ui};
选择l个随机数x1,x2,...,xl,根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l};
第一通信方将随机参数Va和加密结果集合{<Xj,X′j>}发送给第二通信方;
S24第二通信方接收随机参数Va和加密结果集合{<Xj,X′j>};
根据随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB中的1个比特相对应;
7.根据权利要求6所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S21中,第一通信方和第二通信方通过密钥协商算法,协商选取公共参数。
8.根据权利要求6所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S22中,混淆因子集合{Ui}的计算方法,进一步包括以下步骤:
S221选择l个随机数m1,m2,...,mi,...ml,l为第二私钥分量DB的比特长度;
S222第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S223第二通信方根据比特bi的值来决定计算Ui的计算公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是协商选取的公共参数,[mi]G代表基点G的mi倍点。
16.根据权利要求6所述的基于SM2算法的协同签名方法,其特征在于,所述第一私钥变换分量D1设为固定值。
17.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S3中,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,进一步包括以下步骤:
S31第一通信方选择第一随机数;
根据第一随机数和第一私钥变换分量D1,计算得到第一中间结果;
根据第一随机数和公钥Ppub,计算得到第一椭圆曲线群元素;
将第一中间结果和第一椭圆曲线群元素发送给第二通信方;
S32第二通信方接收第一中间结果和第一椭圆曲线群元素;
选择第二随机数;
根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,y1)的x轴坐标;
根据消息摘要e和第二椭圆曲线群元素(x1,y1),计算得到第二部分签名结果r;
根据第一中间结果、第二随机数,第二部分签名结果r和第二私钥变换分量D2,计算得到第二中间结果;
将第二中间结果和第二部分签名结果r发送给第一通信方;
S33第一通信方接收第二中间结果和第二部分签名结果r;
根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1,计算得到第一部分签名结果s;
根据第一部分签名结果s和第二部分签名结果r,输出完整的数字签名结果(r,s)。
18.根据权利要求17所述的基于SM2算法的协同签名方法,其特征在于:
步骤S31中,所述第一随机数包括随机数k1∈[1,…,n-1],随机数k′1∈[1,…,n-1];
所述第一中间结果u=D1k1;
步骤S32中,所述第二随机数包括随机数k2∈[1,…,n-1],随机数k′2∈[1,…,n-1];
所述第二椭圆曲线群元素(x1,y1)=[k2]R1+R′1+[k′2](Ppub+G);
所述消息摘要e=Hv(ZA||M),其中ZA为基于SM2算法根据用户的可辨别标识计算出的杂凑值,M为待签名原文;
所述第二部分签名结果r=e+x1mod n;
步骤S33中,所述第一部分签名结果s=r(D1-1)+v2+v1k1+k′1。
19.根据权利要求17所述的基于SM2算法的协同签名方法,其特征在于:
步骤S31中,所述第一随机数包括随机数k1∈[1,…,n-1],随机数k′1∈[1,…,n-1];
所述第一中间结果u=D1+k1;
所述第一椭圆曲线群元素包括R1=[k1+k′1]G+[k′1]Ppub;
步骤S32中,所述第二随机数包括随机数k2∈[1,…,n-1],随机数k′2∈[1,…,n-1];
所述第二椭圆曲线群元素(x1,y1)=R1+[k2+k′2]G+[k′2]Ppub;
所述消息摘要e=Hv(ZA||M),其中ZA为基于SM2算法根据用户的可辨别标识计算出的杂凑值,M为待签名原文;
所述第二部分签名结果r=e+x1mod n;
步骤S33中,所述第一部分签名结果s=r(D1-1)+v2+(D1+v1)k1+k′1。
20.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S3中,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,进一步包括以下步骤:
S31第一通信方选择第一随机数;
根据第一随机数和公钥Ppub,计算得到第一椭圆曲线群元素;
将第一椭圆曲线群元素发送给第二通信方;
S32第二通信方接收第一椭圆曲线群元素;
选择第二随机数;
根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,y1)的x轴坐标;
根据消息摘要e和第二椭圆曲线群元素(x1,y1),计算得到第二部分签名结果r;
根据第二随机数,第二部分签名结果r和第二私钥变换分量D2,计算得到第二中间结果;
将第二中间结果和第二部分签名结果r发送给第一通信方;
S33第一通信方接收第二中间结果和第二部分签名结果r;
根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1,计算第一部分签名结果s;
结合第一部分签名结果s和第二部分签名结果r,输出完整的数字签名结果(r,s)。
21.根据权利要求20所述的基于SM2算法的协同签名方法,其特征在于:
步骤S31中,所述第一随机数包括随机数k1∈[1,…,n-1];
所述第一椭圆曲线群元素包括R1=[k1](Ppub+G);
步骤S32中,所述第二随机数包括随机数k2∈[1,…,n-1];
所述第二椭圆曲线群元素(x1,y1)=R1+[k2](Ppub+G);
所述消息摘要e=Hv(ZA||M),其中ZA为基于SM2算法根据用户的可辨别标识计算出的杂凑值,M为待签名原文;
所述第二部分签名结果r=e+x1mod n;
所述第二中间结果包括u=rD2+k2;
步骤S33中,所述第一部分签名结果s=u+r(D1-1)+k1。
22.根据权利要求17或权利要求20所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S32中,第二通信方计算得到第二部分签名结果r之后,还包括以下步骤:
判断第二部分签名r的值,如果r=0,则返回步骤S1重新执行。
23.根据权利要求17或权利要求20所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S32中,第二通信方计算得到第二部分签名结果r之后,还包括以下步骤:
计算[r]G+(x1,y1),判断计算结果与无穷远点O是否相等,如果相等则返回步骤S1重新执行。
24.根据权利要求17或权利要求20所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S33中,第一通信方接收第二中间结果之后,还包括以下步骤:
判断第二中间结果的值,如果第二中间结果值为0,则返回步骤S1重新执行。
25.根据权利要求17或权利要求20所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S33中,第一通信方计算得到第一部分签名结果s之后,还包括以下步骤:
计算r+s,判断计算结果是否满足(r+s)mod n=0,如果满足条件则返回步骤S1重新执行。
26.一种基于SM2算法的协同签名装置,其特征在于,包括第一通信方和第二通信方:
所述第一通信方包括第一密钥生成单元、第一密钥变换单元和第一协同签名单元;
所述第二通信方包括第二密钥生成单元、第二密钥变换单元和第二协同签名单元:
所述第一密钥生成单元,生成乘法分享的第一私钥分量DA,所述第二密钥生成单元,生成乘法分享的第二私钥分量DB;
第一密钥生成单元和第二密钥生成单元,基于SM2算法的安全计算协议计算得到公钥Ppub;
所述第一密钥变换单元和第二密钥变换单元,将乘法分享的第一私钥分量DA和第二私钥分量DB,变换为加法分享的第一私钥变换分量D1和第二私钥变换分量D2,满足如下变换关系,D1+D2=DA·DBmod n,n为素数,是椭圆曲线E的基点G的阶;
所述第一协同签名单元,接收第一密钥变换单元的得到的第一私钥变换分量D1,所述第二协同签名单元,接收第二密钥变换单元的得到的第二私钥变换分量D2;
第一协同签名单元和第二协同签名单元,基于SM2算法的协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。
27.根据权利要求26所述的基于SM2算法的协同签名装置,其特征在于,所述第一密钥变换单元和第二密钥变换单元,采用基于茫然传输协议实现私钥分量变换;
第一通信方和第二通信方在椭圆曲线E上随机选取一个群元素P作为公共参数;
所述第一密钥变换单元,接收第二密钥变换单元发送的混淆因子集合{Ui},
所述第一密钥变换单元,根据随机参数VaP和混淆因子集合{Ui},对随机数xi,i∈{1,2,…,l}与第一私钥分量DA形成的第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},j∈{1,2,…,l},向第二密钥变换单元发送随机参数Va和加密结果集合{<Xj,X′j>};
所述第二密钥变换单元,基于SM2算法计算得到混淆因子集合{Ui}={U1,U2,...,Ul},向第一密钥单元发送混淆因子集合{Ui},所述混淆因子集合{Ui}中每一个元素Ui与第二私钥分量DB中的1个比特相对应;
28.根据权利要求27所述的基于SM2算法的协同签名装置,其特征在于,所述混淆因子集合{Ui},由第二密钥变换单元通过以下方式获得:
选择l个随机数m1,m2,...,mi,...ml,l为第二私钥分量DB的比特长度;
从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
根据比特bi的值来决定计算Ui的计算公式:
若bi=0,计算Ui=[mi]G;
若bi=1,计算Ui=P-[mi]G;
其中,G是椭圆曲线E的基点,P是协商选取的公共参数,[mi]G代表基点G的mi倍点。
36.根据权利要求26所述的基于SM2算法的协同签名装置,其特征在于:
所述第一协同签名单元,选择第一随机数,将计算获得的第一中间结果和第一椭圆曲线群元素发送给第二协同签名单元;
所述第二协同签名单元,接收第一中间结果和第一椭圆曲线群元素,选择第二随机数,将计算获得的第二中间结果和第二部分签名结果r发送给第一协同签名单元;
第一协同签名单元,接收第二中间结果和第二部分签名结果r,计算得到第一部分签名结果s,输出完整的数字签名结果(r,s);
其中,第一中间结果由第一协同签名单元并根据第一随机数和第一私钥变换分量D1计算得到;第一椭圆曲线群元素由第一协同签名单元根据第一随机数和公钥Ppub计算得到;
第二部分签名结果r由第二协同签名单元通过以下方式获得:根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,y1)的x轴坐标;基于SM2算法,根据用户的可辨别标识计算出杂凑值ZA,并获取待签名原文M作为输入,根据杂凑值ZA和待签名原文M,计算得到消息摘要e;根据消息摘要e和第二椭圆曲线群元素(x1,y1),计算得到第二部分签名结果r;
第二中间结果由第二协同签名单元根据第一中间结果、第二随机数,第二部分签名结果r和第二私钥变换分量D2计算得到;
第一部分签名结果s由第一协同签名单元根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1计算得到。
37.根据权利要求26所述的基于SM2算法的协同签名装置,其特征在于:
所述第一协同签名单元,选择第一随机数,将计算获得的第一椭圆曲线群元素发送给第二协同签名单元;
所述第二协同签名单元,接收第一椭圆曲线群元素,选择第二随机数,将计算获得的第二中间结果和第二部分签名结果r发送给第一协同签名单元;
第一协同签名单元,接收第二中间结果和第二部分签名结果r,计算得到第一部分签名结果s,输出完整的数字签名结果(r,s);
其中,第一椭圆曲线群元素由第一协同签名单元根据第一随机数和公钥Ppub计算得到;
第二部分签名结果r由第二协同签名单元通过以下方式获得:根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,y1)的x轴坐标;基于SM2算法,根据用户的可辨别标识计算出杂凑值ZA,并获取待签名原文M作为输入,根据杂凑值ZA和待签名原文M,计算得到消息摘要e;根据消息摘要e和第二椭圆曲线群元素(x1,y1),计算得到第二部分签名结果r;
第二中间结果由第二协同签名单元根据第二随机数,第二部分签名结果r和第二私钥变换分量D2计算得到;
第一部分签名结果s由第一协同签名单元根据第一随机数、第二中间结果、第二部分签名结果r和第一私钥变换分量D1计算得到。
38.根据权利要求36或权利要求37所述的基于SM2算法的协同签名装置,其特征在于,第一通信方是客户端,第二通信方是服务器。
39.一种基于SM2算法的协同签名系统,包括:
存储器,用于存储可由处理器执行的指令;
处理器,用于执行所述指令以实现如权利要求1-25任一项所述的方法。
40.一种计算机可读介质,其上存储有计算机指令,其中当计算机指令被处理器执行时,执行如权利要求1-25任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911376293.2A CN111130804B (zh) | 2019-12-27 | 2019-12-27 | 一种基于sm2算法的协同签名方法及装置、系统、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911376293.2A CN111130804B (zh) | 2019-12-27 | 2019-12-27 | 一种基于sm2算法的协同签名方法及装置、系统、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111130804A true CN111130804A (zh) | 2020-05-08 |
CN111130804B CN111130804B (zh) | 2022-09-06 |
Family
ID=70503899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911376293.2A Active CN111130804B (zh) | 2019-12-27 | 2019-12-27 | 一种基于sm2算法的协同签名方法及装置、系统、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111130804B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111600717A (zh) * | 2020-05-12 | 2020-08-28 | 北京海益同展信息科技有限公司 | 基于sm2的解密方法、系统、电子设备及存储介质 |
CN111756537A (zh) * | 2020-07-13 | 2020-10-09 | 广州安研信息科技有限公司 | 基于sm2标准的两方协同解密方法、系统及存储介质 |
CN111934877A (zh) * | 2020-06-23 | 2020-11-13 | 中国科学院信息工程研究所 | 一种sm2协同门限签名方法及电子装置 |
CN112613882A (zh) * | 2020-12-29 | 2021-04-06 | 成都知道创宇信息技术有限公司 | 一种分布式签名系统及管理方法 |
CN113468580A (zh) * | 2021-07-23 | 2021-10-01 | 建信金融科技有限责任公司 | 多方协同签名的方法和系统 |
CN113630240A (zh) * | 2020-05-09 | 2021-11-09 | 成都天瑞芯安科技有限公司 | 拟态安全密码计算模型 |
CN114091001A (zh) * | 2022-01-17 | 2022-02-25 | 南京易科腾信息技术有限公司 | 协同认证方法、系统、装置及存储介质 |
CN116318688A (zh) * | 2023-05-24 | 2023-06-23 | 北京信安世纪科技股份有限公司 | 协同签名方法、设备和存储介质 |
CN116827554A (zh) * | 2023-07-24 | 2023-09-29 | 三未信安科技股份有限公司 | 一种基于区块链节点多路协方的策略化方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
CN107483212A (zh) * | 2017-08-15 | 2017-12-15 | 武汉信安珞珈科技有限公司 | 一种双方协作生成数字签名的方法 |
CN108667625A (zh) * | 2018-07-19 | 2018-10-16 | 数安时代科技股份有限公司 | 协同sm2的数字签名方法 |
CN108667626A (zh) * | 2018-07-20 | 2018-10-16 | 陕西师范大学 | 安全的两方协作sm2签名方法 |
CN109088726A (zh) * | 2018-07-19 | 2018-12-25 | 郑州信大捷安信息技术股份有限公司 | 基于sm2算法的通信双方协同签名及解密方法和系统 |
CN109474422A (zh) * | 2018-11-19 | 2019-03-15 | 武汉大学 | 一种多方协同产生sm2数字签名的方法 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
US20190273620A1 (en) * | 2017-07-18 | 2019-09-05 | Zhongan Information Technology Service Co., Ltd. | Data sharing method and data sharing system |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
-
2019
- 2019-12-27 CN CN201911376293.2A patent/CN111130804B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与系统 |
US20190273620A1 (en) * | 2017-07-18 | 2019-09-05 | Zhongan Information Technology Service Co., Ltd. | Data sharing method and data sharing system |
CN107483212A (zh) * | 2017-08-15 | 2017-12-15 | 武汉信安珞珈科技有限公司 | 一种双方协作生成数字签名的方法 |
CN108667625A (zh) * | 2018-07-19 | 2018-10-16 | 数安时代科技股份有限公司 | 协同sm2的数字签名方法 |
CN109088726A (zh) * | 2018-07-19 | 2018-12-25 | 郑州信大捷安信息技术股份有限公司 | 基于sm2算法的通信双方协同签名及解密方法和系统 |
CN108667626A (zh) * | 2018-07-20 | 2018-10-16 | 陕西师范大学 | 安全的两方协作sm2签名方法 |
CN109474422A (zh) * | 2018-11-19 | 2019-03-15 | 武汉大学 | 一种多方协同产生sm2数字签名的方法 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及系统 |
CN110365487A (zh) * | 2019-07-19 | 2019-10-22 | 北京向芯力科技有限公司 | 一种基于sm2算法的协同签名方法与装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113630240B (zh) * | 2020-05-09 | 2024-04-26 | 成都天瑞芯安科技有限公司 | 一种拟态安全密码计算系统 |
CN113630240A (zh) * | 2020-05-09 | 2021-11-09 | 成都天瑞芯安科技有限公司 | 拟态安全密码计算模型 |
CN111600717A (zh) * | 2020-05-12 | 2020-08-28 | 北京海益同展信息科技有限公司 | 基于sm2的解密方法、系统、电子设备及存储介质 |
CN111600717B (zh) * | 2020-05-12 | 2024-01-12 | 京东科技信息技术有限公司 | 基于sm2的解密方法、系统、电子设备及存储介质 |
CN111934877B (zh) * | 2020-06-23 | 2023-07-18 | 中国科学院信息工程研究所 | 一种sm2协同门限签名方法、存储介质及电子装置 |
CN111934877A (zh) * | 2020-06-23 | 2020-11-13 | 中国科学院信息工程研究所 | 一种sm2协同门限签名方法及电子装置 |
CN111756537A (zh) * | 2020-07-13 | 2020-10-09 | 广州安研信息科技有限公司 | 基于sm2标准的两方协同解密方法、系统及存储介质 |
CN111756537B (zh) * | 2020-07-13 | 2022-11-29 | 广州安研信息科技有限公司 | 基于sm2标准的两方协同解密方法、系统及存储介质 |
CN112613882A (zh) * | 2020-12-29 | 2021-04-06 | 成都知道创宇信息技术有限公司 | 一种分布式签名系统及管理方法 |
CN113468580A (zh) * | 2021-07-23 | 2021-10-01 | 建信金融科技有限责任公司 | 多方协同签名的方法和系统 |
CN114091001A (zh) * | 2022-01-17 | 2022-02-25 | 南京易科腾信息技术有限公司 | 协同认证方法、系统、装置及存储介质 |
CN116318688A (zh) * | 2023-05-24 | 2023-06-23 | 北京信安世纪科技股份有限公司 | 协同签名方法、设备和存储介质 |
CN116318688B (zh) * | 2023-05-24 | 2023-08-15 | 北京信安世纪科技股份有限公司 | 协同签名方法、设备和存储介质 |
CN116827554A (zh) * | 2023-07-24 | 2023-09-29 | 三未信安科技股份有限公司 | 一种基于区块链节点多路协方的策略化方法及系统 |
CN116827554B (zh) * | 2023-07-24 | 2024-04-09 | 三未信安科技股份有限公司 | 一种基于区块链节点多路协方的策略化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111130804B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111130804B (zh) | 一种基于sm2算法的协同签名方法及装置、系统、介质 | |
CN111049650B (zh) | 一种基于sm2算法的协同解密方法及装置、系统、介质 | |
CN111162906B (zh) | 一种基于茫然传输算法的协同秘密分享方法及装置、系统、介质 | |
CN111066285B (zh) | 基于sm2签名恢复公钥的方法 | |
CN110383754B (zh) | 基于椭圆曲线同源的密钥协商协议 | |
CN110247757B (zh) | 基于国密算法的区块链处理方法、装置及系统 | |
Zhou et al. | ExpSOS: Secure and verifiable outsourcing of exponentiation operations for mobile cloud computing | |
CN104270249B (zh) | 一种从无证书环境到基于身份环境的签密方法 | |
CN107395368B (zh) | 无介质环境中的数字签名方法及解封装方法与解密方法 | |
CA2855099C (en) | Key agreement protocol for generating a shared secret key for use by a pair of entities in a data communication system | |
CN109309569A (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
CN105812141A (zh) | 一种面向外包加密数据的可验证交集运算方法及系统 | |
JP2007510947A (ja) | 多数当事者の効率的な乗算のための方法及び装置 | |
US20150288527A1 (en) | Verifiable Implicit Certificates | |
CN107425971B (zh) | 无证书的数据加/解密方法和装置、终端 | |
WO2009026771A1 (fr) | Procédé pour négocier une clé, chiffrer et déchiffrer des informations, signer et authentifier les informations | |
US10630476B1 (en) | Obtaining keys from broadcasters in supersingular isogeny-based cryptosystems | |
CN112118113A (zh) | 一种基于sm2算法的多方协同群签名方法及装置、系统、介质 | |
TW202232913A (zh) | 共享金鑰產生技術 | |
US20160352689A1 (en) | Key agreement protocol | |
CN111582867A (zh) | 一种协同签名和解密方法、装置、电子设备和存储介质 | |
CN108768634B (zh) | 可验证加密签名生成方法和系统 | |
CN117155615A (zh) | 数据加密传输方法、系统、电子设备及存储介质 | |
CN111756537A (zh) | 基于sm2标准的两方协同解密方法、系统及存储介质 | |
CN114257374B (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 |