其中 g是可信任中心A随机选取的信息样本  。
A将d2i秘密地发送给Share Serveri,而将N,n,e,h公开,将所有的g,ci,yi广播给各Share Serveri,p, q不再使用将其销毁。
(2)各共享服务器Share Serveri(i=1,2,…,n)收到可信任中心A发送来的子密钥d2i后,利用已广播的公开信息验证子密钥d2i的正确性,方法如下:
①每个共享服务器Share Serveri判断下面的式子是否成立:

②由于(5-4)式是所有共享服务器都收到的,因此方案中任何的组件都可以验证,故称为公开验证部分;式(5-5)由每个共享服务器自己验证,故称为秘密验证部分。对于Share Serveri来说,秘密验证就是用自己的子密钥d2i和收到的g计算yi并与从可信中心A发送的yi比较是否一致来判断d2i的正确性。
③公开验证的正确性说明如下:
当公开验证和秘密验证中有一个不成立就认为验证失败,Share Server i宣布可信任中心A发放的子密钥是错误的,于是可信任中心A被认为是不合格的,协议至此中止。可信任中心A将重新选择N和密钥对( d, e)重复上面的步骤发放新的密钥,否则可信任中心A分发密钥成功,可以进行下面步骤。这时可信任中心A 销毁所分发的密钥,以防止密钥泄露。
3.3 部分签名的生成与验证
首先密钥服务器K利用密钥 d1对消息 m的hash函数值进行签名  。然后各共享服务器Share Server i利用自己的子密钥 d2i对消息 m的摘要进行签名,如下所示并广播其部分签名:

共享服务器Share Serveri生成对消息m的部分签名后,本文借助交互验证协议来验证Share Serveri的部分签名是否正确。在交互验证协议中可以由任何一方来验证部分签名的正确性,这里为了方便后面系统设计故规定共享服务器Share Serveri的部分签名是由Share Serveri+1来验证。若协议成功,则Share Serveri+1确信Share Serveri的部分签名S2i是正确的;否则S2i是不正确的。方法如下:
(1)Share Server i+1任意选取a,b∈ R[1,N],计算出  并将R发送给Share Server i;
(2)Share Server i收到R后,计算出  并将  发送给Share Server i+1;
(3)Share Server i+1收到  后,根据下式是否成立来判断S 2i是否为Share Server i之部分签名;
下面我们来说明协议的安全性,假设N为两个安全素数p,q之积。若非诚实验证者P不能攻破RSA系统,则上述验证RSA部分签名的交互式协议满足以下性质:
(1)完备性 若P, Share Serveri都是诚实的,则Share Serveri总是接受P的证明。
(2)合理性 非诚实证明者P使Share Serveri接受不正确部分签名的成功率是可忽略的。
(3)零知识性 非诚实验证者除了能知道部分签名是正确外,不能获得其他任何信息。
因此由这样的交互式协议验证为正确的部分签名基本可以认为是正确的。
3.4 签名的生成与验证
若已有 t个部分签名  通过正确性验证,则由Combiner(组合服务器)可以 计算出共享服务器对消息 m的门限RSA签名 S。
(1)Combiner将xi(i=1,2,…,t)看作整数环Z上的元素,在整数环Z上计算。

(2)各共享服务器的门限签名S2的计算公式如下:

最后系统的签名为  。
(3)接着Combiner利用公开密钥e,按下式来验证门限签名(m, S)的正确性,若成立则接受S为m的合法签名。

3.5 签名算法
|