一种基于SM2算法的协同签名方法及装置、系统、介质制造方法及图纸

技术编号:24102716 阅读:99 留言:0更新日期:2020-05-09 13:51
本发明专利技术涉及数字签名技术领域,更具体的说,涉及一种基于SM2算法的协同签名方法及装置、系统、介质。本方法包括以下步骤:S1第一通信方和第二通信方分别生成第一私钥分量D

A cooperative signature method based on SM2 algorithm and its device, system and medium

【技术实现步骤摘要】
一种基于SM2算法的协同签名方法及装置、系统、介质
本专利技术涉及数字签名
,更具体的说,涉及一种基于SM2算法的协同签名方法及装置、系统、介质。
技术介绍
公钥密码算法已经在电子商务、电子政务、移动警务、移动办公得到广泛使用,在车联网、智能医疗系统、智能家居系统等物联网应用以及云计算系统中也发挥了越来越重要的作用。在公钥密码体制中,保证私钥的安全性是一个非常重要的问题。用户的私钥通常需要在专门的硬件安全模块(HSM,HardwareSecurityModule)中安全存储和使用,私钥不能从密码硬件中导出。常见的HSM包括USBKEY(U盾)、智能卡、TF卡(Trans-flashCard,闪存卡)、密码芯片等。随着互联网技术的发展,移动智能终端的普及率越来越高,随之而来的是安全问题,需要解决移动端的身份认证和数字签名。智能移动终端通常并没有配置专用的硬件密码模块,只能依赖于软件密码模块来完成密码运算,私钥则需要存储在用户终端本地存储介质中。然而智能移动终端的防护能力较弱,虽然存储私钥时可以使用加密、PIN码(Person本文档来自技高网...

【技术保护点】
1.一种基于SM2算法的协同签名方法,其特征在于,包括以下步骤:/nS1第一通信方和第二通信方分别生成第一私钥分量D

【技术特征摘要】
1.一种基于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算法协同签名协议,交换中间结果和/或椭圆曲线群元素,协同生成数字签名。


2.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S1中,基于SM2算法的安全计算协议,进一步包括以下步骤:
S111第一通信方选择一个随机数DA∈[1,…,n-1],作为第一私钥分量DA;
S112第二通信方选择一个随机数DB∈[1,…,n-1],作为第二私钥分量DB;
S113第一通信方根据第一私钥分量DA,计算第一公钥参数P1,并将第一公钥参数P1发送给第二通信方,其中
S114第二通信方根据接收的第一公钥参数P1和第二私钥分量DB,生成双方共同的公钥Ppub,其中


3.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S1中,得到双方共同的公钥Ppub之后,进一步包括以下步骤:
验证公钥Ppub是否有效。


4.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S1中,得到双方共同的公钥Ppub之后,进一步包括以下步骤:
将生成的公钥Ppub发送公开。


5.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S1中,基于SM2算法的安全计算协议,进一步包括以下步骤:
S121第一通信方选择一个随机数DA∈[1,…,n-1],作为第一私钥分量DA;
S122第二通信方选择一个随机数DB∈[1,…,n-1],作为第二私钥分量DB;
S123第一通信方根据第一私钥分量DA,计算第一公钥参数P1,并将第一公钥参数P1发送给第二通信方,其中
S124第二通信方根据第二私钥分量DB,计算第二公钥参数P2,并将第二公钥参数P2发送给第一通信方,其中
S125第一通信方和第二通信方分别独立计算得到公钥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};
第一通信方计算得到第一私钥变换分量D1:
第一通信方将随机参数Va和加密结果集合{<Xj,X′j>}发送给第二通信方;
S24第二通信方接收随机参数Va和加密结果集合{<Xj,X′j>};
根据随机参数Va和加密结果集合{<Xj,X′j>},计算分享参数集合{ti},所述分享参数集合{ti}中每一个元素ti与第二私钥分量DB中的1个比特相对应;
计算得到第二私钥变换分量D2:第一私钥变换分量D1和第二私钥变换分量D2,满足如下变换关系,D1+D2=DA·DBmodn。


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倍点。


9.根据权利要求6所述的基于SM2算法的协同签名方法,其特征在于,所述步骤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的计算公式为:





10.根据权利要求9所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:





11.根据权利要求10所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2411第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2412第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
若bi=1,计算


12.根据权利要求9所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:





13.根据权利要求12所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2421第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2422第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算
若bi=1,计算


14.根据权利要求9所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S23中,第一集合{<sj,s′j>}的每一个元素分别加密计算,得到加密结果集合{<Xj,X′j>},第j个元素<Xj,X′j>的计算公式:





15.根据权利要求14所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S24中,分享参数集合{ti}的计算方法,进一步包括以下步骤:
S2431第二通信方从第二私钥分量DB中提取每一个比特bi∈{0,1},i∈{1,2,…,l};
S2432第二通信方根据比特bi的值来决定计算分享参数集合{ti}的计算公式:
若bi=0,计算:
若bi=1,计算:


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;
所述第一椭圆曲线群元素包括R1和R′1,
步骤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+x1modn;
所述第二中间结果包括v1和v2,
步骤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+x1modn;
所述第二中间结果包括v1和v2,
步骤S33中,所述第一部分签名结果s=r(D1-1)+v2+(D1+v1)k1+k′1。


20.根据权利要求1所述的基于SM2算法的协同签名方法,其特征在于,所述步骤S3中,基于SM2算法协同签名协议,交换中间结果和/或椭圆曲线群元素,进一步包括以下步骤:
S31第一通信方选择第一随机数;
根据第一随机数和公钥Ppub,计算得到第一椭圆曲线群元素;
将第一椭圆曲线群元素发送给第二通信方;
S32第二通信方接收第一椭圆曲线群元素;
选择第二随机数;
根据第二随机数、第一椭圆曲线群元素和公钥Ppub,计算得到第二椭圆曲线群元素(x1,y1),其中x1是第二椭圆曲线群元素(x1,...

【专利技术属性】
技术研发人员:崔久强陈晓曈林翊沈昊戴业琪
申请(专利权)人:上海市数字证书认证中心有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1