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