一种安全的数字签名系统与方法

文档序号:7957463阅读:358来源:国知局
专利名称:一种安全的数字签名系统与方法
技术领域
本发明涉及网络通信安全技术,更确切地说是涉及一种能容忍入侵的确保数字签名安全的系统与方法。
所谓非对称算法,就是一个人无法通过已知的正向计算参数推导出反向计算的参数,即已知正向计算过程,无反向计算能力。这种非对称算法本身是公开的,但每个人可以选择不同的参数,参数不同,所构成的变换函数就不同。对某个人来说,他可以选择一组参数,其中一部分是用于逆向计算的,称为秘密参数,技术上称为保密密钥或私钥;另一部分是用于正向计算的,是公开的参数,技术上称为公开密钥或公钥。
数字签名就是基于这种非对称算法得以实施的。一方面保护自己的秘密参数-私钥,以保证他人无法冒充自己进行签名,另一方面通过公开可以公开的部分-公钥,供相关人士能够验证该签名(从理论上说,利用公开的参数来推导秘密的参数,在计算上是不可行的)。
数字签名首先是网络通信与交互的保证,可以保证通信对方是真实的,可以保证在网上的就是自己,还可作为签署电子文档时的工具,以保护自己的文档与签名。当今许多国家,已将数字签名视作手写签名,两者具有同样的法律效率。
数字签名算法还可以用于协商秘密(secret)参数。如A用户需要与B用户进行秘密通信时,A用户可以先设定一些秘密参数,然后用B用户的公开密钥(公钥)作用一下,此时只有B用户能够恢复原来的值,因为只有B用户知道自己的保密(private)密钥(私钥)。
此外,数字签名还可以用于需要保密的场所、需要身份认证的场所及其他需要不可否认服务的场所。
现在国际上大力推行的PKI(Public Key Infrastructure公开密钥基础设施)就是数字签名的一种应用,是网络数字社会中最重要的一种基础设施,这种技术的重要性,就象电力基础设施对于工业的作用一样。
为了保证数字签名的安全和速度,在签名前,必须对所签的内容进行HASH计算,求出一个HASH值M(HASH值有时又叫文摘值或杂凑值),然后利用保密密钥(私钥)对文摘结果作变换得到签名值;验证签名时,先对内容作HASH计算,然后再用公开的参数(公钥)作用于签名值,再将得到的结果与上述HASH结果进行比较,若相等,就表示签名正确,否则为验证不通过。
然而,当一用户A有了自己的私钥并公开了公钥时,如果有一个攻击者B重新生成公钥和私钥,并用攻击者B的公钥替换了A用户公开的公钥,此时A用户的朋友发给A用户的信息就只有攻击者B知道了,因为A用户已无法知道由攻击者B假冒的公钥所对应的私钥。这时就需要由一个CA(CertificateAuthority证书权威或证书机构),来证明哪个公钥是A用户的,或者证明哪个公钥不是A用户的。
CA拥有一个比一般用户私钥更长的私钥,也就是说,CA的私钥更安全,而CA的公钥可以通过各种方式广为人知,这样各个用户就可以验证什么是CA所签发的。当一个用户将其身份与其公钥绑定在一起,并由CA签名后,就得到了一个电子证书。这个证书能够证明该公钥拥有者的身份,且任何人都可以验证而任何人却都不能假冒。
目前,电子证书已成为PKI基础设施中最为关键的部分,CA是PKI中最为重要的基本单元。利用电子证书,就可以有效解决网络上的保密性、完整性以及不可否认性等安全问题。
基于PKI的安全性,最终都会归结到对CA私钥的保护,一旦CA的私钥泄露,由CA所颁发的所有证书就都必须作废,整个由CA管辖的网络安全就会变得毫无安全可言。随着网络上各种攻击手段的不断增加,系统漏洞不断被发现,因此如何保证既能在线提供数字签名服务又能保证安全,已成为现代网络安全研究的一个重要课题。
对RSA算法来说,秘密的密钥一般记为d,是一个可以长达2048bits的整数(一般认为,1024bits长度的私钥已经能够保证安全,但对CA来说,采用2048bits或以上则是必须的)。在RSA算法中,用到了对一个数N的模幂计算,即求Mdmod N,该计算是完成数字签名所需要的,当所需公开的参数(公钥)公开后,保护数字d就是保护了私钥。
安全的数字签名所追求的目标是既完成签名又不能泄露私钥,针对该课题国际上已有许多理论方面的研究,其中不少理论与方法因难度太大而无法实现。另一方面,国际上目前开发的重点也是如何实现相互兼容的数字签名产品,而在入侵容忍的安全签名方面则开发的非常少,工业界也没有推出相关的产品。所谓入侵容忍(Intrusion Tolerance)是相对于从检测入侵出发来保证CA安全的技术而言的,即在系统的部分部件被攻击或被占领后,仍不会暴露CA系统的机密信息。
综上所述,PKI是基于公开密钥密码算法的,在PKI系统中,CA又是一个域中的信任中心,网络上设备或个人间的通信与验证都依赖于CA颁发的数字证书(签名)。数字证书是一个将公开密钥与个人身份绑在一起、用CA的私钥签名后得到的数据。在一方要验证通信对方的身份时,可以通过两个步骤完成,首先验证对方的证书签名是否正确(签名只能由CA的私钥完成,只有CA才能够进行签名);再验证对方是否拥有与证书中公钥相对应的私钥,如果两项都能成立,则对方的身份就能被确定,是可以信任的。
因此CA的私钥是CA安全的核心,保护其不泄露是整个CA域安全的基础。一般来说,CA必须是一个在线的网络设备,特别是直接面向用户以便提供相应证书服务的CA,则其遭遇网络攻击就不可避免,当一个黑客成功攻击一台CA时,攻击者就可能获得它的内部资源,从而找到CA的私钥,会给PKI系统造成致命打击,同时在PKI系统的内部雇员完全控制一台CA设备的情况下,为预防起见,也应该确保其没有得到CA的私钥。
下面仅从将签名等价于实现公式Mdmod N(其中d为应该保密的私钥)方面,说明现有的几种安全数字签名方法。
参见

图1,图中示出美国Stanford大学的ITTC项目方案的原型系统框图。该系统通过门槛密码学技术实现系统入侵容忍,系统包括签名方(Clients)、服务器方(Servers)和管理方(Admin)。签名方的Web Server是指需要签名的Web服务器,CA是证书权威或证书机构;服务器方包括多个分享服务器(ShareServer,也可称分享计算器或分享运算器),如图中的分享服务器1至3,负责进行安全的数字签名;管理方(Admin)是一个可选的用于管理各分享服务器的设备。该方案的特点是结构简单和具有很好的安全性,系统中采用了成单层结构的多个分享服务器。
该系统实现安全性的原理是先将私钥d分解成t个数的和d=d1+d2+...+dt;再将各数(di)分配到各个分享服务器中。当需要签名时,客户机(Web或CA)将需要的签名信息-HASH结果M值发给t个分享服务器;各分享服务器再将计算结果Mi=Mdi]]>送回客户机(Web或CA);由客户机(Web或CA)进行乘法计算S=Πi=1tMdi=MΣi=1tdi=Md]]>就得到了需要的结果。
由于不能实现冗余,可进一步采用多组方程来产生冗余配置,即随机找到若干组数,如第一组d=d11+d12+...+d1t;第二组d=d21+d22+...+d2t;
.........,然后将多组数(dij)分到不同的分享服务器中,每个分享服务器得到多个dij,但只得到同组数据中的一个数据(如分享服务器1得到一个第一组数据d11和另一个第二组数据d23)。如,对于有4个分享服务器的情况,在t=3时,可以按下表进行分配

当客户机(Web或CA)需要计算时,由客户机(Web或CA)选定t个完好的分享服务器,然后告诉这些分享服务器使用第几组数据(参数),然后,分享服务器就可以计算相应的签名了。
该技术方案的优点是明显的,其不足之处有如下几点1.密钥的分发和管理比较困难,当增加一个分享服务器时,必须对每一个在线的分享服务器分配密钥数据,同时还要让客户机也知道这个增加;2.当分享服务器很多时,会迅速增加分享服务器的密钥存储量,若设分享服务器的总数量为k,要求完好的分享服务器的总数量为t,则每个分享服务器存储密钥的数量至少为Ckt-1个(C表示组合),当k=10,t=3时,每个分享服务器存储密钥的数量就为45个;3.存在必须先同步的问题,在进行计算前,客户机必须先选定t个分享服务器,当t个分享服务器选择完成后,还必须找到与这t个分享服务器匹配的数据组并通知他们,当其中有一个服务器被破坏时必须重复上述选择分享服务器的整个过程;4.让客户机(CA或Web服务器)记住每次分享服务器的改变是困难的,不容易进行管理与扩展,当客户机在线时,扩展就更加困难,导致每次改变分享服务器时都必须更新客户机。
IBM Research-Zurich研究院的Victor Shoup,在2000年的欧洲密码学年会上发表了名称为“Practical threshold signatures”的文章,介绍的也是一种理论上的方案。该方案使用RSA强素数,其保密的素数p=2p’+1,q=2q’+1。所有的插值方程都在模m=p’q’的环中进行。因为M4m模N等于1,分开计算时增加一次平方,由合成器(Combiner)再分别对各个结果平方一次,从而得到M4(gm+d)。其中Δ=(k!)2,而g为整数。该方案中ci是由合成器(Combiner)完成的,从而消除了计算前的同步问题,但带来了合成器的计算难度,并使计算性能下降。如合成器必须计算yi12λci1yi22λci2···yit2λcit]]>其中yi为各分享服务器的计算结果,λ=k!。
可以看出该方案的特点及存在的不足是1.仍是一种由各分享服务器组成的单层式分享结构,其合成器不存储任何秘密,可以由任何设备完成合成工作;2.合成器的计算量接近或相当于t次签名,这样的计算量远远大于分享服务器的计算量,即使能实现该算法,也是不能用于实际签名的;3.要求使用强素数,会对某些应用带来限制;4.仅从理论上说明当增加或删除分享服务器时不会影响其他设备,但只提供了数学公式,没有任何实现上和系统结构上的说明。
纽约CertCo公司的Yair Frankel等人提出了又一种方案,但没有提供系统实现的框架和细节。在他们的方案中,提出让多项式的系数ai在{0,L,...,2L3N2+et}中,其中L=k!。并取xi属于[1,2,...,k-1]。由于所有f(xi)都能够整除以L,故bi的计算去掉了求逆的操作,可以在整数中进行。该方案可以用一般的RSA算法进行而不需要RSA的强素数。由于其参数的选取大大受限,带来了算法原理及安全证明的复杂性。当分享服务器计算bi时,因为bi依赖xi的选取,也存在着同步问题。
从其数学方案的描述中可以看出,该方案具有以下缺点
1.采用平等的秘密分享,即分享为单层式结构;2.参数的选取是受限的,证明其安全性十分复杂,增加了出现漏洞的可能性;3.存在着需要同步的问题,而如果去掉同步,则又会大大增加合成器的计算量。
以上IBM Research-Zurich研究院的方案及纽约CertCo公司的方案,都是基于Shamir秘密共享的方案,使用LaGrange插值方程。在原Shamir秘密共享方案中,任意取t个密钥就能够生成秘密密钥。但在原Shamir方案中必须先恢复秘密密钥,这是任何方案都不希望的。因为安全签名方案必须首先保证在任何一台设备内都不能恢复出秘密密钥。
这种基于Shamir秘密共享方案的基本原理是给出一个多项式f(x)=Σi=0t-1aixi,]]>利用LaGrange插值公式,有f(x)=Σi=1t(f(xi)Πj-1,tj=ix-xjxi-xj)---(1)]]>任选t个xi和f(xi),可以得到a0=f(0)=Σi=1t(f(xi)Πj=1,tj=i-xjxi-xj)---(2)]]>可以设置a0为秘密密钥d,此时,对一个HASH值M的签名计算为Md=Mf(0)=Πi=1tMf(xi)Πj=1,tj=i-xjxi-xj=Πi=1tMbi---(3)]]>其中bi=f(xi)*ci=f(xi)Πj=1,tj=i-xjxi-xj---(4)]]>这样就可以将秘密密钥d分到k个分享服务器中去(k≥t)。每个分享服务器计算 然后由一个合成器将各个分享服务器的计算结果乘起来,就得到Md,而任何分享服务器都不会泄露秘密密钥d。由于式(4)的bi中有除法计算,这很容易让人想到找一个域或环Zv来进行计算。其中,必须满足的条件是v为素数,或者保证所有由xi构成的t阶(Vandermonde)矩阵的行列式的值与v互素。
在一般情况下,分开计算 后带来的结果就是要做乘法Πi=1tMbi=Md+wv.]]>如何去掉v的影响,许多人想到了用Φ(N),因为MΦ(N)=1。但选择v=Φ(N)会使xi的选取大大受限于上述条件,并且知道了某元素o与其对Φ(N)的逆o-1,就可以求出Φ(N),显然这是不安全的。
因此,从理论上可以看出上述方案都有明显的弱点,距离实际应用还有很多问题需要解决。
本发明的安全数字签名方法,CA以RSA算法为基础。该方法至少应该满足以下条件1.入侵者虽然攻击或占有了系统中的若干部件,或某些关键部件合谋起来进行攻击,也不能得到私钥;2.系统很容易扩充,当需要增加一个分享运算器时,不影响整个系统的工作;3.运行时的管理简单,管理包括增加,撤除,修改服务硬件与软件等,在有系统管理与配置活动时,不能影响系统运行;4.一个或多个设备损坏时不影响正常的服务;5.当一个分享运算器损坏时,整个系统的运行效率不会降低太多,即任务分配单元不需要知道任务执行者的任何信息;6.开始计算时,任何设备都不需要知道他的合作者是谁,故不需要一个合作群的指定机构(预先同步);
7.该系统的算法和原理都应该非常简单;8.设计完成后,整个系统的运行效率应该与常规系统保持在同一个档次。
实现本发明目的的技术方案是这样的一种安全的数字签名系统,其特征在于包括至少一个在线的任务分配器、k个在线的秘密分享运算器、m个在线的秘密分享合成器和离线的子密钥分发器;在线的任务分配器通过第一广播信道与k个秘密分享运算器连接,k个秘密分享运算器通过第二广播信道与m个秘密分享合成器连接,离线的子密钥分发器在系统初始化或进行系统配置时与k个秘密分享运算器及m个秘密分享合成器分别连接,k、m为正整数。
更佳的是还包括一单独设置的输出接口设备,通过第三广播信道与m个秘密分享合成器连接。
更佳的是在所述的在线的任务分配器中设置一输出接口设备,通过所述的第一广播信道与所述的m个秘密分享合成器连接。
所述的至少一个在线的任务分配器、k个在线的秘密分享运算器、m个在线的秘密分享合成器、离线的子密钥分发器均采用普通计算机或服务器。
所述的第一广播信道、第二广播信道及第三广播信道是物理相连的一个信道或完全不相连的独立信道。
实现本发明目的的技术方案还是这样的一种安全的数字签名方法,包括子密钥的发放和计算数字签名,其特征在于所述的子密钥的发放包括以下处理步骤A.设置一个安全数字签名系统,包括在线的任务分配器、在线的k个秘密分享运算器、在线的m个秘密分享合成器、广播信道和离线的子密钥分发器,k、m为正整数;B.离线的子密钥分发器将保存的数字签名私钥d表示成由t个第一子密钥dj及一个第二子密钥ci的和,d、t、c、j、i均为正整数并让t<k,j是第一子密钥di变量的序号;C.离线的子密钥分发器将k个随机数作为第一子密钥dj对应分发到k个秘密分享运算器中,并根据步骤B中的和式通过相减获得一组第二子密钥ci及其方程组合表示,将全部第二子密钥ci及其方程组合表示放在一个大组中;D.离线的子密钥分发器按合成器安全条件对该大组中的全部第二子密钥ci及其方程组合表示进行穷搜,获得m个分组的第二子密钥ci及其方程组合表示E离线的子密钥分发器将m个分组的第二子密钥ci及其方程组合表示对应送到m个秘密分享合成器中预存;所述的计算数字签名包括以下处理步骤F.在线的任务分配器将需要签名的HASH值M通过广播数据包经第一广播信道送往k个秘密分享运算器;G.k个秘密分享运算器中的t个或t个以上的秘密分享运算器根据接收的M值计算升幂 并将本秘密分享运算器的代号j、需要签名的HASH值M及计算结果 通过广播数据包经第二广播信道送往m个秘密分享合成器;H.m个秘密分享合成器将接收结果与预存分组的第二子密钥ci的方程组合表示进行比较,找到可以匹配的方程组合表示并得到相应的第二子密钥ci,再将与组合匹配的t个秘密分享运算器的升幂运算结果相乘得到结果R,根据找到的第二子密钥ci求出 最后将 与R相乘得到数字签名S=Md。
更佳的是,所述的步骤A中还包括给在线的任务分配器任意给定一个代号、给k个秘密分享运算器分别给定不相同的代号、给m个秘密分享合成器分别给定不相同的代号和设定t的初始值。
更佳的是,所述的步骤B中,dj的比特数至少比ci的比特数小4倍。
更佳的是,所述的步骤C,进一步包括c1.由离线的子密钥分发器取k个小于d/t的随机数作为第一子密钥dj;c2.由离线的子密钥分发器通过管理许可的方式将k个第一子密钥dj对应送到k个秘密分享运算器中;c3.由离线的子密钥分发器从k个第一子密钥(d1、d2、d3、...、dk)中取出t个dj,按组合算式形成n=Ckt]]>种组合表示,并根据所述的和式计算所有组合表示所对应的第二子密钥ci,(i=1、2、...、n),构成所述的方程组合表示大组。
更佳的是,所述的步骤D进一步包括d1.对所述的大组中的组合随机设定一个顺序,并随机设定一个空的分组B;d2.从大组中顺序取出一个第二子密钥ci及其方程组合表示,记为组合表示A,判断A放入B中是否满足合成器安全条件,如果满足就放入分组B中并从大组中删除该组合及对应的第二子密钥,如果不满足合成器安全条件,就将该组合及对应的第二子密钥仍旧保持在大组中;d3.针对大组中所有的组合重复执行步骤d2;d4.如果大组中还有组合表示,确定第二个空的分组为B,并重复执行步骤d2、d3,直至大组中已没有任何第二子密钥ci及其方程组合表示时为止;d5.统计形成的不空的分组个数m,是所述的m个分组。
所述的判断是否满足合成器安全条件,进一步包括将组合表示A中变量的序号与分组B中的组合表示qs中变量的序号进行比较,如果组合表示A中有且组合表示qs中没有的变量的序号个数大于t/2,该组合表示A对组合表示qs是满足安全条件的;如果组合表示A对分组B中的每一个组合都满足安全条件,则组合表示A放入分组B中是满足合成器安全条件的。
更佳的是,所述的步骤E,由离线的子密钥分发器通过管理允许的方式将所述m个分组的第二子密钥ci及其对应的方程组合表示对应分送到所述的m个秘密分享合成器中。
更佳的是,所述的离线的子密钥分发器在执行完步骤A、B、C、D、E完成子密钥的分发后,处于物理隔离状态或处于关机状态。
更佳的是,所述的步骤F进一步包括f1.由在线的任务分配器接收数字签名任务,并进行安全检查与核对;f2.由在线的任务分配器为该任务确定一个在预定的时间内对任务分配器是唯一的任务号;f3.由在线的任务分配器将其代号及任务号随需要签名的HASH值M组成所述的广播数据包广播到所述的第一广播信道上;所述的步骤G进一步包括g1.接收到广播后的t个或t个以上的秘密分享运算器向该在线的任务分配器发出已经接收的通知;g2.t个或t个以上的秘密分享运算器检查任务的唯一性,在确定为新任务时进行所述升幂的计算;g3.t个或t个以上的秘密分享运算器还将该在线的任务分配器的代号、任务的任务号随本秘密分享运算器的代号j、需要签名的HASH值M及计算结果 组成所述的广播数据包广播到所述的第二广播信道上;所述的步骤H,进一步包括h1.接收到广播的秘密分享合成器将具有相同任务分配器代号及任务号的广播数据包放在一组中;h2.上述秘密分享合成器至少找出t个广播数据包,再从中找出与所述预存的方程组合表示匹配的一个方程组合表示,并得到对应的第二子密钥ci。
所述的步骤F、G、H是顺序执行完成数字签名的计算操作。
更佳的是,所述的步骤H后还包括一步骤I,由在线的秘密分享合成器,将数字签名S=Md与任务分配器代号、任务号组成广播数据包广播到一在线的输出接口设备上,并由该输出接口设备用公开密钥检查签名结果,是正确时结束数字签名,是错误时进行错误处理或告警。
更佳的是,所述步骤I,是由在线的秘密分享合成器通过一第三广播信道将所述的广播数据包广播到一单独设置的在线的输出接口设备上。
更佳的是,所述步骤I,是由在线的秘密分享合成器通过所述的第一广播信道将所述的广播数据包广播到设置在任务分配器中的输出接口设备上。
本发明的安全的数字签名系统及方法,基于RSA算法,通过一种不平衡的双层结构的秘密分享,克服了背景技术中系统管理与实现上的困难,达到发明的目的。
本发明的方法与系统具有下列特点1.在线的任务分配器无须选定秘密分享运算器和指定密钥就可以广播数字签名任务,在系统更新时可保证不影响在线任务分配器的工作,在某台秘密分享运算器突然损坏时也不会影响广播任务的执行时间(如果指定由某台秘密分享运算器计算,而此台设备最后并没有响应,则必须重新指定设备与密钥并重新开始);2.在增加一台秘密分享运算器时只需给它生成一个子密钥,离线的子密钥分发器会根据新加的秘密分享运算器的序号与已有的秘密分享运算器的序号进行方程组合,计算出相应的第二子密钥c,然后将这些新增的方程组合表示与计算出的c以密钥管理认可的方式添加到秘密分享合成器中去,这种添加是不影响系统工作的;3.在撤除一台秘密分享运算器时,只需关闭该设备,为保证效率起见,可以删除秘密分享合成器中有关该秘密分享计算器序号的组合表示和相应的cn;4.同时,本发明同其他背景技术一样,也具有入侵容忍的能力,当小于t台秘密分享计算器被入侵以后,不会泄露系统秘密d,而且由于增加了秘密分享合成器的结构,即使所有的秘密分享计算器都被入侵,也不会泄露系统秘密d(从理论上也可以证明,攻击秘密分享合成器也无法得到系统秘密d,尽管方程个数很多,但所有方程的系数矩阵的秩小于变量的个数);5.可抵制秘密分享运算器与秘密分享合成器合谋对系统的攻击,即当一台秘密分享运算器与一台秘密分享合成器联合攻击系统时也不能求出秘密d。
图2是本发明的一种安全数字签名系统的结构示意图。
图3是本发明的另一种安全数字签名系统的结构示意图。
图4是一种秘密分享运算器的实施流程框图。
图5是一种秘密分享合成器的实施流程框图。
该结构中包含一台离线的子密钥分发机(器,以下同)21,至少一台在线的任务分配机22、k台在线的秘密分享运算器23、m台在线的秘密分享合成器24和一台独立设置的在线的输出接口设备25。这些设备都可以由不同的普通计算机或服务器来担任。在线的任务分配机22通过广播信道B1(如UDP协议信道)与k台子秘密分享运算器23连接,k台子秘密分享运算器23通过广播信道B2与m台秘密分享合成器24连接,m台秘密分享合成器24通过广播信道B3与输出接口设备25连接,离线的子密钥分发机在系统初始化或进行系统配置时分别连接k台子秘密分享运算器23及m台秘密分享合成器24(如图中虚线所示)。
离线的子密钥分发器21保存秘密d,不与其他系统有网络连接。广播信道B1、B2、B3可以是物理相连的一个广播信道或完全不相连、彼此独立的广播信道。
实现整个系统结构的基础原理是将一个大整数表示成若干个整数的和,采用如d=d1+d2+d3+...+dt+cj的表达式,用dj表示方程中d1至dt中的任意一项,将数字签名中的私钥设为方程中的d,dj的个数有t个,d、d1、d2、d3...dt、cj均为正整数,dj采用随机数以实现简单管理。该方程表达式不同于背景技术中方程表达式d=d1+d2+d3+...+dt的地方是增加了一个cj项(i=1,2,...,n),从而形成一种新的安全的且易于管理的系统结构。
该系统结构对秘密d的分享采用由两层部件共同作用完成,一层部件是由简单的秘密分享运算器23组成的,另一层部件是由秘密分享合成器24组成的,在秘密分享运算器23中分别保存各dj项,在秘密分享合成器中保存cj项,从而形成两层式的秘密分享结构,这两层设备中都存有子密钥,分别为第一子密钥dj与第二子密钥cj。该两层式的分享结构还表现在只有第一层的秘密分享运算器完成计算后,第二层的秘密分享合成器才能开始工作;由于秘密分享合成器中也保存有子密钥cj,因而秘密分享合成器是不可能被其他设备取代的。
系统首先完成子密钥的分发,采用的操作过程如下离线的子密钥分发器21为每个秘密分享运算器23产生一个随机的dj,对有k台秘密运算分享器23的系统来说,就会有k个第一子密钥dj,j=1,2,3,4,...,k。将这些第一子密钥通过密钥管理认可的方式送至对应的秘密分享运算器23。
需预先设计合适的t,t的含义就是当t-1台秘密分享运算器23被入侵后不会影响系统的安全性。应该保证t<k,以保证系统可以从k个秘密分享运算器23中取到t个结果完成运算。
离线的子密钥分发器21从k个子密钥中取出t个子密钥,根据方程d=d1+d2+d3+...+dt+ci再通过作减法可以求出ci。由于从k个中取t个共有 种取法,故可以计算出Ckt个方程的ci。这里,n=Ckt]]>代表组合,如C53=10,]]>就有10个ci值和10个方程组合表示,每一个方程组合表示是所对应的t个第一子密钥dj下标标号(或者说是变量的序号)的组合,这样的一个方程所对应的密钥dj的标号为密钥组合。显然,一个方程组合内的不同的第一子密钥是在不同的秘密分享运算器内,方程组合表示只与第一子密钥dj下标标号j(或者说是变量的序号)有关,不泄露任何子密钥的信息。
dj的比特数远小于(至少小于4倍,)ci的比特数,如当d为2048bits的数时,ci为2048bits的数,dj为500bits的数或更少,以保证秘密分享运算器23的运算速度,从而提高整个数字签名系统的运算速度。
离线的子密钥分发器21对所有的方程组合表示以及对应的ci值,按合成器安全条件通过穷搜进行分组,每一分组内的方程组合表示是有限的,再按分组的个数(m)对应设置秘密分享合成器(m个),来对应存储这些分组的方程组合表示以及对应的ci值。以图中设置5台秘密分享运算器23(k=5)和设t=3为例说明。
如将十个方程分成如下5组第一组c1=d-d1-d2-d3方程组合表示(1,2,3)c6=d-d1-d4-d5方程组合表示(1,4,5)第二组c10=d-d3-d4-d5方程组合表示(3,4,5)c3=d-d1-d2-d5方程组合表示(1,2,5)第三组c2=d-d1-d2-d4方程组合表示(1,2,4)c8=d-d2-d3-d5方程组合表示(2,3,5)第四组c4=d-d1-d3-d4方程组合表示(1,3,4)c9=d-d2-d4-d5方程组合表示(2,4,5)第五组c7=d-d2-d3-d5方程组合表示(2,3,4)c5=d-d1-d3-d5方程组合表示(1,3,5)
则选用5台秘密分享合成器24,分别存储这五组参数。
如何分组是实施本发明方案的关键问题。从秘密分享合成器24看来,其ci是已知的,其他都是未知的变量。合成器安全条件是根据其方程和系统安全性要求提出的,即一个秘密分享合成器内所含方程经线性组合得到的新的方程,其变量的个数大于t。
满足该条件,就可以避免合成器与分享运算器对系统的合谋攻击。但是,该条件过于复杂,无法用程序或流程实现。因此为了实现安全的合成,必须有一个可行的算法。
利用方程的特殊性,可使安全条件简化为一个合成器内由任意两个方程的线性组合得到的方程,其变量的个数大于t。
对于该简化的安全条件,其实施包括以下步骤步骤1,根据d=dj+...+dt+ci的表示式及组合式Ckt,有全部10种ci的方程组合表示,分别为c1=d-d1-d2-d3方程组合表示(1,2,3)c2=d-d1-d2-d4方程组合表示(1,2,4)c3=d-d1-d2-d5方程组合表示(1,2,5)c4=d-d1-d3-d4方程组合表示(1,3,4)c5=d-d1-d3-d5方程组合表示(1,3,5)c6=d-d1-d4-d5方程组合表示(1,4,5)c7=d-d2-d3-d5方程组合表示(2,3,4)c8=d-d2-d3-d5方程组合表示(2,3,5)c9=d-d2-d4-d5方程组合表示(2,4,5)c10=d-d3-d4-d5方程组合表示(3,4,5)将他们全部放入一大组中,并指定以上顺序;步骤2,从该大组中顺序取出一个组合,如方程组合表示(1,2,3),c1=d-d1-d2-d3,并将其放入第一个分组中,该分组记为B;
步骤3,再从大组中顺序取出一个组合,如方程组合表示(1,2,4),c2=d-d1-d2-d4,记为组合表示A,并将分组B中组合表示均记为qs;步骤4,将该组合表示A与第一分组B中的已有组合表示进行比较,判断比较结果是否满足安全条件,包括步骤41,将组合表示A中变量的序号与分组中各组合表示qs中变量的序号进行比较,如果组合表示A中有的且组合表示qs中没有的变量的序号个数大于3/2(t/2),该组合表示qs就算满足安全条件,如组合表示(1,2,3)与(3,4,5)比较,其不同序号的个数为2,在t=3时组合表示(3,4,5)就满足安全条件,显然方程组合表示(1,2,3),c1=d-d1-d2-d3与组合表示A(1,3,5),c5=d-d1-d3-d5,相比较时,其不同序号的个数为1,不能满足安全条件;将对B中所有组合满足安全条件的组合表示A放在分组B中,将不能满足安全条件的分组表示仍保持在大组中;步骤42,对大组中的所有组合表示逐一比较,让满足安全条件的组合表示继续放入分组B中,操作的结果是大组中已没有一个组合表示能符合合成器安全条件,即此时分组B中能满足合成器安全条件的所有组合表示只是(1,2,3)与(3,4,5);步骤5,然后确定第二个分组,并重复步骤2、3、4,直至大组中已没有组合表示时为止,而形成如前所述的五个分组。
该过程执行完成后,将所有不空分组的组合表示取出,每个分组中的组合表示通过管理允许的方式对应预存入一个秘密分享合成器中。
根据随机选取组合表示的不同,所形成的m个分组的组合表示也会是不同的,如第一组c1=d-d1-d2-d3方程组合表示(1,2,3)c9=d-d2-d4-d5方程组合表示(2,4,5)
第二组c2=d-d1-d2-d4方程组合表示(1,2,4)c5=d-d1-d3-d5方程组合表示(1,3,5)第三组c3=d-d1-d2-d5方程组合表示(1,2,5)c4=d-d1-d3-d4方程组合表示(1,3,4)第四组c6=d-d1-d4-d5方程组合表示(1,4,5)c7=d-d2-d3-d5方程组合表示(2,3,4)第五组c8=d-d2-d3-d5方程组合表示(2,3,5)第六组c10=d-d3-d4-d5方程组合表示(3,4,5)这种分组方法的最后结果就是要设置六个秘密分享合成器,来分别预存这六组ci及其方程组合表示。
因此,每个秘密分享合成器24并不存储针对所有子密钥dj的所有组合,但所有秘密分享合成器24存储内容和的结果能保证包含针对秘密分享运算器的所有dj组合。
系统进行计算数字签名的操作过程,运算时,秘密分享运算器23针对其拥有的子密钥计算升幂,秘密分享合成器寻找匹配组合,计算并合成结果。
计算数字签名时任务分配器将需要签名的HASH值M,经广播信道B1通过广播方式送往k个秘密分享运算器23,只要有超过t个正确的秘密分享运算器(指未被攻击的秘密分享运算器)收到数据就可以保证得到计算结果;其中的第j个秘密分享运算器在收到数据后先计算升幂 每一个秘密分享运算器针对其拥有的第一子密钥计算升幂,并将自己的代号j、需要签名的HASH值M及计算结果 经广播信道B2通过广播方式送到秘密分享合成器24;
秘密分享合成器24对接收的数据包采用遍历方法与自己预存的方程组合表示进行比较,找到可以匹配的t个组合表示并得到相应的子密钥ci,再将经组合匹配后的几个升幂结果相乘得到结果R,再根据找到的ci求出 最后将 与R相乘就得到应该得到的数字签名S=Md;秘密分享合成器24将数字签名结果S送到输出接口设备25,输出接口设备25根据公开密钥检查签名结果的正确性。
以上计算流程中,所有广播的数据包内还应包括任务分配器的代号,任务分配器分配的任务代号等。以保证系统能够区分不同的任务,支持多任务并行操作。
参见图3,是一个安全数字签名系统的实施例结构,使用一台离线的子密钥分发器31,5台秘密分享运算器33(k=5),五台秘密分享合成器34,一台在线的任务分配器32并兼做输出接口设备,在线的任务分配器32通过广播信道B1与5台秘密分享运算器33连接,5台秘密分享运算器33通过广播信道B2与五台秘密分享合成器34连接,五台秘密分享合成器34还通过广播信道B1与在线的任务分配器32连接,一台离线的子密钥分发器31在系统初始化或系统配置时分别连接5台秘密分享运算器33及两台秘密分享合成器34。
先进行子密钥的发放操作给定在线的任务分配器32任意一个代号,如22,给定各秘密分享计算器33一个代号,如1,2,3,4,5,给定各秘密分享合成器34一个代号,如1,2,3,4,5,系统设定初始值t=3,由离线的子密钥分发器31掌握秘密密钥d;离线的子密钥分发器31任意选定5个小于d/3(d/t)的随机数d1,d2,d3,d4,d5,通过某种管理许可的方式将d1送到1号秘密分享计算器,将d2送到2号秘密分享计算器,将d3送到3号秘密分享计算器,将d4送到4号秘密分享计算器,将d5送到5号秘密分享计算器;根据d=dj+...+dt+ci的表示式及组合式Ckt,组成一个大组,含有10种ci的方程组合表示及10个ci;
按分享器安全条件通过穷搜获得五个分组及其ci的组合表示;离线的子密钥分发器31将这五个分组的ci值及相应的方程组合表示一起以管理允许的方式对应送到五个秘密分享合成器34中,即每个秘密分享合成器34中各有二个方程组合表示和二个对应的ci值。
子密钥发放完成后,离线的子密钥分发器31就可以关机了。
计算数字签名的工作流程为由在线的任务分配器32接收必须签名的任务,并做相应的安全检查和核对,然后求需要签名的HASH值M;由在线的任务分配器32为当前的签名确定一个任务号,该任务号应该在一定时间范围内(如两天)对该任务分配器来说是唯一的;任务分配器将自己的代号(22),该任务的任务号,HASH值M组成一个数据包广播到广播信道B1上;秘密分享计算器j(秘密分享计算器33中的至少3个秘密分享计算器,t=3)收到广播后,通知任务分配器32已经成功接收;秘密分享计算器j检查任务的唯一性,当该任务为新任务时,计算 秘密分享计算器j将自己的代号j,任务分配器代号22,任务号,HASH值M和计算结果 向广播信道B2广播;秘密分享合成器34接收该广播数据包,并将具有相同任务分配器代号和任务号的信息放在同一组中;秘密分享合成器34在一组结果中检查是否有三个以上结果且有3个与存储的方程组合表示匹配,如果有,找到相应匹配的方程组合表示,得到对应的ci,根据ci求 然后计算R(是对应的三个与组合表示匹配的结果的乘积),最后将 与R相乘就得到应该得到的数字签名S=Md;秘密分享合成器34将任务分配器的代号,任务号和数字签名结果S=Md送到广播信道B1上;任务分配器32接收数字签名结果后,用公开密钥检查签名结果是否正确,如果错误,进入错误处理或告警,如果检查合格即结束计算任务。
本实施例中各细化的执行步骤同样适用于图2实施例。
本发明的方法能有效地抵制秘密分享合成器和秘密分享计算器联合时对系统的合谋攻击。如上例中,任何一个分享合成器要与至少三台秘密分享运算器合谋才能得到秘密d。而能有力地抵制分享合成器与分享运算器的合谋攻击。
参见图4、图5,分别为图2、图3中秘密分享运算器和秘密分享合成器的实施流程框图,是一种具体的实用流程。其实现是采用多线程技术,即计算机操作系统中使用的多任务并行技术,如图中所示的三个线程任务处理程序、监听程序和界面程序,来实现一个秘密分享运算器或秘密分享合成器。所有需要计算的任务由一个任务队列来进行管理,而计算所需的系统参数(包括子密钥)也是三个线程都能够存取的。
其中的任务处理程序是专门用于计算的,由于计算是最费时的一项工作,所以单独创建一个线程进行计算,以保证在计算时能够继续保持与用户间的交互,同时能够保持对网络数据的监听从而不丢失网络数据。该线程首先利用事件同步机制进行等候,可以在没有任务的时候节约CPU的时间,可以使用象NT中的EVENT之类的系统事件来进行同步;当任务执行线程被唤醒后,它扫描系统的任务队列,找到应该处理的任务进行处理,包括应该重新发送的数据包的发送。
监听程序是为了保证网络通信的数据不丢失而设置的,单独采用一个线程来监听网络的广播数据,该流程只进行简单的任务处理,如删除一个任务或增加一个任务,当有新的计算任务时,唤醒任务处理线程。
界面程序用于用户界面处理,也单独采用一个线程,以保证在不影响系统运行的情况下修改系统的参数、增加子密钥等。
按本发明技术方案设计的具有安全功能的数字签名设备,可以广泛应用于企事业中,每个设备针对每个企业存储一套相应数据,任务分配器在广播任务时就将企业代号放在数据包中,以区分不同的企业,秘密分享运算器根据企业代号找到相应的密钥并计算,计算结果连同企业代号一起送往合成器。
整个系统增加企业代号的管理以后,系统可以成为多个不同层次的用户、企业的代理,代理他们进行安全的数字签名。而子密钥分发器和任务分配器可以由企业或个人自己控制。在这种结构下,就构成了多个子密钥分发中心、多个任务分配器、多个密秘分享运算器,多个秘密分享合成器的格局,而成为一个完善的安全数字签名服务体系。
本发明的系统结构简单,易于实现,有入侵容忍能力,虽然签一次名的总工作量与一般签名相比是增加了,但是能确保系统安全,通过采用并行计算并使dj的比特数远小于ci的比特数(至少4倍),而能使总的签名时间基本与一般签名时间相等,更重要的是能对付秘密分享运算器与秘密分享合成器联合对系统的攻击。
本发明方案的不足之处是为抵制秘密分享合成器与秘密分享运算器合谋对系统进行攻击,会使秘密分享合成器的数量大幅攀升,如当秘密分享计算器的台数变为6时,秘密分享合成器的台数会涨到8,从而消耗了太多的硬件资源;此外,如此组合秘密分享合成器与秘密分享运算器,会导致任务的不均衡,即一个数字签名任务需要至少t个秘密分享运算器计算一次,但却只需要一台秘密分享合成器参与工作,如上述举例中,秘密分享合成器的个数多于秘密分享运算器的个数,这存在着两者工作不均衡的问题。
权利要求
1.一种安全的数字签名系统,其特征在于包括至少一个在线的任务分配器、k个在线的秘密分享运算器、m个在线的秘密分享合成器和离线的子密钥分发器;在线的任务分配器通过第一广播信道与k个秘密分享运算器连接,k个秘密分享运算器通过第二广播信道与m个秘密分享合成器连接,离线的子密钥分发器在系统初始化或进行系统配置时与k个秘密分享运算器及m个秘密分享合成器分别连接,k、m为正整数。
2.根据权利要求1所述的一种安全的数字签名系统,其特征在于还包括一单独设置的输出接口设备,通过第三广播信道与m个秘密分享合成器连接。
3.根据权利要求1所述的一种安全的数字签名系统,其特征在于所述在线的任务分配器中还设置有一输出接口设备,通过所述的第一广播信道与所述的m个秘密分享合成器连接。
4.根据权利要求1或2或3所述的一种安全的数字签名系统,其特征在于所述的至少一个在线的任务分配器、k个在线的秘密分享运算器、m个在线的秘密分享合成器、离线的子密钥分发器均采用普通计算机或服务器。
5.根据权利要求1或2或3所述的一种安全的数字签名系统,其特征在于所述的第一广播信道、第二广播信道及第三广播信道是物理相连的一个信道或完全不相连的独立信道。
6.一种安全的数字签名方法,包括子密钥的发放和计算数字签名,其特征在于所述的子密钥的发放包括以下处理步骤A.设置一个安全数字签名系统,包括在线的任务分配器、在线的k个秘密分享运算器、在线的m个秘密分享合成器、广播信道和离线的子密钥分发器,k、m为正整数;B.离线的子密钥分发器将保存的数字签名私钥d表示成由t个第一子密钥dj及一个第二子密钥ci的和,d、t、c、j、i均为正整数并让t<k,j是第一子密钥dj变量的序号;C.离线的子密钥分发器将k个随机数作为第一子密钥dj,对应分发到k个秘密分享运算器中,并根据步骤B中的和式通过相减获得一组第二子密钥ci及其方程组合表示,将全部第二子密钥ci及其方程组合表示放在一个大组中;D.离线的子密钥分发器按合成器安全条件对该大组中的全部第二子密钥ci及其方程组合表示进行穷搜,获得m个分组的第二子密钥ci及其方程组合表示E.离线的子密钥分发器将m个分组的第二子密钥cj及其方程组合表示对应送到m个秘密分享合成器中预存;所述的计算数字签名包括以下处理步骤F.在线的任务分配器将需要签名的HASH值M通过广播数据包经第一广播信道送往k个秘密分享运算器;G.k个秘密分享运算器中的t个或t个以上的秘密分享运算器根据接收的M值计算升幂 并将本秘密分享运算器的代号j、需要签名的HASH值M及计算结果 通过广播数据包经第二广播信道送往m个秘密分享合成器;H.m个秘密分享合成器将接收结果与预存分组的第二子密钥ci的方程组合表示进行比较,找到可以匹配的方程组合表示并得到相应的第二子密钥ci,再将与组合匹配的t个秘密分享运算器的升幂运算结果相乘得到结果R,根据找到的第二子密钥ci求出 最后将 与R相乘得到数字签名S=Md。
7.根据权利要求6所述的一种安全的数字签名方法,其特征在于所述的步骤A中还包括给在线的任务分配器任意给定一个代号、给k个秘密分享运算器分别给定不相同的代号、给m个秘密分享合成器分别给定不相同的代号和设定t的初始值。
8.根据权利要求6所述的一种安全的数字签名方法,其特征在于所述的步骤B中,dj的比特数至少比ci的比特数小4倍。
9.根据权利要求6所述的一种安全的数字签名方法,其特征在于所述的步骤C,进一步包括c1.由离线的子密钥分发器取k个小于d/t的随机数作为第一子密钥dj;c2.由离线的子密钥分发器通过管理许可的方式将k个第一子密钥dj对应送到k个秘密分享运算器中;c3.由离线的子密钥分发器从k个第一子密钥(d1、d2、d3、...、dk)中取出t个dj,按组合算式形成n=Ckt]]>种组合表示,并根据所述的和式计算所有组合表示所对应的第二子密钥ci,(i=1、2、...、n),构成所述的方程组合表示大组。
10.根据权利要求6所述的一种安全的数字签名方法,其特征在于所述的步骤D进一步包括d1.对所述的大组中的组合随机设定一个顺序,并随机设定一个空的分组B;d2.从大组中顺序取出一个第二子密钥ci及其方程组合表示,记为组合表示A,判断A放入B中是否满足合成器安全条件,如果满足就放入分组B中并从大组中删除该组合及对应的第二子密钥,如果不满足合成器安全条件,就将该组合及对应的第二子密钥仍旧保持在大组中;d3.针对大组中所有的组合重复执行步骤d2;d4.如果大组中还有组合表示,确定第二个空的分组为B,并重复执行步骤d2、d3,直至大组中已没有任何第二子密钥ci及其方程组合表示时为止;d5.统计形成的不空的分组个数m,是所述的m个分组。
11.根据权利要求10所述的一种安全的数字签名方法,其特征在于所述的判断是否满足合成器安全条件,进一步包括将组合表示A中变量的序号与分组B中的组合表示qs中变量的序号进行比较,如果组合表示A中有且组合表示qs中没有的变量的序号个数大于t/2,该组合表示A对组合表示qs是满足安全条件的;如果组合表示A对分组B中的每一个组合都满足安全条件,则组合表示A放入分组B中是满足合成器安全条件的。
12.根据权利要求6所述的一种安全的数字签名方法,其特征在于所述的步骤E,由离线的子密钥分发器通过管理允许的方式将所述m个分组的第二子密钥ci及其对应的方程组合表示对应分送到所述的m个秘密分享合成器中。
13.根据权利要求6所述的一种安全的数字签名方法,其特征在于所述的离线的子密钥分发器在执行完步骤A、B、C、D、E完成子密钥的分发后,处于物理隔离状态或处于关机状态。
14.根据权利要求6所述的一种安全的数字签名方法,其特征在于所述的步骤F进一步包括f1.由在线的任务分配器接收数字签名任务,并进行安全检查与核对;f2.由在线的任务分配器为该任务确定一个在预定的时间内对任务分配器是唯一的任务号;f3.由在线的任务分配器将其代号及任务号随需要签名的HASH值M组成所述的广播数据包广播到所述的第一广播信道上;所述的步骤G进一步包括g1.接收到广播后的t个或t个以上的秘密分享运算器向该在线的任务分配器发出已经接收的通知;g2.t个或t个以上的秘密分享运算器检查任务的唯一性,在确定为新任务时进行所述升幂的计算;g3.t个或t个以上的秘密分享运算器还将该在线的任务分配器的代号、任务的任务号随本秘密分享运算器的代号j、需要签名的HASH值M及计算结果 组成所述的广播数据包广播到所述的第二广播信道上;所述的步骤H,进一步包括h1.接收到广播的秘密分享合成器将具有相同任务分配器代号及任务号的广播数据包放在一组中;h2.上述秘密分享合成器至少找出t个广播数据包,再从中找出与所述预存的方程组合表示匹配的一个方程组合表示,并得到对应的第二子密钥ci。
15.根据权利要求6或14所述的一种安全的数字签名方法,其特征在于所述的步骤F、G、H是顺序执行完成数字签名的计算操作。
16.根据权利要求6所述的一种安全的数字签名方法,其特征在于所述的步骤H后还包括一步骤I,由在线的秘密分享合成器,将数字签名S=Md与任务分配器代号、任务号组成广播数据包广播到一在线的输出接口设备上,并由该输出接口设备用公开密钥检查签名结果,是正确时结束数字签名,是错误时进行错误处理或告警。
17.根据权利要求16所述的一种安全的数字签名方法,其特征在于所述步骤I,是由在线的秘密分享合成器通过一第三广播信道将所述的广播数据包广播到一单独设置的在线的输出接口设备上。
18.根据权利要求16所述的一种安全的数字签名方法,其特征在于所述步骤I,是由在线的秘密分享合成器通过所述的第一广播信道将所述的广播数据包广播到设置在任务分配器中的输出接口设备上。
全文摘要
本发明涉及一种安全的数字签名系统与方法。系统包括通过广播信道连接的任务分配器、k个运算器、m个合成器和子密钥分发器。子密钥的发放操作包括由子密钥分发器将私钥d表示成由t个子密钥d
文档编号H04L9/32GK1411201SQ0113601
公开日2003年4月16日 申请日期2001年9月28日 优先权日2001年9月28日
发明者荆继武, 冯登国, 周天阳 申请人:中国科学院研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1