双方协同生成SM2算法的签名方法、装置及存储介质制造方法及图纸

技术编号:20164458 阅读:45 留言:0更新日期:2019-01-19 00:17
本发明专利技术公开了双方协同生成SM2算法的签名方法、装置及存储介质,解决在不采用密码硬件的情况下,现有技术中存在的用户私钥易被盗取的问题。在第一参与方实施的签名方法包括:接收第二参与方根据签名输出方标识确定的中间信息;并基于签名输出方标识确定输出待签名消息的完整签名的参与方;若由第一参与方输出完整签名,则用第一子私钥及中间信息生成待签名消息的第二部分签名,并输出由中间信息中携带的第一部分签名及第二部分签名构成的完整签名;若由第二参与方输出完整签名,则用第一子私钥及中间信息生成并发送第一中间签名给第二参与方,使第二参与方能用第二子私钥及第一中间签名生成待签名消息的第二部分签名,以确定完整签名。

【技术实现步骤摘要】
双方协同生成SM2算法的签名方法、装置及存储介质
本专利技术涉及信息安全与密码学领域,尤其是涉及双方协同生成SM2算法的签名方法、装置及存储介质。
技术介绍
在传统互联网中,为了保护用户网上业务的安全,往往采用基于PKI(PublicKeyInfrastructure,公钥基础设施)的数字签名和加解密等密码技术,来验证用户身份的真实性,保证信息的机密性、完整性和签名者的不可否认性等。基于PKI的应用,私钥的保护安全性问题至关重要。传统模式通常给用户配备USBKey、SmartCard等安全硬件外设,来保障私钥的安全。而随着移动互联网、云计算的快速发展和应用,移动智能终端和“瘦客户端”在生活、学习、工作等方面给人们带来方便快捷的同时,对信息安全提出了更高的要求。在移动智能终端或云环境下,由于成本或没有合适的密码硬件等原因,用户不能再依赖密码硬件来使用私钥进行加解密和签名验签等密码运算。针对这些场景,目前常用的方法是以软件的形式存储和使用私钥,安全防护能力较差。如果私钥完整的存储在本地文件中,攻击者可通过权限提升等方式获取私钥;如果私钥完整的出现在每次的签名过程中,攻击者可通过多种方式将本文档来自技高网...

【技术保护点】
1.双方协同生成SM2算法的签名方法,应用于第一参与方,其特征在于,包括:接收第二参与方发送的根据签名输出方标识确定的中间信息;其中,所述中间信息中至少携带有与生成待签名消息的第二部分签名相关的部分信息;基于所述签名输出方标识,确定输出所述待签名消息的完整签名的参与方;若确定由所述第一参与方输出所述完整签名,则基于所述第一参与方持有的第一子私钥及所述中间信息生成所述待签名消息的第二部分签名;其中,所述中间信息中还携带有所述第二参与方生成的所述待签名消息的第一部分签名;在确定所述第二部分签名为非零值,且不等于n‑r时,获得由所述第一部分签名及所述第二部分签名构成的所述完整签名;其中,n为所述指定...

【技术特征摘要】
1.双方协同生成SM2算法的签名方法,应用于第一参与方,其特征在于,包括:接收第二参与方发送的根据签名输出方标识确定的中间信息;其中,所述中间信息中至少携带有与生成待签名消息的第二部分签名相关的部分信息;基于所述签名输出方标识,确定输出所述待签名消息的完整签名的参与方;若确定由所述第一参与方输出所述完整签名,则基于所述第一参与方持有的第一子私钥及所述中间信息生成所述待签名消息的第二部分签名;其中,所述中间信息中还携带有所述第二参与方生成的所述待签名消息的第一部分签名;在确定所述第二部分签名为非零值,且不等于n-r时,获得由所述第一部分签名及所述第二部分签名构成的所述完整签名;其中,n为所述指定椭圆曲线的基点的阶,r为所述第一部分签名。2.如权利要求1所述的方法,其特征在于,接收第二参与方发送的根据签名输出方标识确定的中间信息之前,还包括:按照第一公式对选取的第一随机数及所述第一参与方的第一子公钥、所述第二参与方的第二子公钥以及指定椭圆曲线的基点进行计算,获得第一椭圆曲线随机点;其中,所述第一随机数为至少三个随机数,所述第一椭圆曲线随机点为所述指定椭圆曲线的加法群上的至少三个元素,所述第一随机数与所述第一椭圆曲线随机点的数量相同,所述第一公式用于将所述第一椭圆曲线随机点约束在所述指定椭圆曲线的加法群上;将所述签名输出方标识、所述待签名消息的消息摘要及所述第一椭圆曲线随机点发送给所述第二参与方,使所述第二参与方能够基于所述消息摘要及所述第一椭圆曲线随机点生成所述第一部分签名。3.如权利要求2所述的方法,其特征在于,将所述签名输出方标识、所述待签名消息的消息摘要及所述第一椭圆曲线随机点发送给所述第二参与方之前,还包括:对所述待签名消息及指定特征数据进行哈希计算,获得所述待签名消息的消息摘要;其中,所述指定特征数据至少包括与所述指定椭圆曲线相关的参数,及由所述第一参与方与所述第二参与方完整的签名公钥被混淆后的值。4.如权利要求2所述的方法,其特征在于,所述第一公式,具体为:其中,R1至R3为所述第一椭圆曲线随机点,k1至k3为所述第一随机数,且k1至k3∈[1,n-1]范围内的整数,G为所述指定椭圆曲线的基点,n为所述基点G的阶,P1、P2分别为所述第一子公钥及所述第二子公钥,P1是由所述第一参与方用所述第一子私钥与所述基点G计算得到的,P2是由所述第二参与方用所述第二子私钥与所述基点G计算得到的,d1为所述第一子私钥。5.如权利要求1-4任一权项所述的方法,其特征在于,所述中间信息,具体为:若所述签名输出方标识表明应在所述第一参与方输出所述完整签名,则所述中间信息由所述第一部分签名及第二中间签名构成;其中,所述第二中间签名为所述第二参与方混淆所述第二子私钥所产生的四个值;若所述签名输出方标识表明应在所述第二参与方输出所述完整签名,则所述中间信息为第三中间签名;其中,所述第三中间签名为所述第二参与方混淆所述第二子私钥产生的两个值。6.如权利要求5所述的方法,其特征在于,基于所述签名输出方标识,确定输出所述待签名消息的完整签名的参与方之后,还包括:若确定由所述第二参与方输出所述完整签名,则用第二公式对所述第一子私钥及所述中间信息进行计算,生成第一中间签名;其中,所述第一中间签名为所述第一参与方混淆所述第一子私钥产生的三个值,所述第二公式用于约束所述第一中间签名的取值范围;发送所述第一中间签名给所述第二参与方,使所述第二参与方能够根据所述第二子私钥、所述第一中间签名及所述待签名消息的第一部分签名生成所述待签名消息的第二部分签名,以确定所述待签名消息的完整签名。7.如权利要求6所述的方法,其特征在于,所述第二公式具体为:其中,s3至s5为所述第一中间签名,k1至k3为所述第一随机数,且k1至k3∈[1,n-1]范围内的整数,n为所述指定椭圆曲线的基点G的阶,d1-1为所述第一子私钥d1在有限素域Fp上的逆元d1-1modn,mod为求模运算。8.如权利要求5所述的方法,其特征在于,基于所述第一参与方持有的第一子私钥及所述中间信息生成所述第二部分签名,包括:采用第三公式对所述第一子私钥、所述第一部分签名及所述第二中间签名进行计算,生成所述待签名消息的第二部分签名;其中,所述第二中间签名是混淆所述第二子私钥后产生的四个值,所述第三公式用于约束所述第二部分签名的取值范围。9.如权利要求8所述的方法,其特征在于,所述第三公式具体为:其中,s为所述待签名消息的第二部分签名,s1-s4为所述第二中间签名,k1至k3为所述第一随机数,且k1至k3∈[1,n-1]范围内的整数,n为所述指定椭圆曲线的基点G的阶,d1-1为所述第一子私钥d1在有限素域Fp上的逆元d1-1modn,mod为求模运算。10.双方协同生成SM2算法的签名方法,应用于第二参与方,其特征在于,包括:接收第一参与方发送的签名输出方标识、待签名消息的消息摘要及第一椭圆曲线随机点,基于所述消息摘要及所述第一椭圆曲线随机点生成所述待签名消息的第一部分签名;其中,所述签名输出方标识用于标识输出所述待签名消息的完整签名的参与方,所述第一椭圆曲线随机点为指定椭圆曲线的加法群上的至少三个元素;在确定所述第一部分签名为非零值时,根据所述签名输出方标识确定输出所述完整签名的参与方;若确定由所述第一参与方输出所述完整签名,则基于所述第二参与方所持有的第二子私钥及所述第一部分签名生成第二中间签名;并发送由所述第一部分签名及所述第二中间签名组成的中间信息给所述第一参与方,使所述第一参与方能够根据所述中间信息生成所述待签名消息的第二部分签名,以确定所述完整签名;其中,所述第二中间签名为所述第二参与方混淆所述第二子私钥产生的四个值。11.如权利要求10所述的方法,其特征在于,接收第一参与方发送的签名输出方标识、待签名消息的消息摘要及第一椭圆曲线随机点,基于所述消息摘要及所述第一椭圆曲线随机点生成所述待签名消息的第一部分签名,包括:接收所述签名输出方标识、所述消息摘要及所述第一椭圆曲线随机点;采用指定算法生成第二随机数;其中,所述第二随机数的数量比接收的所述第一圆曲线随机点的数量多一个;采用第四公式对所述第二随机数及所述第一椭圆曲线随机点进行计算,生成第二椭圆曲线随机点;采用第五公式对所述第二椭圆曲线随机点的横坐标以及所述消息摘要转化成的整数进行模运算,获得所述第一部分签名。12.如权利要求11所述的方法,其特征在于,所述第四公式,具体为:(x1,y1)=k4[*]R1[+](k5×d2)[*]R2[+]k6[*]R3[+]k7[*]G其中,(x1,y1)为所述第二椭圆曲线随机点,x1和y1分别为所述第二椭圆曲线随机点的横纵坐标,R1至R3为所述第一椭圆曲线随机点,G为所述指定椭圆曲线的基点,k4至k7为所述第二随机数,且k4至k7∈[1,n-1]范围内的整数,d2为所述第二子私钥,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算。13.如权利要求11所述的方法,其特征在于,所述第五公式,具体为:r=(x1+e)modn其中,r为所述第一部分签名,x1为所述第二椭圆曲线随机点的横坐标,e为所述消息摘要由字节串转化成的整数,n为所述指定椭圆曲线的基点G的阶,mod为求模运算。14.如权利要求10-13任一权项所述的方法,其特征在于,根据所述签名输出方标识确定输出所述待签名消息的完整签名的参与方之后,还包括:若确定由所述第二参与方输出所述完整签名,则基于所述第二子私钥及所述第一部分签名生成第三中间签名;其中,所述第三中间签名为所述第二参与方混淆所述第二子私钥产生的两个值;发送由所述第三中间签名构成的中间信息给所述第一参与方,使所述第一参与方能够根据所述第一子私钥及所述中间信息生成第一中间签名;其中,所述第一中间签名为所述第一参与方基于所述第一子私钥及所述第三中间签名产生的三个值;接收所述第一参与方发送的所述第一中间签名,并基于所述第二子私钥及所述第一中间签名,生成所述待签名消息的第二部分签名;在确定所述第二部分签名为非零值,且不等于n-r时,获得由所述第一部分签名及所述第二部分签名构成的所述完整签名;其中,n为所述指定椭圆曲线的基点的阶,r为所述待签名消息的第一部分签名。15.如权利要求14所述的方法,其特征在于,基于所持有的第二子私钥及所述第一部分签名生成第三中间签名,包括:若确定由所述第二参与方输出所述完整签名,则采用第七公式,对所述第二子私钥及所述第一部分签名进行计算,生成第三中间签名;具体的,所述第七公式为:其中,s1至s2为所述第三中间签名,k4和k7为所述第二随机数中的部分随机数,且k4和k7∈[1,n-1]范围内的整数,r为所述待签名消息的第一部分签名,n为所述指定椭圆曲线的基点G的阶,d2-1为所述第二子私钥d2在有限素域Fp上的逆元d2-1modn,mod为求模运算。16.如权利要求15所述的方法,其特征在于,生成所述待签名消息的第二部分签名,包括:采用第八公式,对第二随机数中的部分随机数、所述第二子私钥及所述第一部分签名进行计算,生成所述第二部分签名;具体的,所述第八公式为:其中,s为所述第二部分签名,s3至s5为所述第三中间签名,k5和k6为所述第二随机数中的部分随机数,且k5和k6∈[1,n-1]范围内的整数,r为所述第一部分签名,n为所述指定椭圆曲线的基点G的阶,d2为所述第二子私钥,d2-1为所述第二子私钥d2在有限素域Fp上的逆元d2-1modn,mod为求模运算。17.如权利要求10-13任一权项所述的方法,其特征在于,基于所持有的第二子私钥及所述第一部分签名生成第二中间签名,包括:采用第六公式,对所述第二随机数、所述第二子私钥及所述第一部分签名进行计算,生成所述第二中间签名;具体的,所述第六公式为:其中,s1至s4为所述第二中间签名,k4至k7为所述第二随机数,且k4至k7∈[1,n-1]范围内的整数,r为所述第一部分签名,n为所述指定椭圆曲线的基点G的阶,d2-1为所述第一子私钥d2在有限素域Fp上的逆元d2-1modn,mod为求模运算。18.双方协同生成SM2算法的签名装置,应用于第一参与方,其特征在于,包括:接收单元,用于接收第二参与方发送的根据签名输出方标识确定的中间信息;其中,所述中间信息中至少携带有与生成待签名消息的第二部分签名相关的部分信息;确定单元,用于基于所述签名输出方标识,确定输出所述待签名消息的完整签名的参与方;计算单元,用于若确定由所述第一参与方输出所述完整签名,则基于所述第一参与方持有的第一子私钥...

【专利技术属性】
技术研发人员:刘婷汪宗斌
申请(专利权)人:北京信安世纪科技股份有限公司
类型:发明
国别省市:北京,11

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

1