專利名稱:一種安全的數字簽名系統(tǒng)及其數字簽名方法
技術領域:
本發(fā)明涉及網絡通信安全技術,更確切地說是涉及一種能容忍入侵的確保數字簽名安全的系統(tǒng)與方法。
所謂非對稱算法,就是一個人無法通過已知的正向計算參數推導出反向計算的參數,即已知正向計算過程,無反向計算能力。這種非對稱算法本身是公開的,但每個人可以選擇不同的參數,參數不同,所構成的變換函數就不同。對某個人來說,他可以選擇一組參數,其中一部分是用于逆向計算的,稱為秘密參數,技術上稱為保密密鑰或私鑰;另一部分是用于正向計算的,是公開的參數,技術上稱為公開密鑰或公鑰。
數字簽名就是基于這種非對稱算法得以實施的。一方面保護自己的秘密參數-私鑰,以保證他人無法冒充自己進行簽名,另一方面通過公開可以公開的部分-公鑰,供相關人士能夠驗證該簽名(從理論上說,利用公開的參數來推導秘密的參數,在計算上是不可行的)。
數字簽名首先是網絡通信與交互的保證,可以保證通信對方是真實的,可以保證在網上的就是自己,還可作為簽署電子文檔時的工具,以保護自己的文檔與簽名。當今許多國家,已將數字簽名視作手寫簽名,兩者具有同樣的法律效率。
數字簽名算法還可以用于協商秘密(secret)參數。如A用戶需要與B用戶進行秘密通信時,A用戶可以先設定一些秘密參數,然后用B用戶的公開密鑰(公鑰)作用一下,此時只有B用戶能夠恢復原來的值,因為只有B用戶知道自己的保密(private)密鑰(私鑰)。
此外,數字簽名還可以用于需要保密的場所、需要身份認證的場所及其他需要不可否認服務的場所。
現在國際上大力推行的PKI(Public Key Infrastructure公開密鑰基礎設施)就是數字簽名的一種應用,是網絡數字社會中最重要的一種基礎設施,這種技術的重要性,就象電力基礎設施對于工業(yè)的作用一樣。
為了保證數字簽名的安全和速度,在簽名前,必須對所簽的內容進行HASH計算,求出一個HASH值M(HASH值有時又叫文摘值或雜湊值),然后利用保密密鑰(私鑰)對文摘結果作變換得到簽名值;驗證簽名時,先對內容作HASH計算,然后再用公開的參數(公鑰)作用于簽名值,再將得到的結果與上述HASH結果進行比較,若相等,就表示簽名正確,否則為驗證不通過。
然而,當一用戶A有了自己的私鑰并公開了公鑰時,如果有一個攻擊者B重新生成公鑰和私鑰,并用攻擊者B的公鑰替換了A用戶公開的公鑰,此時A用戶的朋友發(fā)給A用戶的信息就只有攻擊者B知道了,因為A用戶已無法知道由攻擊者B假冒的公鑰所對應的私鑰。這時就需要由一個CA(CertificateAuthority證書權成或證書機構),來證明哪個公鑰是A用戶的,或者證明哪個公鑰不是A用戶的。
CA擁有一個比一般用戶私鑰更長的私鑰,也就是說,CA的私鑰更安全,而CA的公鑰可以通過各種方式廣為人知,這樣各個用戶就可以驗證什么是CA所簽發(fā)的。當一個用戶將其身份與其公鑰綁定在一起,并由CA簽名后,就得到了一個電子證書。這個證書能夠證明該公鑰擁有者的身份,且任何人都可以驗證而任何人卻都不能假冒。
目前,電子證書已成為PKI基礎設施中最為關鍵的部分,CA是PKI中最為重要的基本單元。利用電子證書,就可以有效解決網絡上的保密性、完整性以及不可否認性等安全問題。
基于PKI的安全性,最終都會歸結到對CA私鑰的保護,一旦CA的私鑰泄露,由CA所頒發(fā)的所有證書就都必須作廢,整個由CA管轄的網絡安全就會變得毫無安全可言。隨著網絡上各種攻擊手段的不斷增加,系統(tǒng)漏洞不斷被發(fā)現,因此如何保證既能在線提供數字簽名服務又能保證安全,已成為現代網絡安全研究的一個重要課題。
對RSA算法來說,秘密的密鑰一般記為d,是一個可以長達2048bits的整數(一般認為,1024bits長度的私鑰已經能夠保證安全,但對CA來說,采用2048bits或以上則是必須的)。在RSA算法中,用到了對一個數N的模冪計算,即求Mdmod N,該計算是完成數字簽名所需要的,當所需公開的參數(公鑰)公開后,保護數字d就是保護了私鑰。
安全的數字簽名所追求的目標是既完成簽名又不能泄露私鑰,針對該課題國際上已有許多理論方面的研究,其中不少理論與方法因難度太大而無法實現。另一方面,國際上目前開發(fā)的重點也是如何實現相互兼容的數字簽名產品,而在入侵容忍的安全簽名方面則開發(fā)的非常少,工業(yè)界也沒有推出相關的產品。所謂入侵容忍(Intrusion Tolerance)是相對于從檢測入侵出發(fā)來保證CA安全的技術而言的,即在系統(tǒng)的部分部件被攻擊或被占領后,仍不會暴露CA系統(tǒng)的機密信息。
綜上所述,PKI是基于公開密鑰密碼算法的,在PKI系統(tǒng)中,CA又是一個域中的信任中心,網絡上設備或個人間的通信與驗證都依賴于CA頒發(fā)的數字證書(簽名)。數字證書是一個將公開密鑰與個人身份綁在一起、用CA的私鑰簽名后得到的數據。在一方要驗證通信對方的身份時,可以通過兩個步驟完成,首先驗證對方的證書簽名是否正確(簽名只能由CA的私鑰完成,只有CA才能夠進行簽名);再驗證對方是否擁有與證書中公鑰相對應的私鑰,如果兩項都能成立,則對方的身份就能被確定,是可以信任的。
因此CA的私鑰是CA安全的核心,保護其不泄露是整個CA域安全的基礎。一般來說,CA必須是一個在線的網絡設備,特別是直接面向用戶以便提供相應證書服務的CA,則其遭遇網絡攻擊就不可避免,當一個黑客成功攻擊一臺CA時,攻擊者就可能獲得它的內部資源,從而找到CA的私鑰,會給PKI系統(tǒng)造成致命打擊,同時在PKI系統(tǒng)的內部雇員完全控制一臺CA設備的情況下,為預防起見,也應該確保其沒有得到CA的私鑰。
下面僅從將簽名等價于實現公式Mdmod N(其中d為應該保密的私鑰)方面,說明現有的幾種安全數字簽名方法。
參見
圖1,圖中示出美國Stanford大學的ITTC項目方案的原型系統(tǒng)框圖。該系統(tǒng)通過門檻密碼學技術實現系統(tǒng)入侵容忍,系統(tǒng)包括簽名方(Clients)、服務器方(Servers)和管理方(Admin)。簽名方的Web Server是指需要簽名的Web服務器,CA是證書權威或證書機構;服務器方包括多個分享服務器(ShareServer,也可稱分享計算器或分享運算器),如圖中的分享服務器1至3,負責進行安全的數字簽名;管理方(Admin)是一個可選的用于管理各分享服務器的設備。該方案的特點是結構簡單和具有很好的安全性,系統(tǒng)中采用了成單層結構的多個分享服務器。
該系統(tǒng)實現安全性的原理是先將私鑰d分解成t個數的和d=d1+d2+...+dt;再將各數(di)分配到各個分享服務器中。當需要簽名時,客戶機(Web或CA)將需要的簽名信息-HASH結果M值發(fā)給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個完好的分享服務器,然后告訴這些分享服務器使用第幾組數據(參數),然后,分享服務器就可以計算相應的簽名了。
該技術方案的優(yōu)點是明顯的,其不足之處有如下幾點1.密鑰的分發(fā)和管理比較困難,當增加一個分享服務器時,必須對每一個在線的分享服務器分配密鑰數據,同時還要讓客戶機也知道這個增加;2.當分享服務器很多時,會迅速增加分享服務器的密鑰存儲量,若設分享服務器的總數量為k,要求完好的分享服務器的總數量為t,則每個分享服務器存儲密鑰的數量至少為Ckt-1個(C表示組合),當k=10,t=3時,每個分享服務器存儲密鑰的數量就為45個;3.存在必須先同步的問題,在進行計算前,客戶機必須先選定t個分享服務器,當t個分享服務器選擇完成后,還必須找到與這t個分享服務器匹配的數據組并通知他們,當其中有一個服務器被破壞時必須重復上述選擇分享服務器的整個過程;4.讓客戶機(CA或Web服務器)記住每次分享服務器的改變是困難的,不容易進行管理與擴展,當客戶機在線時,擴展就更加困難,導致每次改變分享服務器時都必須更新客戶機。
IBM Research-Zurich研究院的Victor Shoup,在2000年的歐洲密碼學年會上發(fā)表了名稱為“Practical threshold signatures”的文章,介紹的也是一種理論上的方案。該方案使用RSA強素數,其保密的素數p=2p’+1,q=2q’+1。所有的插值方程都在模m=p’q’的環(huán)中進行。因為M4m模N等于1,分開計算時增加一次平方,由合成器(Combiner)再分別對各個結果平方一次,從而得到M4(gm+d)。其中Δ=(k!)2,而g為整數。該方案中ca是由合成器(Combiner)完成的,從而消除了計算前的同步問題,但帶來了合成器的計算難度,并使計算性能下降。如合成器必須計算W=yi12λci1yi22λci2···yit2λcit]]>其中yi為各分享服務器的計算結果,λ=k!。
可以看出該方案的特點及存在的不足是1.仍是一種由各分享服務器組成的單層式分享結構,其合成器不存儲任何秘密,可以由任何設備完成合成工作;2.合成器的計算量接近或相當于t次簽名,這樣的計算量遠遠大于分享服務器的計算量,即使能實現該算法,也是不能用于實際簽名的;3.要求使用強素數,會對某些應用帶來限制;4.僅從理論上說明當增加或刪除分享服務器時不會影響其他設備,但只提供了數學公式,沒有任何實現上和系統(tǒng)結構上的說明。
紐約CertCo公司的Yair Frankel等人提出了又一種方案,但沒有提供系統(tǒng)實現的框架和細節(jié)。在他們的方案中,提出讓多項式的系數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中有除法計算,這很容易讓人想到找一個域或環(huán)Zv來進行計算。其中,必須滿足的條件是v為素數,或者保證所有由xi構成的t階(Vandermonde)矩陣的行列式的值與v互素。
在一般情況下,分開計算 后帶來的結果就是要做乘法Σi=1tMbi=Md+wv.]]>如何去掉v的影響,許多人想到了用Φ(N),因為MΦ(N)=1。但選擇v=Φ(N)會使xi的選取大大受限于上述條件,并且知道了某元素o與其對Φ(N)的逆o-1,就可以求出Φ(N),顯然這是不安全的。
因此,從理論上可以看出上述方案都有明顯的弱點,距離實際應用還有很多問題需要解決。
本發(fā)明的安全數字簽名方法,CA以RSA算法為基礎。該方法至少應該滿足以下條件1.入侵者雖然攻擊或占有了系統(tǒng)中的若干部件,或某些關鍵部件合謀起來進行攻擊,也不能得到私鑰,且使用的關鍵部件相對較少,各關鍵部件的工作任務基本均衡;2.系統(tǒng)很容易擴充,當需要增加一個分享運算器時,不影響整個系統(tǒng)的工作;3.運行時的管理簡單,管理包括增加,撤除,修改服務硬件與軟件等,在有系統(tǒng)管理與配置活動時,不能影響系統(tǒng)運行;4.一個或多個設備損壞時不影響正常的服務;5.當一個分享運算器損壞時,整個系統(tǒng)的運行效率不會降低太多,即任務分配單元不需要知道任務執(zhí)行者的任何信息;
6.開始計算時,任何設備都不需要知道他的合作者是誰,故不需要一個合作群的指定機構(預先同步);7.該系統(tǒng)的算法和原理都應該非常簡單;8.設計完成后,整個系統(tǒng)的運行效率應該與常規(guī)系統(tǒng)保持在同一個檔次。
實現本發(fā)明目的的技術方案是這樣的一種安全的數字簽名系統(tǒng),其特征在于包括至少一個在線的任務分配器、k個在線的秘密分享運算器、m個在線的秘密分享合成器和離線的子密鑰分發(fā)器;在線的任務分配器通過第一廣播信道與k個秘密分享運算器連接,k個秘密分享運算器通過第二廣播信道與m個秘密分享合成器連接,離線的子密鑰分發(fā)器在系統(tǒng)初始化或進行系統(tǒng)配置時與k個秘密分享運算器及m個秘密分享合成器分別連接,k、m為正整數。
還包括一單獨設置的輸出接口設備,通過第三廣播信道與m個秘密分享合成器連接。
所述在線的任務分配器中還設置有一輸出接口設備,通過所述的第一廣播信道與所述的m個秘密分享合成器連接。
所述的至少一個在線的任務分配器、k個在線的秘密分享運算器、m個在線的秘密分享合成器、離線的子密鑰分發(fā)器均采用普通計算機或服務器。
所述的第一廣播信道、第二廣播信道及第三廣播信道是物理相連的一個信道或完全不相連的獨立信道。
實現本發(fā)明目的的技術方案還是這樣的一種安全的數字簽名方法,包括子密鑰的發(fā)放和計算數字簽名,其特征在于所述的子密鑰的發(fā)放包括以下處理步驟A.設置一個安全數字簽名系統(tǒng),包括在線的任務分配器、在線的k個秘密分享運算器、在線的m個秘密分享合成器、廣播信道和離線的子密鑰分發(fā)器,k、m為正整數;
B.離線的子密鑰分發(fā)器將保存的數字簽名私鑰d表示成由t個第一子密鑰dji及一個第二子密鑰ca的和,d、t、c、j、i均為正整數并讓t<k,j是第j個秘密分享運算器的機器代號,i是機器內的密鑰號,j=1,2,...k,i=1,2,...I;C.離線的子密鑰分發(fā)器將k×I個隨機數作為第一子密鑰dji,對應分發(fā)到k個秘密分享運算器中,每個秘密分享運算器存儲I個第一子密鑰dji,并根據步驟B中的和式通過相減獲得一組第二子密鑰ca及其方程組合表示,根據各方程組合表示求出其等價組合集,將全部等價組合集放在一個大組中;D.離線的子密鑰分發(fā)器按合成器安全條件對該大組中的全部等價組合集進行窮搜,從每個等價組合集中取出一個組合作代表,并將全部等價組合集的代表放入m個分組中,獲得m個分組的第二子密鑰ca及其方程組合表示E離線的子密鑰分發(fā)器將m個分組的第二子密鑰ca及其方程組合表示對應送到m個秘密分享合成器中預存;所述的計算數字簽名包括以下處理步驟F.在線的任務分配器將需要簽名的HASH值M通過廣播數據包經第一廣播信道送往k個秘密分享運算器;G.k個秘密分享運算器中的t個或t個以上的秘密分二爭運算器根據接收的M值計算升冪 并將本秘密分享運算器的代號j、需要簽名的HASH值M、機器內的密碼號i及I個計算結果 通過廣播數據包經第二廣播信道送往m個秘密分享合成器;H.m個秘密分享合成器將接收結果與預存分組的第二子密鑰ca的方程組合表示進行比較,找到可以匹配的方程組合表示并得到相應的第二子密鑰ca,再將與組合匹配的t個秘密分享運算器的升冪運算結果相乘得到結果R,根據找到的第二子密鑰ca求出 最后將 與R相乘得到數字簽名S=Md。
所述的步驟A中還包括給在線的任務分配器任意給定一個代號、給k個秘密分享運算器分別給定不相同的代號、給m個秘密分享合成器分別給定不相同的代號和設定t的初始值。
所述的步驟B中,dji的比特數至少比ca的比特數小4倍。
c1.由離線的子密鑰分發(fā)器取k×I個小于d/t的隨機數作為第一子密鑰dji,由離線的子密鑰分發(fā)器通過管理許可的方式將k×I個第一子密鑰dji對應送到k個秘密分享運算器中;c2.離線的子密鑰分發(fā)器先按組合式Ckt求出全部機器組合,再對每一個機器組合擴展求出它的等價組合集,每個等價組合集中含有It個組合,每個組合含有t個由兩個數字ji組成的項c3.將全部等價組合集放在一個大組中。
所述的等價組合集是具有相同秘密分享運算器機器代號的組合的集合。
所述的步驟D進一步包括d1.將大組中的等價組合集隨機排序,將各等價組合集中的組合隨機排序,設定一個空的分組為當前分組;d2.按排序順序從所述的大組中取出一個等價組合集,按排序順序從該等價組合集中取出一個組合,判斷其能否滿足放入當前分組中的合成器安全條件,如果滿足合成器安全條件則將該組合放入該分組中并拋棄該等價組合集,如果不能滿足合成器安全條件則將該分組仍放回原等價組合集中;d3.繼續(xù)執(zhí)行步驟d2,直至該等價組合集中的組合全部被操作完,如果沒有組合能夠放入當前分組,則將該等價組合集退回大組中;d4.再從所述的大組中依序取出另一個等價組合集,并繼續(xù)執(zhí)行步驟d2、d3;d5.檢查大組中是否還有等價組合集,如果有,則重新建立一個空的分組作為當前分組,并繼續(xù)執(zhí)行步驟d2、d3、d4,直至大組中沒有等價組合集時;
d6.統(tǒng)計存有組合的分組個數m,并將各分組中的組合對應送m個秘密分享合成器中。
所述的步驟d6,還包括在m分組中各增加能滿足合成器安全條件的冗余的組合。
所述的合成器安全條件,是一個分組內任意兩個組合方程的線性組合得到的方程,其變量的個數大于t。
所述的步驟E,由離線的子密鑰分發(fā)器通過管理允許的方式將所述m個分組的第二子密鑰ca及其對應的方程組合表示對應分送到所述的m個秘密分享合成器中。
所述的離線的子密鑰分發(fā)器在執(zhí)行完步驟A、B、C、D、E完成子密鑰的分發(fā)后,處于物理隔離狀態(tài)或處于關機狀態(tài)。
所述的步驟F進一步包括f1.由在線的任務分配器接收數字簽名任務,并進行安全檢查與核對;f2.由在線的任務分配器為該任務確定一個在預定的時間內對任務分配器是唯一的任務號;f3.由在線的任務分配器將其代號及任務號隨需要簽名的HASH值M組成所述的廣播數據包廣播到所述的第一廣播信道上;所述的步驟G進一步包括g1.接收到廣播后的t個或t個以上的秘密分享運算器向該在線的任務分配器發(fā)出已經接收的通知;g2.t個或t個以上的秘密分享運算器檢查任務的唯一性,在確定為新任務時進行所述升冪的計算;g3.t個或t個以上的秘密分享運算器還將該在線的任務分配器的代號、任務的任務號隨本秘密分享運算器的代號j、需要簽名的HASH值M、I個密鑰號及對應的I個結果 組成所述的廣播數據包廣播到所述的第二廣播信道上;
所述的步驟H,進一步包括h1.接收到廣播的秘密分享合成器將具有相同任務分配器代號及任務號的廣播數據包放在一組中;h2.上述秘密分享合成器至少找出t個廣播數據包,再從中找出與所述預存的方程組合表示匹配的一個方程組合表示,并得到對應的第二子密鑰ca。
所述的步驟F、G、H是順序執(zhí)行完成數字簽名的計算操作。
所述的步驟H后還包括一步驟I,由在線的秘密分享合成器,將數字簽名S=Md與任務分配器代號、任務號組成廣播數據包廣播到一在線的輸出接口設備上,并由該輸出接口設備用公開密鑰檢查簽名結果,是正確時結束數字簽名,是錯誤時進行錯誤處理或告警。
所述步驟I,是由在線的秘密分享合成器通過一第三廣播信道將所述的廣播數據包廣播到一單獨設置的在線的輸出接口設備上。
所述步驟I,是由在線的秘密分享合成器通過所述的第一廣播信道將所述的廣播數據包廣播到設置在任務分配器中的輸出接口設備上。
本發(fā)明的安全的數字簽名系統(tǒng)及方法,基于RSA算法,通過一種不平衡的雙層結構的秘密分享,克服了背景技術中系統(tǒng)管理與實現上的困難,達到發(fā)明的目的。
本發(fā)明的方法與系統(tǒng)具有下列特點1.在線的任務分配器無須選定秘密分享運算器和指定密鑰就可以廣播數字簽名任務,在系統(tǒng)更新時可保證不影響在線任務分配器的工作,在某臺秘密分享運算器突然損壞時也不會影響廣播任務的執(zhí)行時間(如果指定由某臺秘密分享運算器計算,而此臺設備最后并沒有響應,則必須重新指定設備與密鑰并重新開始);2.在增加一臺秘密分享運算器時只需給它生成一個子密鑰,離線的子密鑰分發(fā)器會根據新加的秘密分享運算器的序號與已有的秘密分享運算器的序號進行方程組合,計算出相應的第二子密鑰ca,然后將這些新增的方程組合表示與計算出的ca以密鑰管理認可的方式添加到秘密分享合成器中去,這種添加是不影響系統(tǒng)工作的;3.在撤除一臺秘密分享運算器時,只需關閉該設備,為保證效率起見,可以刪除秘密分享合成器中有關該秘密分享計算器序號的組合表示和相應的ca;4.同時,本發(fā)明同其他背景技術一樣,也具有入侵容忍的能力,當小于t臺秘密分享計算器被入侵以后,不會泄露系統(tǒng)秘密d,而且由于增加了秘密分享合成器的結構,即使所有的秘密分享計算器都被入侵,也不會泄露系統(tǒng)秘密d(從理論上也可以證明,攻擊秘密分享合成器也無法得到系統(tǒng)秘密d,盡管方程個數很多,但所有方程的系數矩陣的秩小于變量的個數);5.可抵制秘密分享運算器與秘密分享合成器合謀對系統(tǒng)的攻擊,即當一臺秘密分享運算器與一臺秘密分享合成器聯合攻擊系統(tǒng)時也不能求出秘密d,且使用的秘密分享合成器與同類技術方案相比可大大減少,如當k=5、t=3時,只需使用2臺秘密分享運算器,秘密分享合成器的工作任務與秘密分享運算器的工作任務基本相當,沒有不均衡的現象。
圖2是本發(fā)明的一種安全數字簽名系統(tǒng)的結構示意圖。
圖3是本發(fā)明的另一種安全數字簽名系統(tǒng)的結構示意圖。
圖4是一種秘密分享運算器的實施流程框圖。
圖5是一種秘密分享合成器的實施流程框圖。
該結構中包含一臺離線的子密鑰分發(fā)機(器,以下同)21,至少一臺在線的任務分配機22、k臺在線的秘密分享運算器23、m臺在線的秘密分享合成器24和一臺獨立設置的在線的輸出接口設備25。這些設備都可以由不同的普通計算機或服務器來擔任。在線的任務分配機22通過廣播信道B1(如UDP協議信道)與k臺子秘密分享運算器23連接,k臺子秘密分享運算器23通過廣播信道B2與m臺秘密分享合成器24連接,m臺秘密分享合成器24通過廣播信道B3與輸出接口設備25連接,離線的子密鑰分發(fā)機21在系統(tǒng)初始化或進行系統(tǒng)配置時分別連接k臺子秘密分享運算器23及m臺秘密分享合成器24(如圖中虛線所示)。
離線的子密鑰分發(fā)器21保存秘密d,不與其他系統(tǒng)有網絡連接。廣播信道B1、B2、B3可以是物理相連的一個廣播信道或完全不相連、彼此獨立的廣播信道。
實現整個系統(tǒng)結構的基礎原理是將一個大整數表示成若干個整數的和,采用d=d1i1+d2i2+d3i3+···+dtit+Ca]]>的表達式,用dji表示方程中 至 中的任意一項,將數字簽名中的私鑰設為方程中的d,dji的個數有t個,d、dti、ca均為正整數,dji采用隨機數以實現簡單管理。該方程表達式不同于背景技術中方程表達式d=d1+d2+d3+...+dt的地方是增加了一個ca項(a=1,2,...,n),從而形成一種新的安全的且易于管理的系統(tǒng)結構。
該系統(tǒng)結構對秘密d的分享采用由兩層部件共同作用完成,一層部件是由簡單的秘密分享運算器23組成的,另一層部件是由秘密分享合成器24組成的,在秘密分享運算器23中分別保存多于一個的dji項,在秘密分享合成器中保存ca項,從而形成兩層式的秘密分享結構,這兩層設備中都存有子密鑰,分別為第一子密鑰dji與第二子密鑰ca。第一子密鑰dji采用兩位數作下標,其中第一位數j為秘密分享運算器23的序號,即秘密分享運算器23的機器代號,j=1、2、...、k,第二位數i為秘密分享運算器23內的密鑰號,i=1、2、...、I,如當秘密分享運算器23中保存兩個dji項時,則其第一子密鑰分別為dj1和dj2,如d11、d12表示的是第一號秘密分享運算器中保存的兩個第一子密鑰。
該兩層式的分享結構還表現在只有第一層的秘密分享運算器完成計算后,第二層的秘密分享合成器才能開始工作;由于秘密分享合成器中也保存有子密鑰ca,因而秘密分享合成器是不可能被其他設備取代的。
系統(tǒng)首先完成子密鑰的分發(fā),其中第一子密鑰的分發(fā),采用的操作過程如下第一子密鑰的分發(fā)是由離線的子密鑰分發(fā)器21為每臺秘密分享運算器23產生I個隨機的dji,對于有k臺秘密運算分享器23的系統(tǒng)來說,就會有k×I個第一子密鑰dji,j=1,2,3,4,...,k。如在I=2時(為方便敘述),通過密鑰管理認可的方式分別將d11、d12送第一臺秘密運算分享器23,將d21、d22送第二臺秘密運算分享器23,......,依此類推,直至將dk1、dk2送至第k臺秘密分享運算器23。
需預先設計合適的t,t的含義就是當t-1臺秘密分享運算器23被入侵后不會影響系統(tǒng)的安全性。應該保證t<k,以保證系統(tǒng)可以從k個秘密分享運算器23中取到t種結果完成運算。
其中第二子密鑰的分發(fā)處理過程是離線的子密鑰分發(fā)器21從k×I個第一子密鑰中取出t個,根據方程d=d1i1+d2i2+d3i3+...+dtit+Ca]]>再通過作減法可以求出ca,共有 種取法,故可以計算出 個方程的ca。這里,n=Ckt×it]]>代表組合,表示有n個ca值和n個方程組合表示,每一個方程組合表示是所對應的t個第一子密鑰dji下標標號(或者說是變量的序號)的組合,這樣的一個方程所對應的密鑰dji的標號為密鑰組合。顯然,一個方程組合內的不同的第一子密鑰是在不同的秘密分享運算器內,方程組合表示只與第一子密鑰dji下標標號兩位數字ji有關,不泄露任何子密鑰的信息。如每個方程組合表示含t個項,每個項的數字是第一子密鑰dji的下標標號ji,如(12,23,31)就表示t=3時的一個方程組合表示。
在說明本發(fā)明的組合計算過程前,先將機器標號相同的組合定義為等價組合,如(12,33,41)(11,31,42)(12,33,42)為三個等價組合的集合。等價組合的意義在于由于容錯和抗入侵是針對機器的,對某臺機器來說,取哪個子密鑰對其后續(xù)的計算影響并不大,設置等價組合只是為了冗余,上例中只要在三個等價組合中取出任意一個組合,就可表示只要有三臺機器(秘密分享運算器)正常時就能夠求出組合結果。當然,秘密分享運算器計算的其他結果對該組合來說就沒有用處了。
離線的子密鑰分發(fā)器21對所有的方程組合表示、等價組合集以及對應的ca值,按合成器簡化安全條件通過窮搜進行分組,每一分組內的方程組合表示是有限的,再按分組的個數(m)對應設置秘密分享合成器(m個),來對應存儲這些分組的方程組合表示以及對應的ca值。
我們只要從每個等價組合的集合中取出一個組合作代表,然后將所有等價組合集合的代表組合放到秘密分享合成器中,就可以針對每種機器組合得到正確的簽名結果。
如何分組是實施本發(fā)明方案的關鍵問題。從秘密分享合成器24看來,其ca是已知的,其他都是未知的變量。合成器安全條件是根據其方程和系統(tǒng)安全性要求提出的,即一個秘密分享合成器內所含方程經線性組合得到的新的方程,其變量的個數大于t。
滿足該條件,就可以避免合成器與分享運算器對系統(tǒng)的合謀攻擊。但是,該條件過于復雜,無法用程序或流程實現。因此為了實現安全的合成,必須有一個可行的算法。
利用方程的特殊性,可使安全條件簡化為一個合成器內由任意兩個方程的線性組合得到的方程,其變量的個數大于t。
以下仍以t=3、K=5為例說明子密鑰分發(fā)器計算并分發(fā)組合表示的步驟第一步,先忽略一個秘密分享運算器有多個第一子密鑰的問題,根據Ckt求解全部10種機器組合(1,2,3)、(1,2,4)、(1,2,5)、(1,3,4)、(1,3,5)、(1,4,5)、(2,3,4)、(2,3,5)(2,4,5)、(3,4,5),是5臺秘密分享運算器任選3臺的組合結果;
第二步,對上述求出的10種結果進行擴展,即對每個結果求出等價組合,形成10個等價組合集,當每個秘密分享運算器有兩個機內密碼號時,每個結果還有2t-1個等價的組合,求出這些組合并將他們放在一個等價組合集里,即每個等價組合集中有2t個等價的組合,可隨機排序,如結果(1,2,3)的等價組合及隨機排序為(11,21,31)(12,21,31)(11,22,31)(12,22,31)(11,21,32)(12,21,32)(11,22,32)(12,22,32),形成一個等價組合集;第三步,將所有的等價組合集放在一個大組中,隨機排序,并準備若干個分組;第四步,從大組中依序取出一個等價組合集,從該等價組合集里依序找出一個組合,根據簡化的安全條件,通過窮搜進行分組,即看這個組合能不能放到第一個分組里如果能,則將該組合放入第一分組里,且一個等價組合集中只要有一個組合放入了一個分組中,就拋棄該等價組合集;如果不能,仍將其放回到該等價組合集里,并重新從該等價組合集中依序取出下一個組合,再根據簡化的安全條件,看它能不能放到第一個分組里,如果所有該等價組合集里的組合都不能符合簡化的安全條件即不能放到第一個分組中,用同樣的方法試第二個分組,如果還不行,試第三個分組,依次下去,執(zhí)行完該過程后,將所有不空分組的組合表示取出,每個分組中的組合表示通過管理允許的方式對應預存入一個秘密分享合成器中;第五步,重復第四步,直到大組中所有的等價組合集均被取走到分組中為止;第六步,統(tǒng)計有多少個分組中有組合,并將一個分組中的組合對應送入一個秘密分享合成器中預存;第七步,在每個有組合的分組中,增加一些能滿足安全條件的其他組合,以增加冗余。但在增加冗余的過程中,當一個等價組合集中有一個組合放入了一個分組中時,是不拋棄該等價組合集的。
通過上述步驟,對于圖中5個秘密分享運算器23,每個運算器存有兩個第一子密鑰的機內密碼的情況,計算結果如下第一個分組內的9個組合為(11,21,31)(11,22,41)(11,32,42)(21,32,41)(12,21,51)(12,31,52)(22,31,51)(21,42,52)(12,22,32)第二個分組中的12個組合為(11,41,51)(31,41,52)(11,21,42)(12,31,42)(21,32,41)(11,22,52)(12,32,51)(21,31,51)(22,42,51)(32,42,52)(12,22,41)(12,21,52)上述結果說明,只要有兩個秘密分享合成器24就能夠對付5個秘密分享運算器。因為實際的等價集合只有10個,而現在兩個秘密分享合成器中已經放置了共21個組合,說明已經增加了很多冗余。
當選擇6臺秘密分享運算器,每個秘密分享運算器存兩個第一子密鑰的機內碼時,第一個分組中可有16個組合,第二個分組中有18個組合。兩個秘密分享合成器已經能夠產生足夠的冗余(由于組合數太多,在此不列舉)。
實施時可取dji的比特數遠小于(至少小于4倍,)ca的比特數,如當d為2048bits的數時,ca為2048bits的數,dji為500bits的數或更少,以保證秘密分享運算器23的運算速度,從而提高整個數字簽名系統(tǒng)的運算速度。
每個秘密分享合成器24并不存儲針對所有子密鑰dji的所有組合,但所有秘密分享合成器24存儲內容和的結果能保證包含針對秘密分享運算器的所有dji組合。
系統(tǒng)進行計算數字簽名的操作過程,運算時,秘密分享運算器23針對其擁有的第一子密鑰dji計算升冪,秘密分享合成器尋找匹配組合,計算并合成結果。
計算數字簽名時任務分配器將需要簽名的HASH值M,經廣播信道B1通過廣播方式送往k個秘密分享運算器23,只要有超過t個正確的秘密分享運算器(指未被攻擊的秘密分享運算器)收到數據就可以保證得到計算結果;秘密分享運算器接收任務后,針對其所有的第一子密鑰計算升冪,如第j個秘密分享運算器在收到數據后計算升冪 即每一個秘密分享運算器針對其擁有的所有第一子密鑰計算升冪,如對兩個子密鑰的第一臺秘密分享計算器來說,就是求出 和 然后將這兩個計算結果 和 連同各自的子密鑰代號11、12(ji)、需要簽名的HASH值M及任務號,任務分配器代號,自己的機器代號打成數據包經廣播信道B2通過廣播方式送到秘密分享合成器24,可以一次發(fā)送,也可以在計算完一個結果后就發(fā)送一個結果,以提高效率。
秘密分享合成器24對接收的數據包按任務存放,采用遍歷方法與自己預存的方程組合表示進行比較,找到可以匹配的t個組合表示并得到相應的子密鑰ca,再將經組合匹配后的幾個升冪結果相乘得到結果R,再根據找到的ca求出 最后將 與R相乘就得到應該得到的數字簽名S=Md;
秘密分享合成器24將數字簽名結果S送到輸出接口設備25,輸出接口設備25根據公開密鑰檢查簽名結果的正確性。
以上計算流程中,所有廣播的數據包內還應包括任務分配器的代號,任務分配器分配的任務代號等。以保證系統(tǒng)能夠區(qū)分不同的任務,支持多任務并行操作。
參見圖3,是一個安全數字簽名系統(tǒng)的實施例結構,使用一臺離線的子密鑰分發(fā)器31,5臺秘密分享運算器33(k=5),二臺秘密分享合成器34,一臺在線的任務分配器32并兼做輸出接口設備,在線的任務分配器32通過廣播信道B1與5臺秘密分享運算器33連接,5臺秘密分享運算器33通過廣播信道B2與二臺秘密分享合成器34連接,五臺秘密分享合成器34還通過廣播信道B1與在線的任務分配器32連接,一臺離線的子密鑰分發(fā)器31在系統(tǒng)初始化或系統(tǒng)配置時分別連接5臺秘密分享運算器33及兩臺秘密分享合成器34。
先進行子密鑰的發(fā)放操作給定在線的任務分配器32任意一個代號,如22,給定各秘密分享計算器33一個代號,如1,2,3,4,5,給定各秘密分享合成器34一個代號,如1,2,系統(tǒng)設定初始值t=3,由離線的子密鑰分發(fā)器31掌握秘密密鑰d;離線的子密鑰分發(fā)器31任意選定10個小于d/3(d/t)的隨機數d11,d12,d21,d22,d31,d32,d41,d42,d51,d52,通過某種管理許可的方式將d11,d12送到1號秘密分享計算器,將d21,d22送到2號秘密分享計算器,將d31,d32送到3號秘密分享計算器,將d41,d42送到4號秘密分享計算器,將d51,d52送到5號秘密分享計算器;根據d=d1i1+d2i2+d3i3+...+dtit+Ca,]]>通過作減法可以求出ca,根據Ckt個結果擴展求出Ckt個等價組合集,將所有的等價組合集放在一個大組中,;按分享器安全條件通過窮搜獲得二個分組及其ca的組合表示;離線的子密鑰分發(fā)器31將這二個分組的ca值及相應的方程組合表示一起以管理允許的方式對應送到二個秘密分享合成器34中,即第一個秘密分享合成器34中有9個方程組合表示和九個對應的ca值,第二個秘密分享合成器34中有12個方程組合表示和12個對應的ca值。
子密鑰發(fā)放完成后,離線的子密鑰分發(fā)器31就可以關機了。
計算數字簽名的工作流程為由在線的任務分配器32接收必須簽名的任務,并做相應的安全檢查和核對,然后求需要簽名的HASH值M;由在線的任務分配器32為當前的簽名確定一個任務號,該任務號應該在一定時間范圍內(如兩天)對該任務分配器來說是唯一的;任務分配器將自己的代號(22),該任務的任務號,HASH值M組成一個數據包廣播到廣播信道B1上;秘密分享計算器j(秘密分享計算器33中的至少3個秘密分享計算器,t=3)收到廣播后,通知任務分配器32已經成功接收;秘密分享計算器j檢查任務的唯一性,當該任務為新任務時,計算 秘密分享計算器j將自己的代號ji,任務分配器代號22,任務號,HASH值M和計算結果 向廣播信道B2廣播;秘密分享合成器34接收該廣播數據包,并將具有相同任務分配器代號和任務號的信息放在同一組中;秘密分享合成器34在一組結果中檢查是否有三個以上結果且有3個與存儲的方程組合表示匹配,如果有,找到相應匹配的方程組合表示,得到對應的ca,根據ca求 然后計算R(是對應的三個與組合表示匹配的結果的乘積),最后將 與R相乘就得到應該得到的數字簽名S=Md;秘密分享合成器34將任務分配器的代號,任務號和數字簽名結果S=Md送到廣播信道B1上;任務分配器32接收數字簽名結果后,用公開密鑰檢查簽名結果是否正確,如果錯誤,進入錯誤處理或告警,如果檢查合格即結束計算任務。
本實施例中各細化的執(zhí)行步驟同樣適用于圖2實施例。
本發(fā)明的方法能有效地抵制秘密分享合成器和秘密分享計算器聯合時對系統(tǒng)的合謀攻擊。如上例中,任何一個分享合成器要與至少三臺秘密分享運算器合謀才能得到秘密d。而能有力地抵制分享合成器與分享運算器的合謀攻擊,且只使用兩臺秘密分享合成器。
參見圖4、圖5,分別為圖2、圖3中秘密分享運算器和秘密分享合成器的實施流程框圖,是一種具體的實用流程。其實現是采用多線程技術,即計算機操作系統(tǒng)中使用的多任務并行技術,如圖中所示的三個線程任務處理程序、監(jiān)聽程序和界面程序,來實現一個秘密分享運算器或秘密分享合成器。所有需要計算的任務由一個任務隊列來進行管理,而計算所需的系統(tǒng)參數(包括子密鑰)也是三個線程都能夠存取的。
其中的任務處理程序是專門用于計算的,由于計算是最費時的一項工作,所以單獨創(chuàng)建一個線程進行計算,以保證在計算時能夠繼續(xù)保持與用戶間的交互,同時能夠保持對網絡數據的監(jiān)聽從而不丟失網絡數據。該線程首先利用事件同步機制進行等候,可以在沒有任務的時候節(jié)約CPU的時間,可以使用象NT中的EVENT之類的系統(tǒng)事件來進行同步;當任務執(zhí)行線程被喚醒后,它掃描系統(tǒng)的任務隊列,找到應該處理的任務進行處理,包括應該重新發(fā)送的數據包的發(fā)送。
監(jiān)聽程序是為了保證網絡通信的數據不丟失而設置的,單獨采用一個線程來監(jiān)聽網絡的廣播數據,該流程只進行簡單的任務處理,如刪除一個任務或增加一個任務,當有新的計算任務時,喚醒任務處理線程。
界面程序用于用戶界面處理,也單獨采用一個線程,以保證在不影響系統(tǒng)運行的情況下修改系統(tǒng)的參數、增加子密鑰等。
本發(fā)明的系統(tǒng)結構簡單,易于實現,有入侵容忍能力,雖然簽一次名的總工作量與一般簽名相比是增加了,但是能確保系統(tǒng)安全,通過采用并行計算并使dji的比特數遠小于ca的比特數(至少4倍),而能使總的簽名時間基本與一般簽名時間相等,更重要的是能對付秘密分享運算器與秘密分享合成器聯合對系統(tǒng)的攻擊。
在現今的商業(yè)模式下,隨著社會分工的不斷細化,廣大企事業(yè)單位完全可以公用提供安全功能的數字簽名設備。為此,可以利用本發(fā)明的系統(tǒng)與方法設計多企業(yè)的技術方案。包括每個設備針對每個企業(yè)存儲一套相應數據;任務分配器在廣播任務時就將企業(yè)代號放在數據包中,以區(qū)分不同的企業(yè);秘密分享計算器根據企業(yè)代號找到相應的密鑰并計算;計算結果連同企業(yè)代號一起送往合成器。
整個系統(tǒng)增加企業(yè)代號的管理以后,系統(tǒng)可以成為多個不同層次的用戶、企業(yè)的代理,代理他們進行安全的數字簽名。而密鑰分發(fā)器和任務分配器可以由企業(yè)或個人自己控制。
在這種結構下,就構成了多個密鑰分發(fā)中心,多個任務分配器,多個密鑰分享計算器,多個合成器的格局。成為一完善的安全簽名服務體系。
權利要求
1.一種安全的數字簽名系統(tǒng),其特征在于包括至少一個在線的任務分配器、k個在線的秘密分享運算器、m個在線的秘密分享合成器和離線的子密鑰分發(fā)器;在線的任務分配器通過第一廣播信道與k個秘密分享運算器連接,k個秘密分享運算器通過第二廣播信道與m個秘密分享合成器連接,離線的子密鑰分發(fā)器在系統(tǒng)初始化或進行系統(tǒng)配置時與k個秘密分享運算器及m個秘密分享合成器分別連接,k、m為正整數。
2.根據權利要求1所述的一種安全的數字簽名系統(tǒng),其特征在于還包括一單獨設置的輸出接口設備,通過第三廣播信道與m個秘密分享合成器連接。
3.根據權利要求1所述的一種安全的數字簽名系統(tǒng),其特征在于所述在線的任務分配器中還設置有一輸出接口設備,通過所述的第一廣播信道與所述的m個秘密分享合成器連接。
4.根據權利要求1或2或3所述的一種安全的數字簽名系統(tǒng),其特征在于所述的至少一個在線的任務分配器、k個在線的秘密分享運算器、m個在線的秘密分享合成器、離線的子密鑰分發(fā)器均采用普通計算機或服務器。
5.根據權利要求1或2或3所述的一種安全的數字簽名系統(tǒng),其特征在于所述的第一廣播信道、第二廣播信道及第三廣播信道是物理相連的一個信道或完全不相連的獨立信道。
6.一種安全的數字簽名方法,包括子密鑰的發(fā)放和計算數字簽名,其特征在于所述的子密鑰的發(fā)放包括以下處理步驟A.設置一個安全數字簽名系統(tǒng),包括在線的任務分配器、在線的k個秘密分享運算器、在線的m個秘密分享合成器、廣播信道和離線的子密鑰分發(fā)器,k、m為正整數;B.離線的子密鑰分發(fā)器將保存的數字簽名私鑰d表示成由t個第一子密鑰dji及一個第二子密鑰ca的和,d、t、c、j、i均為正整數并讓t<k,j是第j個秘密分享運算器的機器代號,i是機器內的密鑰號,j=1,2,...k,i=1,2,...I;C.離線的子密鑰分發(fā)器將k×I個隨機數作為第一子密鑰dji,對應分發(fā)到k個秘密分享運算器中,每個秘密分享運算器存儲I個第一子密鑰dji,并根據步驟B中的和式通過相減獲得一組第二子密鑰ca及其方程組合表示,根據各方程組合表示求出其等價組合集,將全部等價組合集放在一個大組中;D.離線的子密鑰分發(fā)器按合成器安全條件對該大組中的全部等價組合集進行窮搜,從每個等價組合集中取出一個組合作代表,并將全部等價組合集的代表放入m個分組中,獲得m個分組的第二子密鑰ca及其方程組合表示E離線的子密鑰分發(fā)器將m個分組的第二子密鑰ca及其方程組合表示對應送到m個秘密分享合成器中預存;所述的計算數字簽名包括以下處理步驟F.在線的任務分配器將需要簽名的HASH值M通過廣播數據包經第一廣播信道送往k個秘密分享運算器;G.k個秘密分享運算器中的t個或t個以上的秘密分享運算器根據接收的M值計算升冪 并將本秘密分享運算器的代號j、需要簽名的HASH值M、機器內的密碼號i及I個計算結果 通過廣播數據包經第二廣播信道送往m個秘密分享合成器;H.m個秘密分享合成器將接收結果與預存分組的第二子密鑰ca的方程組合表示進行比較,找到可以匹配的方程組合表示并得到相應的第二子密鑰ca,再將與組合匹配的t個秘密分享運算器的升冪運算結果相乘得到結果R,根據找到的第二子密鑰ca求出 最后將 與R相乘得到數字簽名S=Md。
7.根據權利要求6所述的一種安全的數字簽名方法,其特征在于所述的步驟A中還包括給在線的任務分配器任意給定一個代號、給k個秘密分享運算器分別給定不相同的代號、給m個秘密分享合成器分別給定不相同的代號和設定t的初始值。
8.根據權利要求6所述的一種安全的數字簽名方法,其特征在于所述的步驟B中,dji的比特數至少比ca的比特數小4倍。
9.根據權利要求6所述的一種安全的數字簽名方法,其特征在于所述的步驟C,進一步包括c1.由離線的子密鑰分發(fā)器取k×I個小于d/t的隨機數作為第一子密鑰dji,由離線的子密鑰分發(fā)器通過管理許可的方式將k×I個第一子密鑰dji對應送到k個秘密分享運算器中;c2.離線的子密鑰分發(fā)器先按組合式Ckt求出全部機器組合,再對每一個機器組合擴展求出它的等價組合集,每個等價組合集中含有It個組合,每個組合含有t個由兩個數字ji組成的項c3.將全部等價組合集放在一個大組中。
10.根據權利要求9所述的一種安全的數字簽名方法,其特征在于所述的等價組合集是具有相同秘密分享運算器機器代號的組合的集合。
11.根據權利要求6所述的一種安全的數字簽名方法,其特征在于所述的步驟D進一步包括d1.將大組中的等價組合集隨機排序,將各等價組合集中的組合隨機排序,設定一個空的分組為當前分組;d2.按排序順序從所述的大組中取出一個等價組合集,按排序順序從該等價組合集中取出一個組合,判斷其能否滿足放入當前分組中的合成器安全條件,如果滿足合成器安全條件則將該組合放入該分組中并拋棄該等價組合集,如果不能滿足合成器安全條件則將該分組仍放回原等價組合集中;d3.繼續(xù)執(zhí)行步驟d2,直至該等價組合集中的組合全部被操作完,如果沒有組合能夠放入當前分組,則將該等價組合集退回大組中;d4.再從所述的大組中依序取出另一個等價組合集,并繼續(xù)執(zhí)行步驟d2、d3;d5.檢查大組中是否還有等價組合集,如果有,則重新建立一個空的分組作為當前分組,并繼續(xù)執(zhí)行步驟d2、d3、d4,直至大組中沒有等價組合集時;d6.統(tǒng)計存有組合的分組個數m,并將各分組中的組合對應送m個秘密分享合成器中。
12.根據權利要求10所述的一種安全的數字簽名方法,其特征在于所述的步驟d6,還包括在m分組中各增加能滿足合成器安全條件的冗余的組合。
13.根據權利要求6或11或12所述的一種安全的數字簽名方法,其特征在于所述的合成器安全條件,是一個分組內任意兩個組合方程的線性組合得到的方程,其變量的個數大于t。
14.根據權利要求6所述的一種安全的數字簽名方法,其特征在于所述的步驟E,由離線的子密鑰分發(fā)器通過管理允許的方式將所述m個分組的第二子密鑰ca及其對應的方程組合表示對應分送到所述的m個秘密分享合成器中。
15.根據權利要求6所述的一種安全的數字簽名方法,其特征在于所述的離線的子密鑰分發(fā)器在執(zhí)行完步驟A、B、C、D、E完成子密鑰的分發(fā)后,處于物理隔離狀態(tài)或處于關機狀態(tài)。
16.根據權利要求6所述的一種安全的數字簽名方法,其特征在于所述的步驟F進一步包括f1.由在線的任務分配器接收數字簽名任務,并進行安全檢查與核對;f2.由在線的任務分配器為該任務確定一個在預定的時間內對任務分配器是唯一的任務號;f3.由在線的任務分配器將其代號及任務號隨需要簽名的HASH值M組成所述的廣播數據包廣播到所述的第一廣播信道上;所述的步驟G進一步包括g1.接收到廣播后的t個或t個以上的秘密分享運算器向該在線的任務分配器發(fā)出已經接收的通知;g2.t個或t個以上的秘密分享運算器檢查任務的唯一性,在確定為新任務時進行所述升冪的計算;g3.t個或t個以上的秘密分享運算器還將該在線的任務分配器的代號、任務的任務號隨本秘密分享運算器的代號j、需要簽名的HASH值M、I個密鑰號及對應的I個結果 組成所述的廣播數據包廣播到所述的第二廣播信道上;所述的步驟H,進一步包括h1.接收到廣播的秘密分享合成器將具有相同任務分配器代號及任務號的廣播數據包放在一組中;h2.上述秘密分享合成器至少找出t個廣播數據包,再從中找出與所述預存的方程組合表示匹配的一個方程組合表示,并得到對應的第二子密鑰ca。
17.根據權利要求6或16所述的一種安全的數字簽名方法,其特征在于所述的步驟F、G、H是順序執(zhí)行完成數字簽名的計算操作。
18.根據權利要求6所述的一種安全的數字簽名方法,其特征在于所述的步驟H后還包括一步驟I,由在線的秘密分享合成器,將數字簽名S=Md與任務分配器代號、任務號組成廣播數據包廣播到一在線的輸出接口設備上,并由該輸出接口設備用公開密鑰檢查簽名結果,是正確時結束數字簽名,是錯誤時進行錯誤處理或告警。
19.根據權利要求18所述的一種安全的數字簽名方法,其特征在于所述步驟I,是由在線的秘密分享合成器通過一第三廣播信道將所述的廣播數據包廣播到一單獨設置的在線的輸出接口設備上。
20.根據權利要求18所述的一種安全的數字簽名方法,其特征在于所述步驟I,是由在線的秘密分享合成器通過所述的第一廣播信道將所述的廣播數據包廣播到設置在任務分配器中的輸出接口設備上。
全文摘要
本發(fā)明涉及一種數字簽名系統(tǒng)及方法。系統(tǒng)包括任務分配器、k個運算器、m個合成器和子密鑰分發(fā)器。發(fā)放子密鑰包括由子密鑰分發(fā)器將私鑰d表示成由t個子密鑰d
文檔編號H04L9/32GK1411202SQ01136018
公開日2003年4月16日 申請日期2001年9月28日 優(yōu)先權日2001年9月28日
發(fā)明者荊繼武, 馮登國, 周天陽 申請人:中國科學院研究生院