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

技术编号:26797378 阅读:28 留言:0更新日期:2020-12-22 17:14
本发明专利技术涉及数字签名技术领域,更具体的说,涉及一种基于SM2算法的多方协同群签名方法及装置、系统、介质。本方法包括:S1、小组成员,向可信中心注册组成签名群组;S2、小组成员,分别生成签名私钥分量,基于SM2算法的安全计算协议,与可信中心通信生成共同的签名公钥;S3、签名发起者发送签名请求,每个小组成员生成临时公钥和临时私钥,并将临时公钥发送给可信中心;S4、可信中心,依次与小组成员轮询通信,小组成员利用临时私钥和签名私钥分量,基于SM2算法与可信中心协同签名,计算得到r项签名分量和s项签名分量;S5、可信中心,输出完整的数字签名结果(r,s)。本发明专利技术签名过程每个小组成员公平参与,通过可信中心有效避免参与者的冒名顶替。

【技术实现步骤摘要】
一种基于SM2算法的多方协同群签名方法及装置、系统、介质
本专利技术涉及数字签名
,更具体的说,涉及一种基于SM2算法的多方协同群签名方法及装置、系统、介质。
技术介绍
在信息安全方面,数字签名是非常重要的一部分。安全的数字签名在电子公文、电子合同等应用中确定对方身份,是信息真实的基础。随着密码技术和计算技术的发展,目前常用的1024位RSA算法面临严重的安全威胁。国家密码局发在2010年12月17日发布了SM2椭圆曲线公钥密码算法。相对于RSA算法,SM2在安全性、性能上都更具有优势。在公钥密码体制中,保证私钥的安全性是一个非常重要的问题。用户的私钥通常需要在专门的硬件安全模块(HSM,HardwareSecurityModule)中安全存储和使用,私钥不能从密码硬件中导出。常见的HSM包括USBKEY(U盾)、智能卡、TF卡(Trans-flashCard,闪存卡)、密码芯片等。为了提高私钥的安全性,可以将私钥进行分割,由多成员协同进行签名,多人同时在场时秘密才能得以恢复,同时也满足一份文件多人签署生效的应用场景需求。针对此类问题,常见的解决方法是采用门限秘密共享方案,将私钥被分割成t个子私钥,并安全地分给t个参与者掌管,这些t个参与者中的k(k≤t)个及以上所构成的子集可以重构私钥,少于k个参与者则无法获得完整私钥。这会存在以下两个问题:一方面、恢复出完整私钥之后,拥有完整私钥的一方,就可以不经由其他成员发布有效签名;另一方面、小组成员之间不是完全公平参与,且存在参与者被中途冒名顶替的可能。
技术实现思路
本专利技术的目的是提供一种基于SM2算法的多方协同群签名方法及装置、系统、介质,解决现有技术中多个参与方之间协同完成数字签名的安全性低的问题。为了实现上述目的,本专利技术提供了一种基于SM2算法的多方协同群签名方法,其特征在于,包括以下步骤:S1、小组成员,向可信中心注册组成签名群组;S2、小组成员,分别生成签名私钥分量,基于SM2算法的安全计算协议,与可信中心通信生成共同的签名公钥;S3、签名发起者发送签名请求,每个小组成员生成临时公钥和临时私钥,并将临时公钥发送给可信中心;S4、可信中心,依次与小组成员轮询通信,小组成员利用临时私钥和签名私钥分量,基于SM2算法与可信中心协同签名,计算得到r项签名分量和s项签名分量;S5、可信中心,输出完整的数字签名结果(r,s)。在一实施例中,S21、可信中心,设置临时点Ptemp,在椭圆曲线上选取基点G,作为临时点Ptemp的初始值;在签名群组中任意选取一个小组成员Ui,将临时点Ptemp发送给小组成员Ui;S22、小组成员Ui,选择生成一个随机数di,作为小组成员Ui的签名私钥分量,其中di∈[1,n-1],n为椭圆曲线的阶;根据签名私钥分量di以及临时点Ptemp,计算生成公开秘密Pi=di-1[*]Ptemp,并将公开秘密Pi发送至可信中心;S23、可信中心,接收到小组成员Ui发送的公开秘密Pi后,更新临时点Ptemp=Pi;S24、可信中心,依次与每一个小组成员轮询通信,重复上述步骤计算得到临时点m为小组成员数;S25、可信中心,根据临时点与基点,计算生成签名公钥PA,签名公钥的表达式为:在一实施例中,所述步骤S3,进一步包括以下步骤:可信中心将临时公钥与小组成员关联存储。在一实施例中,所述步骤S4,进一步包括:S41、每个小组成员,接收可信中心发送的缓存项,根据临时私钥计算更新缓存项后发送给可信中心,可信中心根据最后的缓存项计算得到r项签名分量;S42、每个小组成员,接收可信中心发送的s项签名临时分量,根据临时私钥和签名私钥分量,计算更新s项签名临时分量后发送给可信中心,可信中心根据最后的s项签名临时分量计算得到s项签名分量。在一实施例中,所述步骤S41,进一步包括以下步骤:S411、可信中心,设置缓存项rtemp_pt,在椭圆曲线上选取基点G,作为缓存项rtemp_pt的初始值;在群组记录信息中任意选取一个小组成员Ui,将缓存项rtemp_pt发送给小组成员Ui;S412、小组成员Ui,使用临时私钥ki,其中,ki∈[1,n-1],计算生成公开秘密rui=ki[*]rtemp_pt,并将公开秘密rui发送给可信中心;S413、可信中心,接收到小组成员Ui发送的公开秘密rui后,更新缓存项rtemp_pt=rui;S414、可信中心,重复上述步骤,依次与每一个小组成员轮询通信,计算得到缓存项rtemp_pt=k1*k2*…*km[*]G,m为小组成员数;S415、可信中心,根据临时私钥km+1,计算生成公开秘密rtemp_pt′=rtemp_pt[+]km+1[*G,作为椭圆曲线参数(x1,y1);S416、可信中心,根据信息摘要e和椭圆曲线参数(x1,y1),计算得到r项签名分量,r=(e+x1)modn。在一实施例中,所述步骤S416中的信息摘要e,通过以下步骤计算得到:根据SM2算法,计算杂凑值ZA=Hv(ENTLA||IDA||a||b||xG||yG||xA||yA);计算待签名信息摘要e=Hv(ZA||M);其中,IDA为用户的可辨别标识;entlenA为IDA的长度,ENTLA是由整数entlenA转换而成的两个字节;a、b为椭圆曲线方程参数;xG、yG为基点G的坐标;xA、yA为签名公钥PA的坐标;M为待签名原文。在一实施例中,所述步骤S42,进一步包括以下步骤:S421、可信中心,生成第一s项签名临时分量和第二s项签名临时分量,设置第一s项签名临时分量对应的初始值s2=1,第二s项签名临时分量对应的初始值s3=(r+km+1)modn;在签名群组中任意选取一个小组成员Ui,将第一s项签名临时分量,第二s项签名临时分量发给小组成员Ui;S422、小组成员Ui,使用签名私钥分量di和临时私钥ki,计算并更新第一s项签名临时分量s2_ui=di*ki*s2,第二s项签名临时分量s3_ui=di*s3,并发送至可信中心;S423、可信中心,依次与每一个小组成员轮询通信,重复上述步骤计算并更新第一s项签名临时分量和第二s项签名临时分量;S424、可信中心,接收最后一个小组成员发送的第一s项签名临时分量s2_um和第二s项签名临时分量s3_um,计算得到s项签名分量:s=s2_um+s3_um-r。在一实施例中,所述步骤S42中,可信中心与小组成员之间采用加密方式进行通信。在一实施例中,所述步骤S421、步骤S422中,可信中心与第一个小组成员Ui采用加密方式进行通信,进一步包括以下步骤:可信中心,使用小组成员Ui的临时公钥Pki,对第一s项签名临时分量s2,第二s项签本文档来自技高网
...

【技术保护点】
1.一种基于SM2算法的多方协同群签名方法,其特征在于,包括以下步骤:/nS1、小组成员,向可信中心注册组成签名群组;/nS2、小组成员,分别生成签名私钥分量,基于SM2算法的安全计算协议,与可信中心通信生成共同的签名公钥;/nS3、签名发起者发送签名请求,每个小组成员生成临时公钥和临时私钥,并将临时公钥发送给可信中心;/nS4、可信中心,依次与小组成员轮询通信,小组成员利用临时私钥和签名私钥分量,基于SM2算法与可信中心协同签名,计算得到r项签名分量和s项签名分量;/nS5、可信中心,输出完整的数字签名结果(r,s)。/n

【技术特征摘要】
1.一种基于SM2算法的多方协同群签名方法,其特征在于,包括以下步骤:
S1、小组成员,向可信中心注册组成签名群组;
S2、小组成员,分别生成签名私钥分量,基于SM2算法的安全计算协议,与可信中心通信生成共同的签名公钥;
S3、签名发起者发送签名请求,每个小组成员生成临时公钥和临时私钥,并将临时公钥发送给可信中心;
S4、可信中心,依次与小组成员轮询通信,小组成员利用临时私钥和签名私钥分量,基于SM2算法与可信中心协同签名,计算得到r项签名分量和s项签名分量;
S5、可信中心,输出完整的数字签名结果(r,s)。


2.根据权利要求1所述的基于SM2算法的多方协同群签名方法,其特征在于,所述步骤S2,进一步包括以下步骤:
S21、可信中心,设置临时点Ptemp,在椭圆曲线上选取基点G,作为临时点Ptemp的初始值;
在签名群组中任意选取一个小组成员Ui,将临时点Ptemp发送给小组成员Ui;
S22、小组成员Ui,选择生成一个随机数di,作为小组成员Ui的签名私钥分量,其中di∈[1,n-1],n为椭圆曲线的阶;
根据签名私钥分量di以及临时点Ptemp,计算生成公开秘密Pi=di-1[*]Ptemp,并将公开秘密Pi发送至可信中心;
S23、可信中心,接收到小组成员Ui发送的公开秘密Pi后,更新临时点Ptemp=Pi;
S24、可信中心,依次与每一个小组成员轮询通信,重复上述步骤计算得到临时点m为小组成员数;
S25、可信中心,根据临时点与基点,计算生成签名公钥PA,签名公钥的表达式为:





3.根据权利要求1所述的基于SM2算法的多方协同群签名方法,其特征在于,所述步骤S3,进一步包括以下步骤:可信中心将临时公钥与小组成员关联存储。


4.根据权利要求1所述的基于SM2算法的多方协同群签名方法,其特征在于,所述步骤S4,进一步包括:
S41、每个小组成员,接收可信中心发送的缓存项,根据临时私钥计算更新缓存项后发送给可信中心,可信中心根据最后的缓存项计算得到r项签名分量;
S42、每个小组成员,接收可信中心发送的s项签名临时分量,根据临时私钥和签名私钥分量,计算更新s项签名临时分量后发送给可信中心,可信中心根据最后的s项签名临时分量计算得到s项签名分量。


5.根据权利要求4所述的基于SM2算法的多方协同群签名方法,其特征在于,所述步骤S41,进一步包括以下步骤:
S411、可信中心,设置缓存项rtemp_pt,在椭圆曲线上选取基点G,作为缓存项rtemp_pt的初始值;
在群组记录信息中任意选取一个小组成员Ui,将缓存项rtemp_pt发送给小组成员Ui;
S412、小组成员Ui,使用临时私钥ki,其中,ki∈[1,n-1],计算生成公开秘密rui=ki[*]rtemp_pt,并将公开秘密rui发送给可信中心;
S413、可信中心,接收到小组成员Ui发送的公开秘密rui后,更新缓存项rtemp_pt=rui;
S414、可信中心,重复上述步骤,依次与每一个小组成员轮询通信,计算得到缓存项rtemp_pt=k1*k2*…*km[*]G,m为小组成员数;
S415、可信中心,根据临时私钥km+1,计算生成公开秘密作为椭圆曲线参数(x1,y1);
S416、可信中心,根据信息摘要e和椭圆曲线参数(x1,y1),计算得到r项签名分量,r=(e+x1)modn。


6.根据权利要求5所述的基于SM2算法的多方协同群签名方法,其特征在于,所述步骤S416中的信息摘要e,通过以下步骤计算得到:
根据SM2算法,计算杂凑值ZA=Hv(ENTLA||IDA||a||b||xG||yG||xA||yA);
计算待签名信息摘要e=Hv(ZA||M);
其中,IDA为用户的可辨别标识;
entlenA为IDA的长度,ENTLA是由整数entlenA转换而成的两个字节;
a、b为椭圆曲线方程参数;
xG、yG为基点G的坐标;
xA、yA为签名公钥PA的坐标;
M为待签名原文。


7.根据权利要求1所述的基于SM2算法的多方协同群签名方法,其特征在于,所述步骤S42,进一步包括以下步骤:
S421、可信中心,生成第一s项签名临时分量和第二s项签名临时分量,设置第一s项签名临时分量对应的初始值s2=1,第二s项签名临时分量对应的初始值s3=(r+km+1)modn;
在签名群组中任意选取一个小组成员Ui,将第一s项签名临时分量,第二s项签名临时分量发给小组成员Ui;
S422、小组成员Ui,使用签名私钥分量di和临时私钥ki,计算并更新第一s项签名临时分量s2_ui=di*ki*s2,第二s项签名临时分量s3_ui=di*s3,并发送至可信中心;
S423、可信中心,依次与每一个小组成员轮询通信,重复上述步骤计算并更新第一s项签名临时分量和第二s项签名临时分量;
S424、可信中心,接收最后一个小组成员发送的第一s项签名临时分量s2_um和第二s项签名临时分量s3_um,计算得到s项签名分量:
s=s2_um+s3_um-r。


8.根据权利要求7所述的基于SM2算法的多方协同群签名方法,其特征在于:所述步骤S42中,可信中心与小组成员之间采用加密方式进行通信。


9.根据权利要求8所述的基于SM2算法的多方协同群签名方法,其特征在于,所述步骤S421、步骤S422中,可信中心与第一个小组成员Ui采用加密方式进行通信,进一步包括以下步骤:
可信中心,使用小组成员Ui的临时公钥Pki,对第一s项签名临时分量s2,第二s项签名临时分量s3进行加密,将加密后的第一s项签名临时分量s′2,第二s项签名临时分量s′3发给小组成员Ui;
小组成员Ui,使用临时私钥ki对加密后的第...

【专利技术属性】
技术研发人员:崔久强孙欣冯晔王玉林
申请(专利权)人:上海市数字证书认证中心有限公司
类型:发明
国别省市:上海;31

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

1