本发明涉及信息安全技术,尤其涉及一种对称环境下多方联合生成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}作为主私钥,计算
其中,q为素数,
2)密钥分发步骤:由kgc为所有参与方分发部分私钥,具体如下:
2.1)kgc计算临时变量t1=h1(ida||hid,q)+ks,若t1=0,则返回步骤1)重新产生签名主私钥,计算和公开签名主公钥,并更新已有用户的签名私钥;否则,转入步骤2.2);
其中,ida为参与数字签名的
2.2)kgc计算临时变量
2.3)由kgc产生τ个
2.4)kgc设置每个参与方
2.5)kgc为每个参与方
2.6)kgc将生成的部分私钥,以及用于分量转化协议的公私钥对,分别安全地发送给对应的参与方
3)联合签名步骤:
3.1)每个参与方
3.2)当收到所有参与方发来的wl(l=1,…,τ)后,计算第二个临时变量
3.3)
所述分量转化协议
3.4)
3.5)当收到所有参与方发来的dl(l=1,…,τ)后,
3.6)
按上述方案,所述步骤3.3)中,分量转化协议
对任意两个参与方
假设
本发明产生的有益效果是:
1、本发明实现了多方联合生成sm9数字签名,签名过程中保证各参与方都不会暴露部分私钥,同时数字签名必须由所有参与方同时参与,这样实现了多方签名的安全性和公平性。
2、本发明基于数学难题,保证即使有一方的私钥丢失,也不会泄露关于完整私钥或其他参与方持有的部分私钥的任何信息。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的交叉相乘算法流程示意图。
图2是本发明实施例的联合生成完整签名的交互流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
对于本方案,生成sm9数字签名时,有τ个参与方,表示为
首先由kgc做如下初始化操作:在集合{1,…,q-1}中kgc随机选择一个整数ks作为主私钥,计算
多方联合sm9数字签名生成算法分为以下主要两步,首先要密钥分发,然后多方联合生成sm9数字签名。
密钥分发由kgc执行。在此过程中,kgc根据参与方的身份标识符ida分别为每个参与方分发密钥,具体操作如下:
1.首先kgc计算一个临时变量t1=h1(ida||hid,q)+ks,若t1=0则需要重新产生签名主私钥,计算和公开签名主公钥,并更新已有用户的签名私钥;否则进行第2步。
2.kgc计算第二个临时变量
3.kgc设置每个参与方
针对
在本发明的签名阶段,需要使用针对
1.
2.
3.
如图2,在联合sm9数字签名生成的阶段,各参与方的操作如下:
1.每个参与方
2.当收到所有参与方发来的
3.每个参与方
4.当收到所有参与方发来的dl(l=1,…,τ)后,
基于本发明的方法,很容易构建实施本发明方法的系统。
基于本发明的sm9数字签名生成方法构建的sm9数字签名生成系统包括任意多个签名参与方,每个参与方按照本发明的数字签名生成方法,联合生成对消息m的数字签名。
本发明具有实现复杂度低、安全性高、易验证等特点,适用于若干参与方在不泄漏各自部分私钥的情况下联合生成sm9数字签名,产生签名的过程必须由所有参与方同时执行,生成sm9数字签名的过程不会泄漏数字签名的原始私钥,保证了私钥的安全性,提高了对称环境下多方参与sm9数字签名生成的安全性和公平性。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。