安全增强的基于RSA可验证门限签名方案_第1页
安全增强的基于RSA可验证门限签名方案_第2页
安全增强的基于RSA可验证门限签名方案_第3页
安全增强的基于RSA可验证门限签名方案_第4页
安全增强的基于RSA可验证门限签名方案_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安全增强的基于RSA可验证门限签名方案                         摘  要  本文提出一种验证功能完善、安全性更高的门限RSA签名方案。该门限签名方案利用有理数域上的插值公式,Shamir秘密共享方案以及改进的门限RSA签名方案等理论,解决了在 中对元素求逆和代数结构扩张的问题以及共享服务器合谋的问题。 &

2、#160;   关键词  门限密码体制,门限签名,RSA算法,门限RSA签名方案 1  引言    门限签名是门限密码学的主要研究内容之一,最初由Desmedt和Frankel等人引进的,并基于ElGamal密码方案建立了第一个(t,n)门限密码体制。在(t,n)门限签名方案中,n个成员共享群体的签名密钥,使得任何不少于t个成员的子集可以代表群体产生签名,而任何少于t个成员的子集则不能产生签名。门限签名方案的基本假设是:在系统生命周期中,至少有(t-1)个非诚实成员。由于RSA算法满足构成门限密码体制的同态性要求,

3、并且在CA中被广泛使用,所以这里选择基于RSA的门限签名方案。    但是对于RSA密码系统,情况要复杂一些。首先剩余环    本文以基于有理数域上插值公式的Shamir的秘密共享方案为基础,将改进的门限RSA签名体制、两方共享与(t,n)门限方案相结合,提出了一个需要可信任中心的安全性增强的基于门限RSA签名方案。利用由hash函数建立的特殊形式的RSA签名体制,很好解决了在2  门限秘密共享方案分析     通过前面的分析我们知道门限秘密共享方案是构成门限签名方案的基础。现有的许多门限签名方

4、案采用的是ITTC项目中的方案,采用随机和的拆分方法,也就是将秘密密钥d按多种(t,t)共享方案分割,每种分割称为一种联合,每种联合含有t份子密钥,这t份子密钥分别存储在n个服务器中的t个不同共享服务器上,不同的子密钥联合对应不同的t个共享服务器组合。这种方案具有方法简单,运算效率高的特点,但是它的子密钥分发和管理都比较困难。它需要客户机或是组合者指定共享服务器而不具有任意性,对于客户机的要求很高,实现起来比较困难。    本文采用有理数域上的插值公式和经典的Shamir(t,n)秘密共享方案作为构造门限签名方案的理论基础。这是因为Shamir门限体制具有以下特点

5、:    (1)增加新的子密钥不用改变已有的子密钥。在参与者P1, P2, , Pn中成员总数不超过q的条件下可以增加新的成员而不用重新撤销以前分发的子密钥。当系统需要增加共享服务器时,我们只需要对新增加的服务器分发新的子密钥,而不需要将已经分发的子密钥一起替换掉,这样可以减少系统的工作,提高系统效率。    (2)可以通过选用常数项不变的另一(t-1)次新的多项式,将某个成员的子密钥作废。当某个共享服务器被攻破时,需要作废它的子密钥,我们可以采用这种方法。    (3)组合者可以任意选择共享服务器的子密

6、钥进行密钥恢复而不需要指定它们。这是我们选择Shamir(t,n)秘密共享方案的一个重要原因。当共享服务器完成部分签名后组合者Combiner可以在n个服务器中任意选择t个进行最后的组合,而不需要去指定由某些服务器的部分签名构成最后的签名。    这里我们给出这样一个假设:任意t个共享组件所构成的信息与n个共享组件所构成的信息应该是完全等价的。在此基础上给出本文的基于RSA门限签名方案。3  基于RSA门限签名方案设计3.1 密钥初始化    定义5-1可信任中心A(Administrator)指将签名私钥分给n个秘密共享者

7、的组件。可信任暗含了A一定能确保秘密信息不会被泄漏,并且在执行完密钥的分发后将签名私钥和其它信息一起销毁。    (1)假设可信任中心A选择好RSA模数N,公钥e和私钥d以及    (2)取定一个固定的正整数k及值域包含于    (3)d1为随机数,3.2 子密钥的生成与验证    可信任中心A按如下步骤将签名密钥d2分发给n个共享服务器Share Serveri 。    (1)A随机选取多项式    其中g是可信

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

9、-4)式是所有共享服务器都收到的,因此方案中任何的组件都可以验证,故称为公开验证部分;式(5-5)由每个共享服务器自己验证,故称为秘密验证部分。对于Share Serveri来说,秘密验证就是用自己的子密钥d2i和收到的g计算yi并与从可信中心A发送的yi比较是否一致来判断d2i的正确性。    公开验证的正确性说明如下:    当公开验证和秘密验证中有一个不成立就认为验证失败,Share Serveri宣布可信任中心A发放的子密钥是错误的,于是可信任中心A被认为是不合格的,协议至此中止。可信任中心A将重新选择N和密钥对(d,e)重复

10、上面的步骤发放新的密钥,否则可信任中心A分发密钥成功,可以进行下面步骤。这时可信任中心A销毁所分发的密钥,以防止密钥泄露。3.3  部分签名的生成与验证    首先密钥服务器K利用密钥d1对消息m的hash函数值进行签名    共享服务器Share Serveri生成对消息m的部分签名后,本文借助交互验证协议来验证Share Serveri的部分签名是否正确。在交互验证协议中可以由任何一方来验证部分签名的正确性,这里为了方便后面系统设计故规定共享服务器Share Serveri的部分签名是由Share Serveri1来验证

11、。若协议成功,则Share Serveri1确信Share Serveri的部分签名S2i是正确的;否则S2i是不正确的。方法如下:    (1)Share Serveri1任意选取a,bR1,N,计算出     (2)Share Serveri收到R后,计算出    (3)Share Serveri1收到    下面我们来说明协议的安全性,假设N为两个安全素数p,q之积。若非诚实验证者P不能攻破RSA系统,则上述验证RSA部分签名的交互式协议满足以下性质: 

12、60;  (1)完备性 若P, Share Serveri都是诚实的,则Share Serveri总是接受P的证明。    (2)合理性 非诚实证明者P使Share Serveri接受不正确部分签名的成功率是可忽略的。    (3)零知识性 非诚实验证者除了能知道部分签名是正确外,不能获得其他任何信息。因此由这样的交互式协议验证为正确的部分签名基本可以认为是正确的。              &#

13、160;               3.4 签名的生成与验证    若已有t个部分签名    (1)Combiner将xi(i=1,2,t)看作整数环Z上的元素,在整数环Z上计算。    (2)各共享服务器的门限签名S2的计算公式如下:          &

14、#160;         最后系统的签名为    (3)接着Combiner利用公开密钥e,按下式来验证门限签名(m, S)的正确性,若成立则接受S为m的合法签名。  3.5 签名算法        (1) RSA签名私钥生成算法:      public class RSA   KeyPairGenerator kpg=KeyPairGener

15、ator.getInstance ("RSA");     kpg.initialize(1024);     KeyPair kp=kpg.genKeyPair();     PublicKey pbkey=kp.getPublic();     PrivateKey prkey=kp.getPrivate();     /保存RSA公钥   &

16、#160;   FileOutputStream f1=new FileOutputStream("skey_ RSA_pub.dat");       ObjectOutputStream b1=new ObjectOutputStream (f1);       b1.writeObject(pbkey);    /保存RSA私钥      

17、FileOutputStream f2=new FileOutputStream("skey_ RSA_priv.dat");       ObjectOutputStream b2=new ObjectOutputStream (f2);       b2.writeObject(prkey);(2)子密钥生成算法:public class shareRSA /读取私钥d及RSA参数      

18、   FileInputStream f=new FileInputStream ("skey_ RSA_priv.dat");                ObjectInputStream b=new ObjectInput Stream(f);                RSAPrivateKey prk=(RSAPrivateKey) b.readObject();                BigInteger d=prk.getPrivateExponent();&#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论