The invention relates to a device and a system for collaborative SM2 algorithm signature and decryption method, SM2 algorithm, which is implemented from the first communication side collaborative signature method, which comprises the following steps: according to preset password hash algorithm, generating the message the message digest; receiving second communication first and the first public key parameters based on elliptic curve random number the feedback element of a group; according to the message digest and the first elliptic curve group elements, generating a first partial signature; the first part signature operation mode based on intermediate results and will generate confusion, confusion intermediate result is transmitted to the second communication; receiving second communication parties according to the confusion of the intermediate results intermediate feedback signature, according to the middle the first part of the signature generation and signature, the second part of the signature; according to the first part and the second part signature signature, too To the full SM2 digital signature.
【技术实现步骤摘要】
SM2算法协同签名及解密方法、装置与系统
本专利技术涉及密码学
,特别是涉及一种SM2算法协同签名及解密方法、装置与系统。
技术介绍
椭圆曲线密码(简称ECC)是一种基于在有限域上定义的椭圆曲线的数学难题的公开密钥体制。SM2算法是指由国家密码管理局制定的《GM/T0003-2012SM2椭圆曲线公钥密码算法》标准中规定的椭圆曲线公钥密码算法,是ECC密码体制的一种具体算法。为了提高云计算环境中的私钥的安全性,传统技术提出在通信双方分别存储部分私钥,两方联合才能对消息进行签名或解密等操作,通信双方均无法获取到对方私钥的任何信息,因此攻击者在入侵其中任何一方的情况下,都不能伪造签名或解密密文。在实现过程中,专利技术人发现传统技术中至少存在如下问题:传统技术将待签名消息的消息摘要发送给另一通信方,不利于保护用户隐私。同时,如果恶意攻击者通过控制信道来替换消息摘要,通信双方会根据被篡改的消息摘要来产生数字签名并输出,使得攻击者可以伪造签名。
技术实现思路
基于此,有必要针对传统技术无法保护用户隐私、抵抗恶意攻击的问题,提供一种SM2算法协同签名及解密方法、装置与系统。 ...
【技术保护点】
一种SM2算法协同签名方法,其特征在于,包括以下步骤:根据预设的密码杂凑算法,生成待签名消息的消息摘要;接收第二通信方基于第一公钥参数以及选取的随机数反馈的第一椭圆曲线群元素;根据所述消息摘要和所述第一椭圆曲线群元素,生成第一部分签名;基于所述第一部分签名进行模运算,生成混淆中间结果,并将所述混淆中间结果传输给所述第二通信方;在接收到所述第二通信方根据所述混淆中间结果反馈的中间签名时,根据所述中间签名和所述第一部分签名,生成第二部分签名;根据所述第一部分签名和所述第二部分签名,得到完整的SM2数字签名。
【技术特征摘要】
1.一种SM2算法协同签名方法,其特征在于,包括以下步骤:根据预设的密码杂凑算法,生成待签名消息的消息摘要;接收第二通信方基于第一公钥参数以及选取的随机数反馈的第一椭圆曲线群元素;根据所述消息摘要和所述第一椭圆曲线群元素,生成第一部分签名;基于所述第一部分签名进行模运算,生成混淆中间结果,并将所述混淆中间结果传输给所述第二通信方;在接收到所述第二通信方根据所述混淆中间结果反馈的中间签名时,根据所述中间签名和所述第一部分签名,生成第二部分签名;根据所述第一部分签名和所述第二部分签名,得到完整的SM2数字签名。2.根据权利要求1所述的SM2算法协同签名方法,其特征在于,所述预设的密码杂凑算法为SM3算法;所述第一椭圆曲线群元素包括椭圆曲线群元素R1和椭圆曲线群元素R2;根据所述消息摘要和所述第一椭圆曲线群元素,生成第一部分签名的步骤包括:分别选取随机数k3、随机数k4,基于以下公式生成第二椭圆曲线群元素(x1,y1):(x1,y1)=[k3]R1+R2+[k4]G其中,k3∈[1,…,n-1];k4∈[1,…,n-1];G为椭圆曲线E(Fq)上的基点;n为椭圆曲线E(Fq)上基点G的阶;x1为所述第二椭圆曲线群元素(x1,y1)的x轴坐标,y1为所述第二椭圆曲线群元素(x1,y1)的y轴坐标;根据所述第二椭圆曲线群元素(x1,y1)和所述消息摘要,基于以下公式生成所述第一部分签名:r=e+x1(modn)其中,e为所述消息摘要;r为所述第一部分签名;modn为模n运算。3.根据权利要求2所述的SM2算法协同签名方法,其特征在于,在根据所述消息摘要和所述第一椭圆曲线群元素,生成第一部分签名的步骤之前还包括步骤:根据所述椭圆曲线群元素R1,基于以下公式得到点乘结果S1:S1=[h]R1其中,h为n的余因子;在检测到所述点乘结果S1为椭圆曲线E(Fq)的无穷远点时,接收所述第二通信方根据所述第一公钥参数以及再次选取的随机数重新反馈的第一椭圆曲线群元素;或根据所述椭圆曲线群元素R2,基于以下公式得到点乘结果S2:S2=[h]R2其中,h为n的余因子;在检测到所述点乘结果S2为椭圆曲线E(Fq)的无穷远点时,接收所述第二通信方根据所述第一公钥参数以及再次选取的随机数重新反馈的第一椭圆曲线群元素。4.根据权利要求2所述的SM2算法协同签名方法,其特征在于,在根据所述消息摘要和所述第一椭圆曲线群元素,生成第一部分签名的步骤之后还包括步骤:检测所述第一部分签名r的值,在所述第一部分签名r的值为0时,接收所述第二通信方根据所述第一公钥参数以及再次选取的随机数重新反馈的第一椭圆曲线群元素;或根据所述第二椭圆曲线群元素(x1,y1),基于以下公式进行计算,得到计算结果S0:S0=[r]G+(x1,y1)在检测到所述计算结果S0为椭圆曲线E(Fq)的无穷远点时,接收所述第二通信方根据所述第一公钥参数以及再次选取的随机数重新反馈的第一椭圆曲线群元素。5.根据权利要求2至4任意一项所述的SM2算法协同签名方法,其特征在于,基于所述第一部分签名进行模运算,生成混淆中间结果的步骤包括:根据所述随机数k4和所述第一部分签名r,基于以下公式生成混淆中间结果:r′=r+k4(modn)其中,r′为所述混淆中间结果。6.根据权利要求5所述的SM2算法协同签名方法,其特征在于,在根据预设的密码杂凑算法,生成待签名消息的消息摘要的步骤之前还包括步骤:基于以下公式生成第一私钥分量:d1∈[1,…,n-1]其中,d1为所述第一私钥分量;根据所述第一私钥分量,基于以下公式获取所述第一公钥参数:P1=[d1]G其中,P1为所述第一公钥参数;将所述第一公钥参数传输给所述第二通信方。7.根据权利要求6所述的SM2算法协同签名方法,其特征在于,所述中间签名包括第一中间签名s1和第二中间签名s2;根据所述中间签名和所述第一部分签名,生成第二部分签名的步骤中,基于以下公式生成所述第二部分签名:其中,s为所述第二部分签名;d1为所述第一私钥分量。8.根据权利要求7所述的SM2算法协同签名方法,其特征在于,根据所述中间签名和所述第一部分签名,生成第二部分签名的步骤之前还包括步骤:检测所述第一中间签名s1的值;在检测到所述第一中间签名s1的值为0时,接收所述第二通信方根据所述第一公钥参数以及再次选取的随机数重新反馈的第一椭圆曲线群元素;或检测所述第二中间签名s2的值;在检测到所述第二中间签名s2的值为0时,接收所述第二通信方根据所述第一公钥参数以及再次选取的随机数重新反馈的第一椭圆曲线群元素。9.根据权利要求7所述的SM2算法协同签名方法,其特征在于,根据所述中间签名和所述第一部分签名,生成第二部分签名的步骤之后还包括步骤:检测所述第二部分签名s的值;在检测到所述第一部分签名s的值为0或n-r时,接收所述第二通信方根据所述第一公钥参数以及再次选取的随机数重新反馈的第一椭圆曲线群元素。10.一种SM2算法协同签名方法,其特征在于,包括以下步骤:根据选取的随机数以及第一通信方的第一公钥参数,生成第一椭圆曲线群元素,并将所述第一椭圆曲线群元素传输给第一通信方;接收所述第一通信方基于所述第一椭圆曲线群元素反馈的混淆中间结果,并根据第二私钥分量和所述混淆中间结果,生成中间签名;将所述中间签名传输给所述第一通信方。11.根据权利要求10所述的SM2算法协同签名方法,其特征在于,在根据选取的随机数以及第一通信方的第一公钥参数,生成第一椭圆曲线群元素的步骤之前还包括步骤:基于以下公式生成所述第二私钥分量:d2∈[1,…,n-1]其中,d2为所述第二私钥分量;n为椭圆曲线E(Fq)上基点G的阶;根据选取的随机数以及第一通信方的第一公钥参数,生成第一椭圆曲线群元素的步骤之前还包括步骤:接收第一通信方传输的第一公钥参数P1;根据所述第一公钥参数P1和所述第二私钥分量d2,基于以下公式生成共同公钥:PA=[d2]P1-G其中,PA为所述共同公钥;公开所述共同公钥PA。12.根据权利要求11所述的SM2算法协同签名方法,其特征在于,所述第一椭圆曲线群元素包括椭圆曲线群元素R1和椭圆曲线群元素R2;根据选取的随机数以及第一通信方的第一公钥参数,生成第一椭圆曲线群元素的步骤包括:分别选取随机数k1、随机数k2,基于以下公式生成所述椭圆曲线群元素R1和椭圆曲线群元素R2:R1=[k1]P1R2=[k2]G其中,k1∈[1,…,n-1];k2∈[1,…,n-1];P1为所述第一公钥参数;G为椭圆曲线E(Fq)上的基点;n为椭圆曲线E(Fq)上基点G的阶。13.根据权利要求12所述的SM2算法协同签名方法,其特征在于,所述中间签名包括第一中间签名s1和第二中间签名s2;根据第二私钥分量和所述混淆中间结果,生成中间签名的步骤包括:根据所述第二私钥分量d2和所述随机数k1,基于以下公式生成所述第一中间签名s1:根据所述第二私钥分量d2、所述随机数k2和所述混淆中间结果,基于以下公式生成所述第二中间签名s2:其中,r′为所述混淆中间结果。14.根据权利要求13所述的SM2算法协同签名方法,其特征在于,在根据第二私钥分量和所述混淆中间结果,生成中间签名的步骤之前还包括步骤:检测所述混淆中间结果r′的值;在检测到所述混淆中间结果r′的值为0时,根据所述第一公钥参数以及再次选取的随机数,重新生成第一椭圆曲线群元素。15.一种SM2算法协同解密方法,其特征在于,包括以下步骤:接收第一通信方根据SM2密文的第一比特串传输的所述第一比特串对应的椭圆曲线群元素;接收第一通信方传输的根据第一私钥分量和所述第一比特串对应的椭圆曲线群元素得到的第一点乘结果;将第二私钥分量与所述第一点乘结果进行乘积运算,得到第二点乘结果;根据所述第二点乘结果和所述第一比特串对应的椭圆曲线群元素,得到临时对称密钥,并提取所述SM2密文的第二比特串;对所述临时对称密钥和所述第二比特串进行按位异或运算,得到解密明文;对所述解密明文进行校验,并在所述校验成功时输出所述解密明文。16.根据权利要求15所述的SM2算法协同解密方法,其特征在于,根据所述第二点乘结果和所述第一比特串对应的椭圆曲线群元素,得到临时对称密钥的步骤包括:基于以下公式得到椭圆曲线群元素(x2,y2):(x2,y2)=T2-C1*其中,T2为所述第二点乘结果;C1*为所述第一比特串对应的椭圆曲线群元素;根据所述椭圆曲线群元素(x2,y2),基于以下公式生成所述临时对称密钥:t=KDF(x2||y2,klen)其中,t为所...
【专利技术属性】
技术研发人员:张永强,刘镪,
申请(专利权)人:数安时代科技股份有限公司,广东信鉴信息科技有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。