【技术实现步骤摘要】
一种隐藏私钥秘密的数字签名生成方法及系统
本专利技术属于信息安全
,特别是一种隐藏私钥秘密的数字签名生成方法及系统。
技术介绍
SM2是由国家密码管理局颁布的一种椭圆曲线公钥密码算法(参见《SM2椭圆曲线公钥密码算法》规范,国家密码管理局,2010年12月),基于此算法能实现数字签名、密钥交换及数据加密。但是,由于SM2算法独特的数字签名运算方式,通常的秘密共享(分割)方式及对应的基于秘密共享的密码运算方式,无法适合于使用SM2私钥进行数字签名的情形。针对此问题,人们提出了一些相应的技术方案。这些技术方案普遍采用的方法是将用户的SM2私钥dA的秘密(1+dA)-1,分割成多份,即d1,…,dm,每份称为秘密份额,而这些秘密份额与(1+dA)-1满足关系(d1d2…dm)modn=(1+dA)-1或(d1d2…dm)modn=(1+dA)(这两者等价),或(d1+d2…+dm)modn=(1+dA)-1,然后将此多份秘密份额分别交给m个装置保存;当需要使用用户私钥dA针对一个消息进行数字签名时,由m个装置分别使用d1,…,dm通过协同计算得到针对消息的数字签名。但是,这类方法存在如下问题:一是,每个装置保存、使用的是与秘密(1+dA)-1直接相关的秘密份额,一旦泄露,就为攻击者破解(1+dA)-1(即dA)提供了有用的信息,增大了私钥dA破解的风险(虽然个别装置秘密份额的泄露不意味私钥被破解,但增大了破解的风险);二是私钥秘密(1+dA)-1一旦分割、共享,秘密份额就不能改变(改变意味着私钥的改变),而秘密份额长时间保持不变,会增大被破解的风险。专利技 ...
【技术保护点】
一种隐藏私钥秘密的数字签名生成方法,其特征是:所述方法涉及m个装置,其中m≥2;m个装置分别标号为第1号到第m号装置;m个装置分别保存有[1,n‑1]区间内的整数秘密c1,c2,…,cm,其中ci是由第i号装置保存的秘密,i=1,…,m;第1号装置同时保存有[1,n‑1]区间内的整数c0;m个装置保存的秘密满足如下关系:c0=(c1c2…cm)
【技术特征摘要】
1.一种隐藏私钥秘密的数字签名生成方法,其特征是:所述方法涉及m个装置,其中m≥2;m个装置分别标号为第1号到第m号装置;m个装置分别保存有[1,n-1]区间内的整数秘密c1,c2,…,cm,其中ci是由第i号装置保存的秘密,i=1,…,m;第1号装置同时保存有[1,n-1]区间内的整数c0;m个装置保存的秘密满足如下关系:c0=(c1c2…cm)-1(1+dA)-1modn,其中,dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶;在初始化阶段预先计算得到:Gd=[1+dA]G,P=[dA]G,其中,dA是用户的SM2私钥,G是SM2密码运算所使用的椭圆曲线点群的基点,P是dA对应的公钥;将Gd分发给所述m个装置、将公钥P公开发布;当需要使用用户的SM2私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的生成:第1号装置取G0为SM2椭圆曲线的零元;第1号装置在[1,n-1]区间内随机选择一整数k1,计算G1=[c1]G0+[k1]Gd或G1=[c1](G0+[k1])Gd;第1号装置将G1传送给下一个装置即第2号装置;第i号装置接收到Gi-1后,i=2,…,m,在[1,n-1]区间内随机选择一整数ki,计算Gi=[ci]Gi-1+[ki]Gd或Gi=[ci](Gi-1+[ki]Gd);若i=m,则转入计算r,否则,第i号装置将Gi传送给下一装置即第i+1号装置,直到第m号装置完成Gm的计算;不同的装置计算Gi所采用的计算公式相同或者不同;完成Gm的计算后,由m个装置中的一个装置或者由m个装置之外的一个装置计算r=(e+x1)modn,其中x1取自(x1,y1)=Gm,e是从用户标识和消息M导出的杂凑值;若得到的r、Gm满足:r≠0且[r]G+Gm不是SM2椭圆曲线点群的零元,则继续计算数字签名,否则,重新计算Gm和r,直到r≠0且[r]G+Gm不是SM2椭圆曲线点群的零元;完成r的计算后转入s的计算;第1号装置计算s0=(c0r)modn;第1号装置按如下方式计算s1:若之前计算G1采用公式G1=[c1]G0+[k1]Gd,则s1=(c1s0+k1)modn;若之前计算G1采用公式G1=[c1](G0+[k1])Gd,则s1=c1(s0+k1)modn;第1号装置将s1传送给下一个装置即第2号装置;第i号装置接收到si-1后,i=2,…,m,按如下方式计算si:若之前计算Gi采用公式Gi=[ci]Gi-1+[ki]Gd,则si=(cisi-1+ki)modn;若之前计算Gi采用公式Gi=[ci](Gi-1+[ki]Gd),则si=ci(si-1+ki)modn;若i=m,则转入计算s,否则,第i号装置将si传送给下一装置即第i+1号装置,直到第m号装置完成sm的计算;第m号装置或其他装置计算得到s=(sm-r)modn;则(r,s)就是生成的针对消息M的数字签名。2.根据权利要求1所述的隐藏私钥秘密的数字签名生成方法,其特征是:若dA是预先知道的,则在初始化阶段,预先知道dA的装置按如下方式选取或计算ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:在[1,n-1]区间中随机选择m个整数ci,i=1,…,m,分别交由m个装置安全保存,其中ci是第i号装置保存的整数秘密;计算得到c0=(c1c2…cm)-1(1+dA)-1modn;计算得到Gd=[1+dA]G;计算得到P=[dA]G;在完成c0、Gd和P的计算后,将计算得到的Gd分发给m个装置,将c0交由第1号装置保存,将dA对应的公钥P发布,将dA销毁,将不属于自身保存、使用的ci销毁,i=0,1,…,m;所述预先知道dA的装置是m个装置中的一个装置或者m个装置之外的一个装置。3.根据权利要求1所述的隐藏私钥秘密的数字签名生成方法,其特征是:若dA不是预先知道的,则在初始化阶段,m个装置按如下方式选取ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:m个装置中的每个装置分别在[1,n-1]区间中随机选择一个整数ci,i=1,…,m,其中ci是第i号装置随机选择的整数;第1号装置在[1,n-1]区间中还随机选择一个整数c0;m个装置按如下方式计算得到Gd=[1+dA]G:第1号装置计算P0=[(c0)-1]G,P1=[(c1)-1]P0;第1号装置将P1传送给下一个装置即第2号装置;第i号装置接收到Pi-1后,i=2,…,m,计...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。