安全增強(qiáng)基于RSA可驗(yàn)證門限簽名方案_第1頁
安全增強(qiáng)基于RSA可驗(yàn)證門限簽名方案_第2頁
安全增強(qiáng)基于RSA可驗(yàn)證門限簽名方案_第3頁
安全增強(qiáng)基于RSA可驗(yàn)證門限簽名方案_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、安全增強(qiáng)基于RSA可驗(yàn)證門限簽名方案     摘  要  本文提出一種驗(yàn)證功能完善、安全性更高的門限RSA簽名方案。該門限簽名方案利用有理數(shù)域上的插值公式,Shamir秘密共享方案以及改進(jìn)的門限RSA簽名方案等理論,解決了在 中對(duì)元素求逆和代數(shù)結(jié)構(gòu)擴(kuò)張的問題以及共享服務(wù)器合謀的問題。     關(guān)鍵詞  門限密碼體制,門限簽名,RSA算法,門限RSA簽名方案   1  引言     門限簽名是門限密碼學(xué)的主要研究?jī)?nèi)容之一,最初由Desme

2、dt和Frankel等人引進(jìn)的,并基于ElGamal密碼方案建立了第一個(gè)(t,n)門限密碼體制。在(t,n)門限簽名方案中,n個(gè)成員共享群體的簽名密鑰,使得任何不少于t個(gè)成員的子集可以代表群體產(chǎn)生簽名,而任何少于t個(gè)成員的子集則不能產(chǎn)生簽名。門限簽名方案的基本假設(shè)是:在系統(tǒng)生命周期中,至少有(t-1)個(gè)非誠實(shí)成員。由于RSA算法滿足構(gòu)成門限密碼體制的同態(tài)性要求,并且在CA中被廣泛使用,所以這里選擇基于RSA的門限簽名方案。     但是對(duì)于RSA密碼系統(tǒng),情況要復(fù)雜一些。首先剩余環(huán)不是域,其中的元素未必都可逆,于是不能利用一般的秘密共享方法共享簽名密鑰d;其次,為

3、了保護(hù)RSA模數(shù)N的因子分解,不能讓參與簽名的成員知道,因此給在上建立秘密共享方案和建立門限簽名方案都帶來了困難。另外一個(gè)需要解決的問題是由于采用Shamir秘密共享方案共享簽名私鑰,任意t個(gè)或更多個(gè)成員共享的密鑰就是簽名私鑰,所以他們合謀可以恢復(fù)出秘密密鑰,從而假冒系統(tǒng)生成有效的群簽名。這些問題都是我們?cè)谠O(shè)計(jì)門限簽名方案時(shí)應(yīng)該考慮的。     本文以基于有理數(shù)域上插值公式的Shamir的秘密共享方案為基礎(chǔ),將改進(jìn)的門限RSA簽名體制、兩方共享與(t,n)門限方案相結(jié)合,提出了一個(gè)需要可信任中心的安全性增強(qiáng)的基于門限RSA簽名方案。利用由hash函數(shù)建立的特殊形式

4、的RSA簽名體制,很好解決了在中對(duì)元素求逆和代數(shù)結(jié)構(gòu)擴(kuò)張的問題,為實(shí)現(xiàn)帶來了方便。同時(shí)在簽名過程中對(duì)分發(fā)的子密鑰、部分簽名以及簽名都進(jìn)行了驗(yàn)證,保證子密鑰和簽名的正確性;保證在簽名過程中不會(huì)被敵人入侵和欺詐,同時(shí)也防止了共享服務(wù)器合謀的危險(xiǎn)。因此是一個(gè)安全性更高的門限簽名方案。 2  門限秘密共享方案分析     通過前面的分析我們知道門限秘密共享方案是構(gòu)成門限簽名方案的基礎(chǔ)?,F(xiàn)有的許多門限簽名方案采用的是ITTC項(xiàng)目中的方案,采用隨機(jī)和的拆分方法,也就是將秘密密鑰d按多種(t,t)共享方案分割,每種分割稱為一種聯(lián)合,每種聯(lián)合含有t份子密鑰,這t份子密鑰

5、分別存儲(chǔ)在n個(gè)服務(wù)器中的t個(gè)不同共享服務(wù)器上,不同的子密鑰聯(lián)合對(duì)應(yīng)不同的t個(gè)共享服務(wù)器組合。這種方案具有方法簡(jiǎn)單,運(yùn)算效率高的特點(diǎn),但是它的子密鑰分發(fā)和管理都比較困難。它需要客戶機(jī)或是組合者指定共享服務(wù)器而不具有任意性,對(duì)于客戶機(jī)的要求很高,實(shí)現(xiàn)起來比較困難。     本文采用有理數(shù)域上的插值公式和經(jīng)典的Shamir(t,n)秘密共享方案作為構(gòu)造門限簽名方案的理論基礎(chǔ)。這是因?yàn)镾hamir門限體制具有以下特點(diǎn):     (1)增加新的子密鑰不用改變已有的子密鑰。在參與者P1, P2, , Pn中成員總數(shù)不超過q的條件下可以增加新的成員

6、而不用重新撤銷以前分發(fā)的子密鑰。當(dāng)系統(tǒng)需要增加共享服務(wù)器時(shí),我們只需要對(duì)新增加的服務(wù)器分發(fā)新的子密鑰,而不需要將已經(jīng)分發(fā)的子密鑰一起替換掉,這樣可以減少系統(tǒng)的工作,提高系統(tǒng)效率。     (2)可以通過選用常數(shù)項(xiàng)不變的另一(t-1)次新的多項(xiàng)式,將某個(gè)成員的子密鑰作廢。當(dāng)某個(gè)共享服務(wù)器被攻破時(shí),需要作廢它的子密鑰,我們可以采用這種方法。     (3)組合者可以任意選擇共享服務(wù)器的子密鑰進(jìn)行密鑰恢復(fù)而不需要指定它們。這是我們選擇Shamir(t,n)秘密共享方案的一個(gè)重要原因。當(dāng)共享服務(wù)器完成部分簽名后組合者Combiner可以在n個(gè)

7、服務(wù)器中任意選擇t個(gè)進(jìn)行最后的組合,而不需要去指定由某些服務(wù)器的部分簽名構(gòu)成最后的簽名。     這里我們給出這樣一個(gè)假設(shè):任意t個(gè)共享組件所構(gòu)成的信息與n個(gè)共享組件所構(gòu)成的信息應(yīng)該是完全等價(jià)的。在此基礎(chǔ)上給出本文的基于RSA門限簽名方案。 3  基于RSA門限簽名方案設(shè)計(jì) 3.1 密鑰初始化     定義5-1可信任中心A(Administrator)指將簽名私鑰分給n個(gè)秘密共享者的組件??尚湃伟岛薃一定能確保秘密信息不會(huì)被泄漏,并且在執(zhí)行完密鑰的分發(fā)后將簽名私鑰和其它信息一起銷毀。    

8、 (1)假設(shè)可信任中心A選擇好RSA模數(shù)N,公鑰e和私鑰d以及,使得。其中,模數(shù)N為兩個(gè)安全大素?cái)?shù)p,q的乘積。     (2)取定一個(gè)固定的正整數(shù)k及值域包含于(指中最高兩個(gè)比特為0的數(shù)構(gòu)成的集合)的適當(dāng)?shù)膆ash函數(shù)h(如MD5),H由得到,由于對(duì)N的分解是困難的,所以H(m)是強(qiáng)無碰撞的、單向的函數(shù)。     (3)d1為隨機(jī)數(shù),現(xiàn)在可信任中心A欲將d2分發(fā)給n個(gè)共享服務(wù)器Share Serveri ,將d1發(fā)給密鑰服務(wù)器K。這里簽名私鑰d由d1和d2組成,各共享服務(wù)器共享私鑰d2。 3.2 子密鑰的生成與驗(yàn)證  &#

9、160;  可信任中心A按如下步驟將簽名密鑰d2分發(fā)給n個(gè)共享服務(wù)器Share Serveri 。     (1)A隨機(jī)選取多項(xiàng)式使f(0)=a0= d2,計(jì)算下式:        其中g(shù)是可信任中心A隨機(jī)選取的信息樣本。     A將d2i秘密地發(fā)送給Share Serveri,而將N,n,e,h公開,將所有的g,ci,yi廣播給各Share Serveri,p, q不再使用將其銷毀。     (2)各共享服務(wù)器Share

10、Serveri(i1,2,n)收到可信任中心A發(fā)送來的子密鑰d2i后,利用已廣播的公開信息驗(yàn)證子密鑰d2i的正確性,方法如下:     每個(gè)共享服務(wù)器Share Serveri判斷下面的式子是否成立:            由于(5-4)式是所有共享服務(wù)器都收到的,因此方案中任何的組件都可以驗(yàn)證,故稱為公開驗(yàn)證部分;式(5-5)由每個(gè)共享服務(wù)器自己驗(yàn)證,故稱為秘密驗(yàn)證部分。對(duì)于Share Serveri來說,秘密驗(yàn)證就是用自己的子密鑰d2i和收到的g計(jì)算yi并與從可

11、信中心A發(fā)送的yi比較是否一致來判斷d2i的正確性。     公開驗(yàn)證的正確性說明如下:        當(dāng)公開驗(yàn)證和秘密驗(yàn)證中有一個(gè)不成立就認(rèn)為驗(yàn)證失敗,Share Serveri宣布可信任中心A發(fā)放的子密鑰是錯(cuò)誤的,于是可信任中心A被認(rèn)為是不合格的,協(xié)議至此中止。可信任中心A將重新選擇N和密鑰對(duì)(d,e)重復(fù)上面的步驟發(fā)放新的密鑰,否則可信任中心A分發(fā)密鑰成功,可以進(jìn)行下面步驟。這時(shí)可信任中心A銷毀所分發(fā)的密鑰,以防止密鑰泄露。 3.3  部分簽名的生成與驗(yàn)證   

12、;  首先密鑰服務(wù)器K利用密鑰d1對(duì)消息m的hash函數(shù)值進(jìn)行簽名。然后各共享服務(wù)器Share Serveri利用自己的子密鑰d2i對(duì)消息m的摘要進(jìn)行簽名,如下所示并廣播其部分簽名:        共享服務(wù)器Share Serveri生成對(duì)消息m的部分簽名后,本文借助交互驗(yàn)證協(xié)議來驗(yàn)證Share Serveri的部分簽名是否正確。在交互驗(yàn)證協(xié)議中可以由任何一方來驗(yàn)證部分簽名的正確性,這里為了方便后面系統(tǒng)設(shè)計(jì)故規(guī)定共享服務(wù)器Share Serveri的部分簽名是由Share Serveri1來驗(yàn)證。若協(xié)議成功,則Sh

13、are Serveri1確信Share Serveri的部分簽名S2i是正確的;否則S2i是不正確的。方法如下:     (1)Share Serveri1任意選取a,bR1,N,計(jì)算出 并將R發(fā)送給Share Serveri;     (2)Share Serveri收到R后,計(jì)算出并將發(fā)送給Share Serveri1;     (3)Share Serveri1收到后,根據(jù)下式是否成立來判斷S2i是否為Share Serveri之部分簽名;     

14、   下面我們來說明協(xié)議的安全性,假設(shè)N為兩個(gè)安全素?cái)?shù)p,q之積。若非誠實(shí)驗(yàn)證者P不能攻破RSA系統(tǒng),則上述驗(yàn)證RSA部分簽名的交互式協(xié)議滿足以下性質(zhì):     (1)完備性 若P, Share Serveri都是誠實(shí)的,則Share Serveri總是接受P的證明。     (2)合理性 非誠實(shí)證明者P使Share Serveri接受不正確部分簽名的成功率是可忽略的。     (3)零知識(shí)性 非誠實(shí)驗(yàn)證者除了能知道部分簽名是正確外,不能獲得其他任何信息。 因此由這樣的交互式協(xié)議驗(yàn)證為

15、正確的部分簽名基本可以認(rèn)為是正確的。  3.4 簽名的生成與驗(yàn)證     若已有t個(gè)部分簽名通過正確性驗(yàn)證,則由Combiner(組合服務(wù)器)可以計(jì)算出共享服務(wù)器對(duì)消息m的門限RSA簽名S。     (1)Combiner將xi(i=1,2,t)看作整數(shù)環(huán)Z上的元素,在整數(shù)環(huán)Z上計(jì)算。        (2)各共享服務(wù)器的門限簽名S2的計(jì)算公式如下:          

16、               最后系統(tǒng)的簽名為。     (3)接著Combiner利用公開密鑰e,按下式來驗(yàn)證門限簽名(m, S)的正確性,若成立則接受S為m的合法簽名。      3.5 簽名算法     這里給出了門限簽名方案的實(shí)現(xiàn)算法,其中需要運(yùn)用java.io.*; java.security.*; java.math.*; j

17、avax.crypto.*; javax. crypto.spec.*;java.security.spec.*;java.security. interfaces.*; java.util.*; erfaces.*等系統(tǒng)提供的類和方法。     (1) RSA簽名私鑰生成算法:       public class RSA   KeyPairGenerator kpg=KeyPairGenerator.getInstance ("RSA"); 

18、0;    kpg.initialize(1024);      KeyPair kp=kpg.genKeyPair();      PublicKey pbkey=kp.getPublic();      PrivateKey prkey=kp.getPrivate();      /保存RSA公鑰        FileOutputStream

19、 f1=new FileOutputStream("skey_ RSA_pub.dat");        ObjectOutputStream b1=new ObjectOutputStream (f1);        b1.writeObject(pbkey);     /保存RSA私鑰        FileOutputStream f2=new FileOu

20、tputStream("skey_ RSA_priv.dat");        ObjectOutputStream b2=new ObjectOutputStream (f2);        b2.writeObject(prkey); (2)子密鑰生成算法: public class shareRSA /讀取私鑰d及RSA參數(shù)          FileInputStr

21、eam f=new FileInputStream ("skey_ RSA_priv.dat");                 ObjectInputStream b=new ObjectInput Stream(f);                 RSAPrivateK

22、ey prk=(RSAPrivateKey) b.readObject();                 BigInteger d=prk.getPrivateExponent();                 BigInteger n=prk.getModulus();  

23、60;              byte x=new byte16;                 Random d1=new Random();               

24、  d1.nextBytes(x);                 BigInteger c=new BigInteger(x);                 BigInteger m=c.mod(n);       

25、60;         BigInteger d2=d.subtract(m);                 /保存秘密密鑰d1                 FileOutputStream f1=new Fil

26、eOutput Stream("partkey1_RSA.dat");                ObjectOutputStream b1=new ObjectOutput Stream(f1);                b1.writeObject(d1);     

27、;            /保存秘密密鑰d2                 FileOutputStream f2=new FileOutput Stream ("partkey2_RSA.dat");           &#

28、160;    ObjectOutputStream b2=new ObjectOutput Stream(f2);                b2.writeObject(d2);                     然后根據(jù)實(shí)際選擇的t和n值進(jìn)行多

29、項(xiàng)式的選擇,以d2作為多項(xiàng)式的a0,計(jì)算n個(gè)子密鑰分發(fā)給共享服務(wù)器。     (3)各共享服務(wù)器用子密鑰進(jìn)行數(shù)字簽名算法: public class signature /獲取要簽名的數(shù)據(jù)存放在data數(shù)組      FileInputStream f=new FileInputStream("msg.dat");       int num=f.available();       byte data=n

30、ew bytenum;       f.read(data);       /獲取私鑰      FileInputStream f1=new FileInputStream("partkey2i_ RSA_priv.dat");          ObjectInputStream b=new ObjectInputStream(f1);  &#

31、160;       RSAPrivateKey prk=(RSAPrivateKey)b.read Object();      /數(shù)字簽名                Signature sig=Signature.getInstance("MD5WithRSA");    sig.initSign(prk);

32、   sig.update(data);   byte signature=sig.Sign();     for(int i=0;i<data.length;i+) System.out.println(signaturei+",");  4  結(jié)束語     本章給出了安全增強(qiáng)的基于RSA可驗(yàn)證門限簽名方案的全過程,解決了 中對(duì)元素求逆和代數(shù)結(jié)構(gòu)擴(kuò)張的問題,防止了共享服務(wù)器合謀的威脅。我們可以看到它是更安全可靠的,而且原理也很簡(jiǎn)單。利用這個(gè)方案我們可以將CA簽名私鑰分發(fā)到各個(gè)共享服務(wù)器中,通過共享服務(wù)器對(duì)用戶申請(qǐng)的公鑰證書信息進(jìn)行部分簽名,然后由組合服務(wù)器得到最后的公鑰證書,從而保證公鑰證書的安全可靠,同時(shí)也不會(huì)使系統(tǒng)變得復(fù)雜而難以實(shí)現(xiàn)。 參考

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論