隐藏私钥的交互式SM2签名方法、系统和终端技术方案

技术编号:19702426 阅读:126 留言:0更新日期:2018-12-08 14:12
本发明专利技术涉及安全技术领域。具体地涉及一种隐藏私钥的交互式SM2签名方法、系统和终端,包括初始化部分和主体部分。在初始化部分中,第一通信方生成私钥dA,基于私钥dA生成四个子私钥,同时基于基点G生成两个子基点,然后将四个子私钥中的两个和两个子基点中的一个发送给第二通信方,在第二通信方接收到该数据后删除本地存储的私钥dA。在主体部分中,第一通信方根据本地存储的子基点生成第一部分签名,发送给第二通信方;第二通信方根据本地存储的子私钥和子基点生成第二、三、四部分签名,发送给第一通信方;第一通信方基于第二通信方发来的数据和本地存储的数据生成完整签名。使用本发明专利技术,可以使得核心的数据私钥dA仅由私钥责任者第一通信方生成掌握。

【技术实现步骤摘要】
隐藏私钥的交互式SM2签名方法、系统和终端
本专利技术涉及安全
,具体涉及一种隐藏私钥的交互式SM2算法的签名方法、系统和终端。
技术介绍
目前,基于公钥密码学的数字签名和加解密技术已经广泛应用在电子商务、身份认证等应用中,成为保证信息安全的重要工具,而私钥的安全性及使用是保证这些应用安全的基础。一般情况下,运行密码算法时需要调用完整的密钥信息,所以需要密钥直接存储在内存中。而在防护能力较弱的终端上,这会增加密钥丢失的风险。例如手机丢失、算法运算过程被窃听等都会导致密钥的丢失。为了提高私钥的安全性,现有技术中提出了一种称为门限密码学的算法,即将私钥进行拆分并分布在不同的物理设备中,以避免全部私钥信息的直接存储和使用。比如,一个(t,n)的门限签名方案中,私钥可分布在n个成员中,t个或t个以上成员可以合作完成签名,而小于t个成员时则无法完成签名。CN104243456B中公开了一种适用于云计算的基于SM2算法的签名及解密方法和系统。其主要方法是:第一通信方和第二通信方通过密钥协商来生成私钥,最终两方仅掌握与私钥相关的部分信息,而且双方均不掌握具体的私钥值。在需要签名或解密时,双方可通过交互实现。但是,在上述技术方案中,第一通信方和第二通信方掌握等量的信息,私钥是双方协商产生的,私钥的责任方并不完全拥有私钥,在电子签名中,没有体现出私钥责任方对私钥的主权性。在实际中,通信的双方对私钥所附带的责任并不对等。因此需要对核心数据进行不对等的划分,让一方掌握较多的核心数据,而让另一方掌握较少的核心数据。因此,需要一种签名方法或系统或终端,使得私钥责任方拥有对私钥的主动权,让参与签名的双方能够不对等地掌握核心数据。
技术实现思路
有鉴于此,本专利技术提供一种隐藏私钥的交互式SM2签名方法,所述SM2使用的椭圆曲线具有基点G和阶数n,所述方法包括:第一通信方:生成私钥dA;基于所述私钥dA生成子私钥d0、子私钥d1、子私钥d2、子私钥d3;基于基点G生成子基点G0和子基点G1;将子私钥d2、子私钥d3和子基点G1发送至第二通信方;第二通信方:接收并存储第一通信方发送的子私钥d2、子私钥d3和子基点G1;第一通信方:删除私钥dA、子私钥d2、子私钥d3和子基点G1;存储子私钥d0、子私钥d1和子基点G0;第一通信方:获取待签名消息M;生成待签名消息M的消息摘要e;根据子基点G0生成第一部分签名Q1;将消息摘要e和第一部分签名Q1发送给第二通信方;第二通信方:接收第一通信方发送的消息摘要e和第一部分签名Q1;根据第一部分签名Q1、消息摘要e还有子基点G1生成第二部分签名r,根据子私钥d2生成第三部分签名s1,根据子私钥d3生成第四部分签名s2;将第二部分签名r、第三部分签名s1和第四部分签名s2发送给第一通信方;第一通信方:接收第二通信方发送的第二部分签名r、第三部分签名s1和第四部分签名s2;根据子私钥d0、子私钥d1、第二部分签名r、第三部分签名s1和第四部分签名s2生成完整签名(r,s)。进一步地,所述第一通信方生成私钥dA包括:产生一个随机数,将产生的随机数作为私钥dA。进一步地,所诉第一通信方基于所述私钥dA生成子私钥d0、子私钥d1、子私钥d2、子私钥d3包括:生成随机数a0和随机数a1,其中a0,a1∈[1,n-1];计算d0=a1/(1+dA);d1=-(dA/a1+a0);d2=a0/a1;d3=a0×a1/(1+dA)。进一步地,所述第一通信方基于基点G,生成子基点G0和子基点G1包括:计算G0=[a0]G;G1=[a1]G0。进一步地,所述第一通信方根据子基点G0生成待签名消息M的消息摘要e和第一部分签名Q1包括:第一通信方将Z和M拼接形成M′,并计算e=Hash(M′),其中,Z表示第一通信方和第二通信方共同的身份标识,Hash()表示预定的密码杂凑函数;第一通信方生成随机数k0,其中k0∈[1,n-1];计算Q1=[k0]G0。进一步地,所述第二通信方根据第一部分签名Q1、消息摘要e还有子基点G1生成第二部分签名r,并根据子私钥d2生成第三部分签名s1,根据子私钥d3生成第四部分签名s2包括:生成随机数k1、随机数k2,其中k1,k2∈[1,n-1];计算(x,y)=[k1]Q1+[k2]G1;r=(x+e)modn;s1=k1×d2modn;s2=(r+k2)×d3modn。进一步地,所述第一通信方根据子私钥d0、子私钥d1、第二部分签名r、第三部分签名s1和第四部分签名s2生成完整签名并输出包括:计算s=(d0×k0×s1+d0×d1×r+s2)modn;若s不等于0且不等于n-r,则第一通信方将(r,s)作为完整签名输出。相应地,本专利技术还提供一种隐藏私钥的交互式SM2签名系统,所述SM2使用的椭圆曲线具有基点G和阶数n,所述系统包括:第一通信方和第二通信方,其中,所述第一通信方,用于生成私钥dA;基于所述私钥dA生成子私钥d0、子私钥d1、子私钥d2、子私钥d3;基于基点G生成子基点G0和子基点G1;将子私钥d2、子私钥d3和子基点G1发送至第二通信方;删除私钥dA、子私钥d2、子私钥d3和子基点G1;存储子私钥d0、子私钥d1和子基点G0;获取待签名消息M;生成待签名消息M的消息摘要e;根据子基点G0生成第一部分签名Q1;将消息摘要e和第一部分签名Q1发送给第二通信方;接收第二通信方发送的第二部分签名r、第三部分签名s1和第四部分签名s2;根据子私钥d0、子私钥d1、第二部分签名r、第三部分签名s1和第四部分签名s2生成完整签名;所述第二通信方,接收并存储第一通信方发送的子私钥d2、子私钥d3和子基点G1;接收第一通信方发送的消息摘要e和第一部分签名Q1;根据第一部分签名Q1、消息摘要e还有子基点G1生成第二部分签名r,根据子私钥d2生成第三部分签名s1,根据子私钥d3生成第四部分签名s2;将第二部分签名r、第三部分签名s1和第四部分签名s2发送给第一通信方。相应地,本专利技术还提供一种支持SM2签名的终端,所述SM2使用的椭圆曲线具有基点G和阶数n,包括:第一生成模块、第一发送模块、删除模块、第一存储模块、获取模块、第二生成模块、第二发送模块、第一接收模块和完整签名生成模块,其中,所述第一生成模块,用于生成私钥dA,基于所述私钥dA生成子私钥d0、子私钥d1、子私钥d2、子私钥d3,基于基点G生成子基点G0和子基点G1;所述第一发送模块,用于发送子私钥d2、子私钥d3和子基点G1;所述删除模块,用于删除私钥dA、子私钥d2、子私钥d3和子基点G1;所述第一存储模块,用于存储子私钥d0、子私钥d1和子基点G0;所述获取模块,用于获取待签名消息M;所述第二生成模块,用于生成待签名消息M的消息摘要e,根据子基点G0生成第一部分签名Q1;所述第二发送模块,用于发送消息摘要e和第一部分签名Q1;所述第一接收模块,用于接收第二部分签名r、第三部分签名s1和第四部分签名s2;所述完整签名生成模块,用于根据子私钥d0、子私钥d1、第二部分签名r、第三部分签名s1和第四部分签名s2生成完整签名。相应地,本专利技术还提供一种终端,包括:第二接收模块、第二存储模块、第三接收模块、部分签名生成模块和第三发送模本文档来自技高网
...

【技术保护点】
1.一种隐藏私钥的交互式SM2签名方法,所述SM2使用的椭圆曲线具有基点G和阶数n,其特征在于,所述方法包括:第一通信方:生成私钥dA;基于所述私钥dA生成子私钥d0、子私钥d1、子私钥d2、子私钥d3;基于基点G生成子基点G0和子基点G1;将子私钥d2、子私钥d3和子基点G1发送至第二通信方;第二通信方:接收并存储第一通信方发送的子私钥d2、子私钥d3和子基点G1;第一通信方:删除私钥dA、子私钥d2、子私钥d3和子基点G1;存储子私钥d0、子私钥d1和子基点G0;第一通信方:获取待签名消息M;生成待签名消息M的消息摘要e;根据子基点G0生成第一部分签名Q1;将消息摘要e和第一部分签名Q1发送给第二通信方;第二通信方:接收第一通信方发送的消息摘要e和第一部分签名Q1;根据第一部分签名Q1、消息摘要e还有子基点G1生成第二部分签名r,根据子私钥d2生成第三部分签名s1,根据子私钥d3生成第四部分签名s2;将第二部分签名r、第三部分签名s1和第四部分签名s2发送给第一通信方;第一通信方:接收第二通信方发送的第二部分签名r、第三部分签名s1和第四部分签名s2;根据子私钥d0、子私钥d1、第二部分签名r、第三部分签名s1和第四部分签名s2生成完整签名(r,s)。...

【技术特征摘要】
1.一种隐藏私钥的交互式SM2签名方法,所述SM2使用的椭圆曲线具有基点G和阶数n,其特征在于,所述方法包括:第一通信方:生成私钥dA;基于所述私钥dA生成子私钥d0、子私钥d1、子私钥d2、子私钥d3;基于基点G生成子基点G0和子基点G1;将子私钥d2、子私钥d3和子基点G1发送至第二通信方;第二通信方:接收并存储第一通信方发送的子私钥d2、子私钥d3和子基点G1;第一通信方:删除私钥dA、子私钥d2、子私钥d3和子基点G1;存储子私钥d0、子私钥d1和子基点G0;第一通信方:获取待签名消息M;生成待签名消息M的消息摘要e;根据子基点G0生成第一部分签名Q1;将消息摘要e和第一部分签名Q1发送给第二通信方;第二通信方:接收第一通信方发送的消息摘要e和第一部分签名Q1;根据第一部分签名Q1、消息摘要e还有子基点G1生成第二部分签名r,根据子私钥d2生成第三部分签名s1,根据子私钥d3生成第四部分签名s2;将第二部分签名r、第三部分签名s1和第四部分签名s2发送给第一通信方;第一通信方:接收第二通信方发送的第二部分签名r、第三部分签名s1和第四部分签名s2;根据子私钥d0、子私钥d1、第二部分签名r、第三部分签名s1和第四部分签名s2生成完整签名(r,s)。2.根据权利要求1所述的方法,其特征在于,所述第一通信方生成私钥dA包括:产生一个随机数,将产生的随机数作为私钥dA。3.根据权利要求2所述的方法,其特征在于,所述第一通信方基于所述私钥dA生成子私钥d0、子私钥d1、子私钥d2、子私钥d3包括:生成随机数a0和随机数a1,其中a0,a1∈[1,n-1];计算d0=a1/(1+dA);d1=-(dA/a1+a0);d2=a0/a1;d3=a0×a1/(1+dA)。4.根据权利要求3所述的方法,其特征在于,所述第一通信方基于基点G,生成子基点G0和子基点G1包括:计算G0=[a0]G;G1=[a1]G0。5.根据权利要求1所述的方法,其特征在于,所述第一通信方根据子基点G0生成待签名消息M的消息摘要e和第一部分签名Q1包括:第一通信方将Z和M拼接形成M′,并计算e=Hash(M′),其中,Z表示第一通信方和第二通信方共同的身份标识,Hash()表示预定的密码杂凑函数;第一通信方生成随机数k0,其中k0∈[1,n-1];计算Q1=[k0]G0。6.根据权利要求5所述的方法,其特征在于,所述第二通信方根据第一部分签名Q1、消息摘要e还有子基点G1生成第二部分签名r,并根据子私钥d2生成第三部分签名s1,根据子私钥d3生成第四部分签名s2包括:生成随机数k1、随机数k2,其中k1,k2∈[1,n-1];计算(x,y)=[k1]Q1+[k2]G1;r=(x+e)modn;s1=k1×d2modn;s2=(r+k2)×d3modn。7.根据权利要求6所述的方法,其特征在于,所述第一通信方根据子私钥d0、子私钥d1、第二部分签名r、第三部分签名s1、第四部分签名s2生成完整签名并输出包括:计算s=(d0×k0×s1+d0×d1×r+s2)modn;若s...

【专利技术属性】
技术研发人员:王现方张立廷潘文伦
申请(专利权)人:成都卫士通信息产业股份有限公司
类型:发明
国别省市:四川,51

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

1