一种基于密钥因子的SM2多方协同数字签名方法和系统技术方案

技术编号:26975713 阅读:55 留言:0更新日期:2021-01-06 00:11
本发明专利技术公开了一种基于密钥因子的SM2多方协同数字签名方法和系统,包括:签名发起方和签名协同方分别生成不同的私钥因子dA和dB,其中dA∈[1,n‑1]、dB∈[1,n‑1];选定同一椭圆曲线上阶为n的基点G,签名发起方生成第一随机数k1,k1∈[1,n‑1];签名发起方采用点乘法生成第一变量Q1,其中Q1=[k1]G;签名发起方将所述第一变量Q1发送给至少一个签名协同方,所述签名协同方生成第二随机数k2和第三随机数k3,其中k2∈[1,n‑1],k3∈[1,n‑1];采用点乘法计算签名协同方的第一签名分量r和两个临时签名分量s2和s3;签名协同方将r、s2和s3发送给签名发起方,所述签名发起方根据获取的r、s2和s3计算第二签名分量s,其中s=(dA*k1)*s2+dA*s3–r,进一步获取完整的签名分量(r,s)。

【技术实现步骤摘要】
一种基于密钥因子的SM2多方协同数字签名方法和系统专利
本专利技术涉及一种数字签名方法,本专利技术涉及一种基于密钥因子的SM2多方协同数字签名方法和系统。
技术介绍
目前常用于数字签名中的密码算法包括RSA和SM2算法,其中SM2是国产的密码算法,SM2算法的描述是:一个大数乘以一个基点(椭圆曲线上的一个固定的点)得到椭圆曲线上的另外一个点是容易的,但是通过另外一个点来反推这个大数是困难的。采用SM2算法的数字签名算法通过用户自己保管的私钥和公开的公钥进行“签名-验签”操作,从而确保信息的完整性和真实性和不可抵赖性;但目前的SM2算法只能适用于单一的用户签名,对于多用户签名的场景需要每个用户分别做一次签名、验证签名的时候也需要对每个签名都验证一次,如此提高了签名难度,并且降低了签名的效率。另外,为了保护数字签名的安全,传统的SM2签名算法的私钥需要集中管理,极大地限制了SM2算法的数字签名在分布式系统、云计算和物联网行业中的应用。
技术实现思路
本专利技术其中一个目的在于提供一种基于密钥因子的SM2多方协同数字签名方法和系统,所述方法和系统采用点乘法,基于同一椭圆曲线上的相同基点乘以随机数,分别生成多个私钥因子,所述私钥因子可被保存于不同的用户,无需集中管理,从而使得所述方法和系统可适用于分布式的网络。本专利技术另一个目的在于提供一种基于密钥因子的SM2多方协同数字签名方法和系统,所述方法是基于现有的SM2签名算法,通过本专利技术所述的点乘法产生的私钥因子获得完整的数字签名符合《GM/T0003-2012SM2椭圆曲线公钥密码算法第2部分数字签名算法》标准,因此可兼容现有的SM2加密算法,具有广泛的适用性。本专利技术另一个目的在于提供一种基于密钥因子的SM2多方协同数字签名方法和系统,所述方法和系统基于同一椭圆曲线上的相同基点乘以随机数的点乘法,实现步骤简单明确,无需构建复杂的算法模块,可以提高系统数字签名的效率。本专利技术另一个目的在于提供一种基于密钥因子的SM2多方协同数字签名方法和系统,所述方法和系统通过完整的签名结果进行签名验证,无需对每个私钥因子产生的签名分量分别进行验证,从而可以大幅提高多方数字签名的验证效率。本专利技术另一个目的在于提供一种基于密钥因子的SM2多方协同数字签名方法和系统,所述方法和系统需要使用所有的签名分量才能完成数字签名操作,由于不同的签名分量对应私钥因子被保存于不同的用户中,从而使得破解签名的需要攻破每个用户的安全系统获取私钥因子,大幅提高签名破解的难度。本专利技术另一个目的在于提供一种基于密钥因子的SM2多方协同数字签名方法和系统,所述方法和系统可将不同的签名分量对应的私钥因子进行分级保护,由于单一的签名分量不具有实现签名效果,最高安全等级的签名分量对应的用户可有效保障签名结果不被泄露。本专利技术另一个目的在于提供一种基于密钥因子的SM2多方协同数字签名方法和系统,所述方法和系统可适用于平等主体之间进行协同签名,其网络构架可适用于分布式架构,同时也适用于主-从架构和服务器-客户端架构。为了实现至少一个上述专利技术目的,本专利技术进一步提供一种基于密钥因子的SM2多方协同数字签名方法,所述方法包括如下步骤:签名发起方和签名协同方分别生成不同的私钥因子dA和dB,其中dA∈[1,n-1]、dB∈[1,n-1];选定同一椭圆曲线上阶为n的基点G,签名发起方生成第一随机数k1,k1∈[1,n-1];签名发起方采用点乘法生成第一变量Q1,其中Q1=[k1]G;签名发起方将所述第一变量Q1发送给至少一个签名协同方,所述签名协同方生成第二随机数k2和第三随机数k3,其中k2∈[1,n-1],k3∈[1,n-1];采用点乘法计算签名协同方的第一签名分量r和两个临时签名分量s2和s3;签名协同方将r、s2和s3发送给签名发起方,所述签名发起方根据获取的r、s2和s3计算第二签名分量s,其中s=(dA*k1)*s2+dA*s3–r,进一步获取完整的签名分量(r,s);根据完整的签名分量(r,s)进行签名验证。根据本专利技术一个较佳实施例,签名发起方将原文数据进行杂凑运算,获取杂凑结果e,所述签名发起方将杂凑结果e和第一变量Q1同时发送给所述签名协同方。根据本专利技术另一较佳实施例,所述签名协同方在接收到签名发起方的杂凑结果后采用相同的杂凑算法计算签名协同方的杂凑结果e1,对比e和e1,若不同则向所述签名发起方返回错误信息。根据本专利技术另一较佳实施例,若e和e1相同,则根据第二随机数k2和第三随机数k3计算第二变量Q2,其中Q2=[k2]Q1+[k3]G=(x1,y1);若x1和/或y1∈∞,则返回重新计算第二随机数k2和第三随机数k3,并重新计算所述第二变量Q2。根据本专利技术另一较佳实施例,若x1和/或y1存在,则计算签名协同方的签名分量r,其中r=(e+x1)modn。根据本专利技术另一较佳实施例,若x1和/或y1存在,则根据第二随机数k2和第三随机数k3分别计算两个签名方临时签名分量s2和s3,其中s2=dB*k2,s3=dB(r+k3)。根据本专利技术另一较佳实施例,当计算获取签名发起方的第二签名分量s后,进一步判断s是否为0或完整签名分量(r+s)modn是否为0,若是,则所述签名发起方重新生成随机数k1。根据本专利技术另一较佳实施例,验证完整签名分量方法包括:判断条件“r∈[1,n-1]且s∈[1,n-1]”是否满足,若不满足,则判断验证失败,进一步计算所述第二变量Q2=[s]G+[t]P=(x1,y1),其中P为公钥,并获取所述第二变量Q2中的x1,计算验证签名分量R,其中R=(e+x1)modn,若R=r,则判断验证成功,完成签名流程,若否,则判断验证失败。根据本专利技术另一较佳实施例,根据签名发起方和签名协同方的私钥因子计算并获取公钥P,方法包括如下步骤:签名发起方生成临时公钥Pc,其中Pc=[dA-1]G,dA-1为随机数dA的乘法逆元;将所述临时公钥Pc发送给签名协同方;所述签名协同方根据私钥因子dB采用点乘法计算公钥P,其中P=[dB-1]Pc-G,其中dB-1为私钥因子dB的乘法逆元。为了实现至少一个上述专利技术目的,本专利技术进一步提供一种基于密钥因子的SM2多方协同数字签名系统,所述系统采用上述一种基于密钥因子的SM2多方协同数字签名方法。附图说明图1显示的本专利技术一种基于密钥因子的SM2多方协同数字签名方法一种流程示意图;图2显示的是本专利技术中采用SM2技术的密钥因子和公钥生成方法示意图;图3显示的是本专利技术一种基于密钥因子的SM2多方协同数字签名方法另一种流程示意图;图4显示的是本专利技术中密钥因子签名验证方法示意图。以下描述用于揭露本专利技术以使本领域技术人员能够实现本专利技术。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本专利技术的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背本文档来自技高网...

【技术保护点】
1.一种基于密钥因子的SM2多方协同数字签名方法,其特征在于,所述方法包括如下步骤:/n签名发起方和签名协同方分别生成不同的私钥因子dA和dB,其中dA∈[1,n-1]、dB∈[1,n-1];/n选定同一椭圆曲线上阶为n的基点G,签名发起方生成第一随机数k1,k1∈[1,n-1];/n签名发起方采用点乘法生成第一变量Q1,其中Q1=[k1]G;/n签名发起方将所述第一变量Q1发送给至少一个签名协同方,所述签名协同方生成第二随机数k2和第三随机数k3,其中k2∈[1,n-1],k3∈[1,n-1];/n采用点乘法计算签名协同方的第一签名分量r和两个临时签名分量s2和s3;/n签名协同方将r、s2和s3发送给签名发起方,所述签名发起方根据获取的r、s2和s3计算第二签名分量s,其中s=(dA*k1)*s2+dA*s3–r,进一步获取完整的签名分量(r,s);/n根据完整的签名分量(r,s)进行签名验证。/n

【技术特征摘要】
1.一种基于密钥因子的SM2多方协同数字签名方法,其特征在于,所述方法包括如下步骤:
签名发起方和签名协同方分别生成不同的私钥因子dA和dB,其中dA∈[1,n-1]、dB∈[1,n-1];
选定同一椭圆曲线上阶为n的基点G,签名发起方生成第一随机数k1,k1∈[1,n-1];
签名发起方采用点乘法生成第一变量Q1,其中Q1=[k1]G;
签名发起方将所述第一变量Q1发送给至少一个签名协同方,所述签名协同方生成第二随机数k2和第三随机数k3,其中k2∈[1,n-1],k3∈[1,n-1];
采用点乘法计算签名协同方的第一签名分量r和两个临时签名分量s2和s3;
签名协同方将r、s2和s3发送给签名发起方,所述签名发起方根据获取的r、s2和s3计算第二签名分量s,其中s=(dA*k1)*s2+dA*s3–r,进一步获取完整的签名分量(r,s);
根据完整的签名分量(r,s)进行签名验证。


2.根据权利要求1所述的一种基于密钥因子的SM2多方协同数字签名方法,其特征在于,签名发起方将原文数据进行杂凑运算,获取杂凑结果e,所述签名发起方将杂凑结果e和第一变量Q1同时发送给所述签名协同方。


3.根据权利要求2所述的一种基于密钥因子的SM2多方协同数字签名方法,其特征在于,所述签名协同方在接收到签名发起方的杂凑结果后采用相同的杂凑算法计算签名协同方的杂凑结果e1,对比e和e1,若不同则向所述签名发起方返回错误信息。


4.根据权利要求3所述的一种基于密钥因子的SM2多方协同数字签名方法,其特征在于,若e和e1相同,则根据第二随机数k2和第三随机数k3计算第二变量Q2,其中Q2=[k2]Q1+[k3]G=(x1,y1);若x1和/或y1∈∞,则返回重新计算第二随机数k2和第三随机数k3,并重新计算所述第二变量Q2。


5.根据权利要求4所述的一种基于密...

【专利技术属性】
技术研发人员:姚有方方伟明李红乾秦盼春
申请(专利权)人:浙江省数字安全证书管理有限公司
类型:发明
国别省市:浙江;33

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

1