一种隐藏私钥秘密的数字签名生成方法及系统技术方案

技术编号:16923002 阅读:17 留言:0更新日期:2017-12-31 17:05
本发明专利技术涉及一种隐藏私钥秘密的数字签名生成方法:m或m+1个装置使用随机生成的、与用户SM2私钥dA毫无关系的秘密c1,…,cm以及隐藏了私钥dA的c0=(c1c2…cm)

【技术实现步骤摘要】
一种隐藏私钥秘密的数字签名生成方法及系统
本专利技术属于信息安全
,特别是一种隐藏私钥秘密的数字签名生成方法及系统。
技术介绍
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一旦分割、共享,秘密份额就不能改变(改变意味着私钥的改变),而秘密份额长时间保持不变,会增大被破解的风险。专利技术内容本专利技术的目的是提出一种能隐藏私钥秘密、能对秘密更新的数字签名生成方法以及相应的系统,以便进一步提高基于协同计算的SM2数字签名生成方法的安全性,降低私钥破解的风险。针对本专利技术的目的,本专利技术提出的技术方案是一种隐藏私钥秘密的数字签名生成方法及系统。在以下对本专利技术技术方案的描述中,若P、Q是椭圆曲线点群中的元素(点),则P+Q表示P、Q的点加,P-Q表示P加上Q的逆元,[k]P表示k个椭圆曲线点P的点加,即P+P+...+P(共有k个P);省略号“...”,表示多个同样(类型)的数据项或多个同样的运算;c-1表示整数c的模n乘法逆(即cc-1modn=1);多个整数相乘(包括整数符号相乘、常数与整数符号相乘),在不产生二义性的情况下,省略掉乘号“·”,如k1·k2简化为k1k2,3·c,简化位3c;modn表示模n运算(modulooperation),对应于《SM2椭圆曲线公钥密码算法》规范(国家密码管理局,2010年12月)中的modn;还有,模n运算的算子modn的优先级是最低的,如a+bmodn等同于(a+b)modn,a-bmodn等同于(a-b)modn,abmodn等同于(ab)modn。本专利技术的隐藏私钥秘密的数字签名生成方法又包括基本方法和派生的方法,其中基本方法如下。所述基本方法涉及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的阶(SM2密码运算所使用的椭圆曲线点群是指由基点G生成的循环群);(这里c0实际上是使用秘密c1,c2,…,cm对私钥秘密(1+dA)-1进行加密的结果,即加密的私钥秘密)在初始化阶段预先计算得到:Gd=[1+dA]G,P=[dA]G,其中,dA是用户的SM2私钥,G是SM2密码运算所使用的椭圆曲线点群的基点,P是dA对应的公钥;将Gd分发给所述m个装置、将公钥P公开发布;当需要使用用户的SM2私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的生成(需要使用用户的SM2私钥dA、针对消息M进行数字签名的主体可以是调用这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导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范);若得到的r、Gm满足:r≠0且[r]G+Gm不是SM2椭圆曲线点群的零元(无穷远点),则继续计算数字签名,否则,重新计算Gm和r(可以从G1从头开始重新计算),直到r≠0且[r]G+Gm不是SM2椭圆曲线点群的零元(无穷远点);完成r的计算后转入s的计算;第1号装置计算s0=(c0r)modn(即s0=(c0·r)modn);第1号装置按如下方式计算s1:若之前计算G1采用公式G1=[c1]G0+[k1]Gd,则s1=(c1s0+k1)modn;若之前计算G1采用公式G1=[c1](G0+[k1])Gd,则s1=c1(s0+k1)modn;(此时计算s1的k1与计算G1的k1相同)第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;(此时计算si的ki与计算Gi的ki相同)若i=m,则转入计算s,否则,第i号装置将si传送给下一装置即第i+1号装置,直到第m号装置完成sm的计算;第m号装置或其他装置计算得到s=(sm-r)modn;则(r,s)就是生成的针对消息M的数字签名。最后计算得到(r,s)的装置,利用消息M及用户私钥dA对应的公钥验证数字签名(r,s)的有效性,若无效则m个装置重新进行数字签名的生成。在以上所述方法中,c0即便公开以上所述方法也是安全的,除非m个装置共谋,c0即便公开了攻击者也无法得到用户的SM2私钥dA,但不公开,更安全。若dA是预先知道的(已生成),则在初始化阶段,预先知道dA的装置按如下方式选取或计算ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P本文档来自技高网...

【技术保护点】
一种隐藏私钥秘密的数字签名生成方法,其特征是:所述方法涉及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,计...

【专利技术属性】
技术研发人员:龙毅宏
申请(专利权)人:武汉理工大学
类型:发明
国别省市:湖北,42

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

1