



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、安全增強基于RSA可驗證門限簽名方案 摘 要 本文提出一種驗證功能完善、安全性更高的門限RSA簽名方案。該門限簽名方案利用有理數域上的插值公式,Shamir秘密共享方案以及改進的門限RSA簽名方案等理論,解決了在 中對元素求逆和代數結構擴張的問題以及共享服務器合謀的問題。 關鍵詞 門限密碼體制,門限簽名,RSA算法,門限RSA簽名方案 1 引言 門限簽名是門限密碼學的主要研究內容之一,最初由Desme
2、dt和Frankel等人引進的,并基于ElGamal密碼方案建立了第一個(t,n)門限密碼體制。在(t,n)門限簽名方案中,n個成員共享群體的簽名密鑰,使得任何不少于t個成員的子集可以代表群體產生簽名,而任何少于t個成員的子集則不能產生簽名。門限簽名方案的基本假設是:在系統生命周期中,至少有(t-1)個非誠實成員。由于RSA算法滿足構成門限密碼體制的同態性要求,并且在CA中被廣泛使用,所以這里選擇基于RSA的門限簽名方案。 但是對于RSA密碼系統,情況要復雜一些。首先剩余環不是域,其中的元素未必都可逆,于是不能利用一般的秘密共享方法共享簽名密鑰d;其次,為
3、了保護RSA模數N的因子分解,不能讓參與簽名的成員知道,因此給在上建立秘密共享方案和建立門限簽名方案都帶來了困難。另外一個需要解決的問題是由于采用Shamir秘密共享方案共享簽名私鑰,任意t個或更多個成員共享的密鑰就是簽名私鑰,所以他們合謀可以恢復出秘密密鑰,從而假冒系統生成有效的群簽名。這些問題都是我們在設計門限簽名方案時應該考慮的。 本文以基于有理數域上插值公式的Shamir的秘密共享方案為基礎,將改進的門限RSA簽名體制、兩方共享與(t,n)門限方案相結合,提出了一個需要可信任中心的安全性增強的基于門限RSA簽名方案。利用由hash函數建立的特殊形式
4、的RSA簽名體制,很好解決了在中對元素求逆和代數結構擴張的問題,為實現帶來了方便。同時在簽名過程中對分發的子密鑰、部分簽名以及簽名都進行了驗證,保證子密鑰和簽名的正確性;保證在簽名過程中不會被敵人入侵和欺詐,同時也防止了共享服務器合謀的危險。因此是一個安全性更高的門限簽名方案。 2 門限秘密共享方案分析 通過前面的分析我們知道門限秘密共享方案是構成門限簽名方案的基礎。現有的許多門限簽名方案采用的是ITTC項目中的方案,采用隨機和的拆分方法,也就是將秘密密鑰d按多種(t,t)共享方案分割,每種分割稱為一種聯合,每種聯合含有t份子密鑰,這t份子密鑰
5、分別存儲在n個服務器中的t個不同共享服務器上,不同的子密鑰聯合對應不同的t個共享服務器組合。這種方案具有方法簡單,運算效率高的特點,但是它的子密鑰分發和管理都比較困難。它需要客戶機或是組合者指定共享服務器而不具有任意性,對于客戶機的要求很高,實現起來比較困難。 本文采用有理數域上的插值公式和經典的Shamir(t,n)秘密共享方案作為構造門限簽名方案的理論基礎。這是因為Shamir門限體制具有以下特點: (1)增加新的子密鑰不用改變已有的子密鑰。在參與者P1, P2, , Pn中成員總數不超過q的條件下可以增加新的成員
6、而不用重新撤銷以前分發的子密鑰。當系統需要增加共享服務器時,我們只需要對新增加的服務器分發新的子密鑰,而不需要將已經分發的子密鑰一起替換掉,這樣可以減少系統的工作,提高系統效率。 (2)可以通過選用常數項不變的另一(t-1)次新的多項式,將某個成員的子密鑰作廢。當某個共享服務器被攻破時,需要作廢它的子密鑰,我們可以采用這種方法。 (3)組合者可以任意選擇共享服務器的子密鑰進行密鑰恢復而不需要指定它們。這是我們選擇Shamir(t,n)秘密共享方案的一個重要原因。當共享服務器完成部分簽名后組合者Combiner可以在n個
7、服務器中任意選擇t個進行最后的組合,而不需要去指定由某些服務器的部分簽名構成最后的簽名。 這里我們給出這樣一個假設:任意t個共享組件所構成的信息與n個共享組件所構成的信息應該是完全等價的。在此基礎上給出本文的基于RSA門限簽名方案。 3 基于RSA門限簽名方案設計 3.1 密鑰初始化 定義5-1可信任中心A(Administrator)指將簽名私鑰分給n個秘密共享者的組件。可信任暗含了A一定能確保秘密信息不會被泄漏,并且在執行完密鑰的分發后將簽名私鑰和其它信息一起銷毀。
8、 (1)假設可信任中心A選擇好RSA模數N,公鑰e和私鑰d以及,使得。其中,模數N為兩個安全大素數p,q的乘積。 (2)取定一個固定的正整數k及值域包含于(指中最高兩個比特為0的數構成的集合)的適當的hash函數h(如MD5),H由得到,由于對N的分解是困難的,所以H(m)是強無碰撞的、單向的函數。 (3)d1為隨機數,現在可信任中心A欲將d2分發給n個共享服務器Share Serveri ,將d1發給密鑰服務器K。這里簽名私鑰d由d1和d2組成,各共享服務器共享私鑰d2。 3.2 子密鑰的生成與驗證
9、160; 可信任中心A按如下步驟將簽名密鑰d2分發給n個共享服務器Share Serveri 。 (1)A隨機選取多項式使f(0)=a0= d2,計算下式: 其中g是可信任中心A隨機選取的信息樣本。 A將d2i秘密地發送給Share Serveri,而將N,n,e,h公開,將所有的g,ci,yi廣播給各Share Serveri,p, q不再使用將其銷毀。 (2)各共享服務器Share
10、Serveri(i1,2,n)收到可信任中心A發送來的子密鑰d2i后,利用已廣播的公開信息驗證子密鑰d2i的正確性,方法如下: 每個共享服務器Share Serveri判斷下面的式子是否成立: 由于(5-4)式是所有共享服務器都收到的,因此方案中任何的組件都可以驗證,故稱為公開驗證部分;式(5-5)由每個共享服務器自己驗證,故稱為秘密驗證部分。對于Share Serveri來說,秘密驗證就是用自己的子密鑰d2i和收到的g計算yi并與從可
11、信中心A發送的yi比較是否一致來判斷d2i的正確性。 公開驗證的正確性說明如下: 當公開驗證和秘密驗證中有一個不成立就認為驗證失敗,Share Serveri宣布可信任中心A發放的子密鑰是錯誤的,于是可信任中心A被認為是不合格的,協議至此中止。可信任中心A將重新選擇N和密鑰對(d,e)重復上面的步驟發放新的密鑰,否則可信任中心A分發密鑰成功,可以進行下面步驟。這時可信任中心A銷毀所分發的密鑰,以防止密鑰泄露。 3.3 部分簽名的生成與驗證
12、; 首先密鑰服務器K利用密鑰d1對消息m的hash函數值進行簽名。然后各共享服務器Share Serveri利用自己的子密鑰d2i對消息m的摘要進行簽名,如下所示并廣播其部分簽名: 共享服務器Share Serveri生成對消息m的部分簽名后,本文借助交互驗證協議來驗證Share Serveri的部分簽名是否正確。在交互驗證協議中可以由任何一方來驗證部分簽名的正確性,這里為了方便后面系統設計故規定共享服務器Share Serveri的部分簽名是由Share Serveri1來驗證。若協議成功,則Sh
13、are Serveri1確信Share Serveri的部分簽名S2i是正確的;否則S2i是不正確的。方法如下: (1)Share Serveri1任意選取a,bR1,N,計算出 并將R發送給Share Serveri; (2)Share Serveri收到R后,計算出并將發送給Share Serveri1; (3)Share Serveri1收到后,根據下式是否成立來判斷S2i是否為Share Serveri之部分簽名;
14、 下面我們來說明協議的安全性,假設N為兩個安全素數p,q之積。若非誠實驗證者P不能攻破RSA系統,則上述驗證RSA部分簽名的交互式協議滿足以下性質: (1)完備性 若P, Share Serveri都是誠實的,則Share Serveri總是接受P的證明。 (2)合理性 非誠實證明者P使Share Serveri接受不正確部分簽名的成功率是可忽略的。 (3)零知識性 非誠實驗證者除了能知道部分簽名是正確外,不能獲得其他任何信息。 因此由這樣的交互式協議驗證為
15、正確的部分簽名基本可以認為是正確的。 3.4 簽名的生成與驗證 若已有t個部分簽名通過正確性驗證,則由Combiner(組合服務器)可以計算出共享服務器對消息m的門限RSA簽名S。 (1)Combiner將xi(i=1,2,t)看作整數環Z上的元素,在整數環Z上計算。 (2)各共享服務器的門限簽名S2的計算公式如下:
16、 最后系統的簽名為。 (3)接著Combiner利用公開密鑰e,按下式來驗證門限簽名(m, S)的正確性,若成立則接受S為m的合法簽名。 3.5 簽名算法 這里給出了門限簽名方案的實現算法,其中需要運用java.io.*; java.security.*; java.math.*; j
17、avax.crypto.*; javax. crypto.spec.*;java.security.spec.*;java.security. interfaces.*; java.util.*; erfaces.*等系統提供的類和方法。 (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參數 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); 然后根據實際選擇的t和n值進行多
29、項式的選擇,以d2作為多項式的a0,計算n個子密鑰分發給共享服務器。 (3)各共享服務器用子密鑰進行數字簽名算法: public class signature /獲取要簽名的數據存放在data數組 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(); /數字簽名 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 結束語 本章給出了安全增強的基于RSA可驗證門限簽名方案的全過程,解決了 中對元素求逆和代數結構擴張的問題,防止了共享服務器合謀的威脅。我們可以看到它是更安全可靠的,而且原理也很簡單。利用這個方案我們可以將CA簽名私鑰分發到各個共享服務器中,通過共享服務器對用戶申請的公鑰證書信息進行部分簽名,然后由組合服務器得到最后的公鑰證書,從而保證公鑰證書的安全可靠,同時也不會使系統變得復雜而難以實現。 參考
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 核電設計活動方案
- 水庫中層活動方案
- 植樹節文藝宣傳活動方案
- 汽車售后服務活動方案
- 民生銀行青年節活動方案
- 樓盤公開活動方案
- 法律下基層活動方案
- 母子同調活動方案
- 歐藍德促銷活動方案
- 漢口兒童夏令營活動方案
- 診所托管合同協議
- 質量檢驗(測)技術服務企業數字化轉型與智慧升級戰略研究報告
- 信息必刷卷04(廣東省卷專用)2025年中考數學(解析版)
- 餐飲服務與管理課件 菜單的設計與制作
- 核電進廠考試題及答案
- 公司員工飲水管理制度
- 山東師范大學《大學英語本科(專升本)》期末考試復習題及參考答案
- 聲譽風險培訓
- 《SketchUp草圖大師教學》課件
- 職業技能培訓:保健按摩師
- 第二十章手術減肥及體形塑造美容手術美容外科學概論講解
評論
0/150
提交評論