一种对称环境下多方联合生成SM9数字签名的方法与流程

文档序号:17480824发布日期:2019-04-20 06:26阅读:239来源:国知局
一种对称环境下多方联合生成SM9数字签名的方法与流程

本发明涉及信息安全技术,尤其涉及一种对称环境下多方联合生成sm9数字签名的方法。



背景技术:

数字签名是信息安全技术的重要组成部分。与物理签名或印章的功能类似,数字签名实际上就是一组只有发送者才能产生的电子数据,在身份认证、数据完整性、不可否认性以及匿名性等方面有重要应用。利用数字签名一方面可以验证信息的发送者是合法的且不可抵赖的,即实体认证;另一方面还可以验证发送消息内容的完整性和实效性,即通信数据安全。在数字签名系统中,实现身份认证的基础是公/私钥与用户物理身份的绑定。当前数字签名的部署主要依托于公钥密码基础设施,但是随着网络规模和应用范围的扩大,公钥密码基础设施必须花费大量的时间和成本发放和管理证书。为了简化公钥证书的传输和验证,科研人员提出了基于身份的密码体制,公钥直接从用户的身份信息里获取,自然绑定公钥与实体,可以解决证书管理的难题。

基于身份的数字签名中,公钥来自于用户公开的信息,因此签名的安全性完全依赖于签名密钥的安全性,签名密钥的保管至关重要。一种方式是使用秘密共享方案分散管理签名密钥,例如(k,n)门限签名方案。此方案中签名密钥被映射为n个子密钥,分别交由n位参与者保管。由k个或多于k个参与者所持有的部分信息可重构签名密钥,而少于k个参与者所持有的部分信息得不到关于签名密钥的任何信息。因此,利用秘密共享方案很容易在数据安全、银行网络管理或导弹控制与发射等方面实现权限分配。但是秘密共享方案都是一次性的,在每次签名密钥的恢复过程中,k个或k个以上的参与者都要初始各自的子密钥,从而暴露了所有秘密信息,特别是在只有两个参与方的情况下,某一方恢复并持有完整签名密钥,就可以在另一方不知情的情况下,独立地进行数字签名。即存在以下缺陷:

1、关于私钥的安全性,目前现有的门限秘密共享方案,虽然可以将私钥进行分割,但在签名阶段,私钥会被恢复并被某一方掌握,造成了私钥的泄露,这样降低了多方签名的安全性。

2、关于签名的公平性,目前现有的门限秘密共享方案,最终持有完整私钥的一方可以独立进行签名,不需要全部参与方共同参加,这样降低了多方签名的公平性。

由此可见,基于秘密共享的实现方法对签名密钥的保护较弱,存在密钥泄露的隐患。

针对这种情况,需要设计了一种对称环境下多方联合生成sm9数字签名的方案,此方案在实现多方联合生成签名的情况下,既能保证签名的正确性,又能保证签名的私钥不被泄露,且生成签名的过程中必须由所有参与方同时执行操作。

sm9是由国家密码管理局颁布的一种基于标识的公钥密码算法(参见《sm9标识密码算法》规范,国家密码管理局,2016年3月),基于此算法能实现基于身份的数字签名、密钥交换及数据加密。在这里,不同于各种普通的密钥分割或门限秘密分割。本专利提出的多方联合产生sm9数字签名的方法与系统,只有所有参与者共同参与运算的情况下,才能产生合法签名,同时任何一方都无法得到原始的私钥。



技术实现要素:

本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种对称环境下多方联合生成sm9数字签名的方法。

本发明解决其技术问题所采用的技术方案是:一种对称环境下多方联合生成sm9数字签名的方法,

所述多方有τ(τ≥2)个参与方,表示为

包括以下步骤:

1)初始化步骤:

密钥生成中心kgc产生随机数ks∈{1,…,q-1}作为主私钥,计算中的元素ppub-s=[ks]p2作为主公钥;kgc秘密保存ks,公开ppub-s;然后,kgc选择并公开用一个字节表示的签名私钥生成函数识别符hid;

其中,q为素数,均是阶为q的加法循环群,是阶为q的乘法循环群,p1是的生成元,p2是的生成元;

2)密钥分发步骤:由kgc为所有参与方分发部分私钥,具体如下:

2.1)kgc计算临时变量t1=h1(ida||hid,q)+ks,若t1=0,则返回步骤1)重新产生签名主私钥,计算和公开签名主公钥,并更新已有用户的签名私钥;否则,转入步骤2.2);

其中,ida为参与数字签名的拥有共同的身份标识符;

2.2)kgc计算临时变量并生成基于身份的私钥did=[t2]p1;

2.3)由kgc产生τ个上的随机点q1,…,qτ,并使其满足

2.4)kgc设置每个参与方的私钥为

2.5)kgc为每个参与方生成一对用于分量转化协议的公私钥对(xi,pubi),即交互私钥xi∈{1,…,q-1}以及对应的交互公钥pubi=xi·p1;

2.6)kgc将生成的部分私钥,以及用于分量转化协议的公私钥对,分别安全地发送给对应的参与方

3)联合签名步骤:

3.1)每个参与方计算中的元素g=e(p1,ppub-s),产生部分随机数ri∈{1,…,q-1}并计算第一个临时变量广播wi;

3.2)当收到所有参与方发来的wl(l=1,…,τ)后,计算第二个临时变量并使用w计算签名的第一部分h=h2(m||w,q),其中m是待签名的消息;

3.3)计算第三个临时变量δi=(ri-h/τ)modq,与所有分别执行分量转化协议输入得到第四组临时变量dij,j∈{1,…,τ}/{i};

所述分量转化协议为针对群运算的交叉相乘算法,该算法由任意两个参与方共同完成,假设的输入为的输入为δj,其中δi,δj∈{1,…,q-1},最终双方得到各自的加法分量dij和dji,使其满足

3.4)计算部分加法碎片最后,将di广播给其他参与方;

3.5)当收到所有参与方发来的dl(l=1,…,τ)后,计算第二部分签名

3.6)利用sm9的数字签名验证算法验证产生的签名,若通过,则公布关于消息m的sm9签名sig=(h,s),否则终止协议。

按上述方案,所述步骤3.3)中,分量转化协议表示双方的交互过程的具体如下:

对任意两个参与方产生随机数si∈{1,…,q-1},计算两个中的随机因子ri=si·p1和并把(ri,si)发送给同样地,产生随机数sj∈{1,…,q-1},计算两个中的随机因子rj=sj·p1和sj=sj·随后发送(rj,sj)给

产生中的随机元素作为自己的第一部分加法分量,根据收到的(rj,sj)计算两个中间变量r′j=δi·rj和并把(r′j,s′j)发送给同样地,产生中的随机元素作为自己的第一部分加法分量,并根据收到的(ri,si)计算两个中间变量r′i=δj·ri和随后发送(r′i,s′i)发送给

利用收到的(r′i,s′i)计算自己的第二部分加法分量最后计算完整的加法分量同样地,利用收到的(r′j,s′j)计算第二部分加法分量最后计算完整的加法分量

假设的输入为δi,的输入为δj,其中δi,δj∈{1,…,q-1},则双方得到的加法分量dij和dji满足

本发明产生的有益效果是:

1、本发明实现了多方联合生成sm9数字签名,签名过程中保证各参与方都不会暴露部分私钥,同时数字签名必须由所有参与方同时参与,这样实现了多方签名的安全性和公平性。

2、本发明基于数学难题,保证即使有一方的私钥丢失,也不会泄露关于完整私钥或其他参与方持有的部分私钥的任何信息。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明实施例的交叉相乘算法流程示意图。

图2是本发明实施例的联合生成完整签名的交互流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

对于本方案,生成sm9数字签名时,有τ个参与方,表示为为了使方案的安全性更高,在之间的通信过程中,使用零知识证明,例如交互式的sigma协议来证明发送的数据是来自发送方,降低数据被伪造的风险,同时也可以防止有恶意参与方干扰联合签名过程。

首先由kgc做如下初始化操作:在集合{1,…,q-1}中kgc随机选择一个整数ks作为主私钥,计算中的元素ppub-s=[ks]p2作为主公钥。kgc秘密保存ks,公开ppub-s。最后,kgc选择并公开用一个字节表示的签名私钥生成函数识别符hid。

多方联合sm9数字签名生成算法分为以下主要两步,首先要密钥分发,然后多方联合生成sm9数字签名。

密钥分发由kgc执行。在此过程中,kgc根据参与方的身份标识符ida分别为每个参与方分发密钥,具体操作如下:

1.首先kgc计算一个临时变量t1=h1(ida||hid,q)+ks,若t1=0则需要重新产生签名主私钥,计算和公开签名主公钥,并更新已有用户的签名私钥;否则进行第2步。

2.kgc计算第二个临时变量并产生τ个上的随机点q1,…,qτ,并使其满足

3.kgc设置每个参与方的私钥为同时为每个参与方生成一对用于分量转化协议的公私钥对,即交互私钥xi∈{1,…,q-1}和对应的交互公钥pubi=xi·p1,最后kgc安全地将部分私钥分量转化协议公私钥{xi,pubi}安全地发送给对应的参与方

针对群的分量转化协议

在本发明的签名阶段,需要使用针对群运算的分量转化协议该算法由任意两个参与方共同完成,假设的输入为δi,的输入为δj,其中δi,δj∈{1,…,q-1},最终双方得到各自的加法分量dij和dji,使其满足图1表示双方的交互过程,算法的具体操作如下:

1.产生随机数si∈{1,…,q-1},计算两个中的随机因子ri=si·p1和并把(ri,si)发送给同样地,产生随机数sj∈{1,…,q-1},计算两个中的随机因子rj=sj·p1和随后发送(rj,sj)给

2.产生中的随机元素作为自己的第一部分加法分量,根据收到的(rj,sj)计算两个中间变量r′j=δi·rj和并把(r′j,s′j)发送给同样地,产生中的随机元素作为自己的第一部分加法分量,并根据收到的(ri,si)计算两个中间变量r′i=δj·ri和随后发送(r′i,s′i)发送给

3.利用收到的(r′i,s′i)计算自己的第二部分加法分量最后计算完整的加法分量同样地,利用收到的(r′j,s′j)计算第二部分加法分量最后计算完整的加法分量

如图2,在联合sm9数字签名生成的阶段,各参与方的操作如下:

1.每个参与方计算中的元素g=e(p1,ppub-s),产生部分随机数ri∈{1,…,q-1},计算第一个临时变量同时生成关于(ri,wi)离散对数关系的零知识证明最后广播

2.当收到所有参与方发来的后,每个参与方验证这些零知识证明的正确性。若有一个验证不通过,则中止协议。否则,计算第二个临时变量并计算签名的第一部分h=h2(m||w,q),其中m是待签名的消息。

3.每个参与方计算第三个临时变量δi=(ri-h/τ)modq,使用作为输入,与所有分别执行分量转化协议得到一组临时变量dij,j∈{1,…,τ}/{i},由此计算出部分加法分量最后,将di广播给其他参与方。

4.当收到所有参与方发来的dl(l=1,…,τ)后,可以计算签名的第二部分最后利用sm9的数字签名验证算法验证产生的签名,若通过,则公布关于消息m的sm9签名sig=(h,s),否则终止协议。

基于本发明的方法,很容易构建实施本发明方法的系统。

基于本发明的sm9数字签名生成方法构建的sm9数字签名生成系统包括任意多个签名参与方,每个参与方按照本发明的数字签名生成方法,联合生成对消息m的数字签名。

本发明具有实现复杂度低、安全性高、易验证等特点,适用于若干参与方在不泄漏各自部分私钥的情况下联合生成sm9数字签名,产生签名的过程必须由所有参与方同时执行,生成sm9数字签名的过程不会泄漏数字签名的原始私钥,保证了私钥的安全性,提高了对称环境下多方参与sm9数字签名生成的安全性和公平性。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1