專利名稱:一種密鑰生成方法、設備及服務器的制作方法
技術領域:
本發明涉及密鑰協商相關技術領域,特別是涉及一種密鑰生成方法、設備及服務器。
背景技術:
密鑰協商是一個基本的密碼學協議,最早的有效密鑰協商協議是DifTie-Hellman協議。Diffie和Hellman已經在不安全的信道上研究了密鑰交換的問題。密鑰協商的目標是在兩個具有計算能力的參與者中間安全交換一個密鑰,該密鑰能夠用來作為一個密碼系統的加密和解密密鑰。Diffie-Hellman密鑰協商協議在離散對數問題是難處理的假設下,這個方案是安全的。方案在Zp中運行,其中P是一個素數。假設g是Zp的一個生成元,g,p都是公開的。在這個協議中,因為A和B都有較強的計算能力,所以他們能夠自己計算模指數。Diffie-Hellman密鑰協商協議a) A 隨機選擇一個數 a e
;b) A計算gamodp,并把它發送給B;c) B 隨機選擇一個數 β e [O, p-2];d) B計算gemodp,并把它發送給A;e) A 計算 K= (ge) amodp, B 計算 K = (ga)emodp。則A與B獲得相同的密鑰K,并采用該密鑰K對A與B之間的通信進行加密。然而在不安全的環境,特別是在云計算環境中,如果A和B的計算能力太弱而無法實現模指數的計算,它們不得不求助于云計算服務器來計算模指數。把計算任務外包給一個不誠實的云計算服務商,則用戶可能得到不誠實的外包服務。在一個外包計算任務的方案中,安全性應該由如下的兩個方面構成(1)私有性。一旦用戶提供一個詢問,服務器能使用該詢問計算一個結果。對于服務器和外部攻擊者,詢問和結果都是在加密或隱藏的形式。(2)正確性。服務器為用戶需求所計算的結果是正確的,而且用戶能夠有效地驗證服務器返回的計算結果的正確性。除此之外,用戶正確的驗證應該比直接地計算結果更有效。但是,云計算服務器執行DifTie-Hellman密鑰協商協議要求A和B把他們的密鑰α,β以及密鑰K泄露給云計算服務器。如果用戶對于抵抗內部和外部攻擊者的安全性非常敏感,則在云計算中執行傳統的DifTie-Hellman密鑰協商協議是不可行的。
發明內容
基于此,有必要針對兩個計算能力很弱的用戶在服務器不誠實的情形下無法安全實現密鑰協商的技術問題,提供一種密鑰生成方法。一種密鑰生成方法,包括獲取一個隨機數作為第一根隨機數,獲取多個隨機數作為第一隨機數,得到包括多個第一隨機數的第一隨機數組;
計算多個第一相關數,得到包括多個第一相關數的第一相關數組,其中,所述每個第一相關數由一個第一隨機數與第一根隨機數計算得到;根據第一隨機數計算得到第一設備中間參數,并發送給第二設備;接收第二設備發送的第二設備中間參數,所述第二設備中間參數由第二設備隨機獲取的多個第二隨機數計算得到;將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,將第一隨機數組第一部分和第一相關數組第二部分發送給第一服務器,將第一隨機數組第二部分和第一相關數組第一部分發送給第二服務器;接收第一服務器發送的第一服務器參數,其中,所述第一服務器參數由第一服務 器對第一隨機數組第一部分、第一相關數組第二部分進行計算得到;接收第二服務器發送的第二服務器參數,其中,所述第二服務器參數由第二服務器對第一隨機數組第二部分和第一相關數組第一部分進行計算得到;通過第一服務器和第二服務器根據第一相關數及第二設備中間參數執行安全多方計算協議進行模指數運算得到第一設備參數,并發送到第二設備;接收第二設備發送的第二設備參數,其中,所述第二設備參數由第二設備通過第一服務器和第二服務器根據第二相關數及第一設備中間參數執行安全多方計算協議進行模指數運算得到,所述第二相關數由第二設備根據第二隨機數與第二根隨機數計算得到,所述第二根隨機數由第二設備隨機選擇;采用第一服務器參數、第二服務器參數、第一設備參數及第二設備參數生成密鑰。在其中一個實施例中,第一相關數組第一部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第一部分中的一個第一隨機數計算得到;第一相關數組第二部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第二部分中的一個第一隨機數計算得到。在其中一個實施例中,具體包括初始化選擇一個有限域Zp,其中,P是一個素數,從Zp中選擇一個生成元g ;獲取一個隨機數α作為第一根隨機數,獲取兩個隨機數a i和α /作為第一隨機數,得到包括CtjP Ct1'的第一隨機數組,其中,a,Ct1, a / e [O, p-2];計算兩個第一相關數α 2和α 2’,得到包括α 2和α 2’的第一相關數組,其中,α 2
=Ct-Ct1Iiiod(P-1), ct 2,= α - a / mod (ρ-1);計算兩個第一設備中間參數f mod "和g·*1 modp,祀If modp和if'' mod/>發給
第二設備;接收第二設備發送的兩個第二設備中間參數?1 mod/^PgA'modp,其中,β !和β/為第二設備隨機獲取的兩個第二隨機數,β1; β/ e [O, p-2];將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,第一隨機數組第一部分為Ci1,第一隨機數組第二部分為α/,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,第一相關數組第一部分為α2,第一相關數組第二部分為α 2’,將a i和α 2’發送給第一服務器,將α 2和α /發送給第二服務器;接收由第一服務器發送的第一服務器參數K11和Κ22’,其中,K11由第一服務器根MKu =PAm0dj5得到,K22’由第一服務器根據[22'=fA mod/)計算得到,其中,β2’由第二設備根據β2’ = β-β/mocKp-l)得到,β為第二設備隨機獲取的第二根隨機數,β e
;接收由第二服務器發送的第二服務器參數Kn’和K22,其中,Κη’由第二服務器根據[^=8°^’1110(^計算得到,K22由第二服務器根據I22計算得到,其中,β2由第二設備根據= β - β ^od (ρ-1)得到;與第一服務器和第二服務器共同執行安全多方計算協議進行模指數運算,分別得至Ij兩個第一設備參數K21和K21 ’,其中,人=(,W2 mod;;,人%’=(,)< mod/;,并發送K21
和K21 ’給第二設備;接收第二設備發送的兩個第二設備參數K12和K12’,K12和K12’由第二設備、第一服務器和第二服務器共同執行安全多方計算協議進行模指數運算得到,其中, Kn = (μ'λ· : mod P -Kr'= (g"<: )/v mod p ;如果K11K12K21K22 = K11' K12’ K21 ’ K22’,則采用 K = K11K12K21K22 作為密鑰。—種密鑰生成設備,包括隨機數選擇模塊、相關數計算模塊、第一設備中間參數計算模塊、第二設備中間參數接收模塊、服務器發送模塊、第一服務器參數接收模塊、第二服務器參數接收模塊、設備安全多方計算協議執行模塊、第二設備參數接收模塊和密鑰生成模塊隨機數選擇模塊,用于獲取一個隨機數作為第一根隨機數,獲取多個隨機數作為第一隨機數,得到包括多個第一隨機數的第一隨機數組;相關數計算模塊,用于計算多個第一相關數,得到包括多個第一相關數的第一相關數組;其中,所述每個第一相關數由一個第一隨機數與第一根隨機數計算得到;第一設備中間參數計算模塊,用于根據第一隨機數計算得到第一設備中間參數,并發送給第二設備;第二設備中間參數接收模塊,用于接收第二設備發送的第二設備中間參數,所述第二設備中間參數由第二設備隨機獲取的多個第二隨機數計算得到;服務器發送模塊,用于將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,將第一隨機數組第一部分和第一相關數組第二部分發送給第一服務器,將第一隨機數組第二部分和第一相關數組第一部分發送給第二服務器;第一服務器參數接收模塊,用于接收第一服務器發送的第一服務器參數,其中,所述第一服務器參數由第一服務器對第一隨機數組第一部分、第一相關數組第二部分進行計算得到;第二服務器參數接收模塊,用于接收第二服務器發送的第二服務器參數,其中,所述第二服務器參數由第二服務器對第一隨機數組第二部分和第一相關數組第一部分進行計算得到;設備安全多方計算協議執行模塊,用于通過第一服務器和第二服務器根據第一相關數及第二設備中間參數執行安全多方計算協議進行模指數運算得到第一設備參數,并發送到第二設備;第二設備參數接收模塊,用于接收第二設備發送的第二設備參數,其中,所述第二設備參數由第二設備通過第一服務器和第二服務器根據第二相關數及第一設備中間參數執行安全多方計算協議進行模指數運算得到,所述第二相關數由第二設備根據第二隨機數與第二根隨機數計算得到,所述第二根隨機數由第二設備隨機選擇;密鑰生成模塊,用于采用第一服務器參數、第二服務器參數、第一設備參數及第二設備參數生成密鑰。一種密鑰生成方法,包括接收由第一設備生成的第一隨機數組第一部分和第一相關數組第二部分;接收由第二設備生成的第二隨機數組第一部分和第二相關數第二部分組;對接收到的第一隨機數第一部分、第一相關數第二部分 、第二隨機數第一部分和第二相關數第二部分進行計算得到第一服務器參數,并發送給第一設備和第二設備;與第一設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第一設備參數,所述第一設備參數與第一服務器參數用于第一設備生成密鑰;與第二設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第二設備參數,所述第二設備參數與第一服務器參數用于第二設備生成密鑰。在其中一個實施例中,具體包括選擇一個有限域Zp,其中,P是一個素數,從Zp中選擇一個生成元g ;接收由第一設備生成的第一隨機數組第一部分α i和第一相關數組第二部分α2,;接收由第二設備生成的第二隨機數組第一部分P1和第二相關數組第二部分β2,;計算第一服務器參數= g* modp和產mod/),并把K11和K22’發送給
第一設備和第二設備;與第一設備和第二服務器共同執行安全多方計算協議進行模指數運算,以生成兩個第一設備參數K21和V,其中,[21 =(#尸動#,[21’=(^廣'麵忭^中,# niod;;和mod P為第一設備從第二設備接收的兩個第二設備中間參數,Ci2和α2’由第一設備根據 α2= α-a Pod(P-1)和 α 2’ = α - a / mod (ρ_1)計算得到,ajP a / 為第一設備隨機選擇的第一隨機數,α為第一設備隨機選擇的第一根隨機數,a, QljQ1' e [O, p-2];與第二設備和第二服務器共同執行安全多方計算協議進行模指數運算,以生成兩個第二設備參數 K12 和 K12,,其中,[12 = w: mod" Κ12'={ ζ,ι ' 2 η\ο ρ ,其中mod/
和mod p為第二設備從第一設備接收的兩個第一設備中間參數,02和β2’由第二設備根據 β 2 = β-^1Hiod(P-1)和 β 2,= β-β / mod(p-l)得到,和 β / 為第二設備隨機選擇的第二隨機數,β為第二設備隨機選擇的第二根隨機數,β/ e [O, p-2] 0—種密鑰生成服務器,包括第一設備接收模塊、第二設備接收模塊、第一服務器參數生成模塊、協調第一設備安全多方計算協議執行模塊和協調第二設備安全多方計算協議執行模塊第一設備接收模塊,用于接收由第一設備生成的第一隨機數組第一部分和第一相關數組第二部分;第二設備接收模塊,用于接收由第二設備生成的第二隨機數組第一部分和第二相關數組第二部分;第一服務器參數生成模塊,用于對接收到的第一隨機數組第一部分、第一相關數組第二部分、第二隨機數組第一部分和第二相關數組第二部分進行計算得到第一服務器參數,并發送給第一設備和第二設備;協調第一設備安全多方計算協議執行模塊,用于與第一設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第一設備參數,所述第一設備參數與第一服務器參數用于第一設備生成密鑰;協調第二設備安全多方計算協議執行模塊,用于與第二設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第二設備參數,所述第二設備參數與第一服務器參數用于第二設備生成密鑰。一種密鑰生成方法,包括 第一設備獲取一個隨機數作為第一根隨機數,獲取多個隨機數作為第一隨機數,得到包括多個第一隨機數的第一隨機數組;計算多個第一相關數,得到包括多個第一相關數的第一相關數組,其中,所述每個第一相關數由一個第一隨機數與第一根隨機數計算得到;第二設備獲取一個隨機數作為第二根隨機數,獲取多個隨機數作為第二隨機數,得到包括多個第二隨機數的第二隨機數組;計算多個第二相關數,得到包括多個第二相關數的第二相關數組,其中,所述每個第二相關數由一個第二隨機數與第二根隨機數計算得到;第一設備將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,將第一隨機數組第一部分和第一相關數組第二部分發送給第一服務器,將第一隨機數組第二部分和第一相關數組第一部分發送給第二服務器;第二設備將第二隨機數組分為第二隨機數組第一部分和第二隨機數組第二部分,將第二相關數組分為第二相關數組第一部分和第二相關數組第二部分,將第二隨機數組第一部分和第二相關數組第二部分發送給第一服務器,將第二隨機數組第二部分和第二相關數組第一部分發送給第二服務器;第一服務器對接收到的第一隨機數組第一部分、第一相關數組第二部分、第二隨機數組第一部分和第二相關數組第二部分進行計算得到第一服務器參數,并發送給第一設備和第二設備;第二服務器對接收到的第一隨機數組第二部分、第一相關數組第一部分、第二隨機數組第二部分和第二相關數組第一部分進行計算得到第二服務器參數,并發送給第一設備和第二設備;第一設備通過第一服務器和第二服務器執行安全多方計算協議進行模指數運算得到第一設備參數,并發送給第二設備;第二設備通過第一服務器和第二服務器執行安全多方計算協議進行模指數運算得到第二設備參數,并發送給第一設備;第一設備和第二設備采用第一服務器參數、第二服務器參數、第一設備參數及第二設備參數的組合作為密鑰。
在其中一個實施例中第一相關數組第一部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第一部分中的一個第一隨機數計算得到,第一相關數組第二部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第二部分中的一個第一隨機數計算得到;第二相關數組第一部分中的任意一個第二相關數,由第二根隨機數及第二隨機數組第一部分中的一個第二隨機數計算得到,第二相關數組第二部分中的任意一個第二相關數,由第二根隨機數及第二隨機數第二部分中的一個第二隨機數計算得到。在其中一個實施例中,具體包括初始化選擇一個有限域Zp,其中,P是一個素數,從Zp中選擇一個生成元g ;第一設備獲取一個隨機數α作為第一根隨機數,獲取兩個隨機數a i和α /作為第一隨機數,得到包括a JP α /的第一隨機數組,其中,α,Ci1, < e
,計算兩個 第一相關數α 2和α 2’,得到包括α 2和α 2’的第一相關數組,其中,α 2 = a -a ^0(1 (ρ-1),α 2 = α - α / mod (ρ_1),計算兩個第一設備中間參數,e" mod "和f mod p ^gn- mod p.和mod p發給第二設備;第二設備獲取一個隨機數β作為第二根隨機數,獲取兩個隨機數β i和β /作為第二隨機數,得到包括β JP β/的第二隨機數組,其中,β,βρβ/ e
,計算兩個第二相關數β 2和β 2’,得到包括β 2和β 2’的第二相關數組其中,β ο = β - β Pod(P-1),β 2 = ^-^/!!!。(^-。,計算兩個第二設備中間參數兄〃1! ^/^、modp把尺爲modp和尺~ mod p發給第一設備;第一設備將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,第一隨機數組第一部分為Ci1,第一隨機數組第二部分為α/,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,第一相關數組第一部分為α 2,第一相關數組第二部分為α 2’,將a i和α 2’發送給第一服務器,將α 2和α /發送給第二服務器;第二設備將第二隨機數組分為第二隨機數組第一部分和第二隨機數組第二部分,第二隨機數組第一部分為P1,第二隨機數組第二部分為β/,將第二相關數組分為第二相關數組第一部分和第二相關數組第二部分,第二相關數組第一部分為β 2,第二相關數組第二部分為β2’,將^和β2’發送給第一服務器,將32和β/發送給第二服務器;第一服務器計算第一服務器參數尤,,=g· mod和尤22'= gW ^Odp,第二服務
器計算第二服務器參數尤mod i 和二 ga+- ^odp,然后第一服務器將K11和K22 ’發送給第一設備和第二設備,第二服務器將Kn’和K22發送給第一設備和第二設備;第一設備、第一服務器和第二服務器共同執行安全多方計算協議進行模指數運算,得到兩個第一設備參數 K21 和 K21 ’,其中,[21 = (EfhT1 mod P Ji1^igfscY1' moA P ;第二設備、第一服務器和第二服務器共同執行安全多方計算協議進行模指數運算,得到兩個第二設備參數K12和K12’,其中人=(^*)A mod/ ^2'=(g^)^moAp\第一設備發送K21和K21 ’給第二設備,第二設備發送K12和K12’給第一設備;第一設備驗證如果K11K12K21K22 = Kn’ K12’ K21 ’ K22’,則采用 K = K11K12K21K22 作為密鑰;第二設備驗證如果K11K12K21K22 = Kn’ K12’ K21 ’ K22’,則采用 K = K11K12K21K22 作為密鑰。在其中一個實施例中,所述第一服務器與第二服務器通信隔斷。以避免第一服務器與第二服務器之間互相通信交互第一設備與第二設備的安全信息。上述的安全多方計算協議可以使用S. Hohenbergei^PA. Lysyanskaya提出的模指數外包計算協議。本發明的密鑰生成方法,在密鑰生成的過程中,兩個不誠實的服務器只能獲得密鑰生成過程中的部分信息,兩個服務器的任何一方都不可能獲得完整的秘密信息,從而保證密鑰生成的安全性。因此兩個計算能力很弱的設備用戶,即使在服務器不可信的情形下,也能借助服務器實現模指數的外包計算,得到一個共同的密鑰用于信息的加密和解密。
圖1為本發明的密鑰生成系統100的方框示意圖;圖2為由本發明的密鑰生成設備和密鑰生成服務器執行的密鑰生成方法的流程圖; 圖3為本發明的密鑰生成設備300的方框示意圖;圖4為本發明的密鑰服務器400的方框示意圖;圖5為由本發明的密鑰生成設備和密鑰生成服務器執行的密鑰生成方法的信息交互圖。
具體實施例方式下面結合附圖和具體實施例對本發明做進一步詳細的說明。如圖1示出了根據本發明的密鑰生成系統100的方框示意圖。如圖1所示,所述密鑰生成系統100包括第一設備101、第二設備102、第一服務器103和第二服務器104。這里要說明的是,所述第一設備101、第二設備102、第一服務器103和第二服務器104應該包括本文中所公開的各種變型。如圖2示出了根據本發明的由本發明的密鑰生成設備和密鑰生成服務器執行的密鑰生成方法的流程圖。如圖2所示,結合圖2的密鑰生成系統100在步驟S201,初始化選擇一個有限域Zp,其中,P是一個素數,從Zp中選擇一個生成元g,P, g是公開的,設定一個離線的快速計算指數算法Randl,然后轉到步驟S102 ;算法Randl被一個素數p,一個生成元g e Z;;和一些其他的值初始化,它的每一次運算都產生一個獨立的、隨機的對(b,gbmodp),其中b e
。一個可以替換的方法是使用一個可信任的服務器去提前多次執行算法Randl,得到一個由獨立、隨機的對組成的表格,然后嵌入到要調用的設備的內存中。設備每一次運行Randl,都輸出表中的一個值。在步驟S202,第一設備101選擇一個隨機數α作為第一根隨機數,選擇兩個隨機數、和Ct1'作為第一隨機數,得到包括^和α /的第一隨機數組,其中a,Ct1,a/ e
,計算兩個第一相關數%和^’,得到包括^和α2’的第一相關數組,其中 Ct2= a - a jmocKp-l), α 2' = α - α / mod (ρ_1),然后運行 Randl 兩次,計算尺…mod/)和gai' mod p,把mod 和f modp發給第二設備 102 ;在步驟S203,第二設備102選擇一個隨機數β作為第二根隨機數,選擇兩個隨機數^和β /作為第二隨機數,得到包括P1和β /的第二隨機數組,其中β,β1;β/ e [O,p-2],計算兩個第二相關數32和β2’,得到包括@2和β2’的第二相關數組,其中 β 2 = β - β ^od (ρ-1), β 2' = β - β / mod (ρ-1),計算尺Α modp^WgPi' mod ρ,把gΑ modρ和gA' mod/; 發給第一設備101 ;在步驟S204,第一設備101把兩個第一隨機數組分為第一隨機數組第一部分α !和第一隨機數組第二部分α/,把兩個第一相關數組分為第一相關數組第一部分Ci2和第一相關數組第二部分α2’,把第一隨機數組第一部分a i和第一相關數組第二部分Ci2’發 送給第一服務器103,把第一隨機數組第二部分α /和第一相關數組第一部分α2發送給第二服務器104,由于α 2’僅與α /及α有關,α 2僅與a i及α有關,且第一服務器103和第二服務器104均不知道α,因此,第一服務器103和第二服務器104分別拿到第一設備101的部分秘密信息;在步驟S205,第二設備102把兩個第二隨機數組分為第二隨機數組第一部分和第二隨機數組第二部分β/,把兩個第二相關數組分為第二相關數組第一部分β2和第二相關數組第二部分β2’,把第二隨機數組第一部分β i和第二相關數組第二部分β2’發送給第一服務器103,把第二隨機數組第二部分β/和第二相關數組第一部分β2發送給第二服務器104,由于β2’僅與P1’及β有關,β2僅與^及β有關,由于第一服務器103和第二服務器104均不知道β,因此,第一服務器103和第二服務器104分別拿到第二設備104的部分秘密信息;在步驟S206,第一服務器103計算第一服務器參數= ga'Pi mod^和gaiW modi ,第二服務器104計算第二服務器參數mod ρ和人=mod然后第一服務器103把K11和Κ22,發送給第一設備101和第二設備102,第二服務器104把Κη’和K22發送給第一設備101和第二設備102 ;在步驟S207,第一設備101、第一服務器103和第二服務器104共同執行安全多方計算協議進行模指數運算兩次,分別得到兩個第一設備參數K21和K21 ’,其中K21根據α 2和
生成,K21 ’根據α2’和生成;在步驟S208,第二設備102、第一服務器103和第二服務器104共同執行安全多方計算協議進行模指數運算兩次,分別得到兩個第二設備參數K12和K12’,其中K12根據β 2和P生成,K12’根據β2’和f生成;在步驟S209,第一設備101驗證K21和K21 ’的正確性,第二設備102驗證K12和K12’的正確性。如果任何一個驗證出錯,則輸出“錯誤”。否則,第一設備101發送K21和K21 ’給第二設備102,第二設備102發送K12和K12’給第一設備101 ;在步驟S210,第一設備 101 和第二設備 102 各自驗證 K11K12K21K22 = K11' K12’ K21 ’ K22’是否成立,如果不成立,輸出“錯誤”,否則,第一設備101和第二設備102得到密鑰K =KnK12K21K22O在后續第一設備101與第二設備102之間的通信,均采用各自的密鑰進行加密和解密,由于兩個設備的密鑰相同,則第一設備101和第二設備102能實現正常通信。必須指出的是,在上述步驟S202和S203中,采用兩個第一隨機數作為第一隨機數組、采用兩個第一相關數作為第一相關數組、采用兩個第二隨機數作為第二隨機數組以及采用兩個第二相關數作為第二相關數組均是出于算法簡單的考慮,實際上可以采用多于兩個的第一隨機數、第一相關數、第二隨機數和第二相關數進行組合,只要滿足以下條件,即“第一相關數組第一部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第一部分中的一個第一隨機數計算得到,第一相關數組第二部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第二部分中的一個第一隨機數計算得到;第二相關數組第一部分中的任意一個第二相關數,由第二根隨機數及第二隨機數組第一部分中的一個第二隨機數計算得到,第二相關數組第二部分中的任意一個第二相關數,由第二根隨機數及第二隨機數第二部分中的一個第二隨機數計算得到。”則第一服務器和第二服務器僅獲得第一設備和第二設備的部分信息,從而保證安全性。當采用多于兩個的第一隨機數、第一相關數、第二隨機數和第二相關數時,需要對后續步驟做相應的修改。本領域技術人員在經過有限次計算后可以得到相應的修改步驟。在上述步驟S207和S208中,安全多方計算協議可以使用S. Hohenberger和A. Lysyanskaya提出的模指數外包計算協議,即— EXPifi2H、K21'^ ΕΧΡ(α2\8β') ^ K1 t EXPifiH、£^(爲’,0。該模指數外包計算協議具體如下 通過使用快速的離線指數計算和不可信的輔助服務器計算的預處理過程,S. Hohenberger和A. Lysyanskaya提出了一個使用不信任指數計算盒子U’ = (U1W)去計算和檢測模指數運算的外包計算協議,其中一旦協議開始,則U/和U2’就不能交互。在這個不信任的程序模型中,攻擊者E為U/和U2’寫好代碼,并把它們給誠實的用戶T。如果是云計算環境中,U/和U2’就是兩個不信任的云計算服務器,而T就是一個用戶。在本實施例中,第一服務器103和第二服務器104即所述的兩個不可信的云計算服務器U/和U2’,而第一設備101和第二設備102即所述的誠實的用戶T。在該協議中,假設存在一個算法Randl計算(b, gbmodp)。算法Randl被一個素數P,一個生成元geZ:和一些其他的值初始化,它的每一次都產生一個獨立的、隨機的(b, gbmodp),其中b e [O, p-2]。一個可以替換的方法是使用一個可信任的服務器去提前計算一個由獨立、隨機的對組成的表格,然后嵌入到T的內存中。每一次激活Randl,它都輸出表中的一個值。對于Randl,至關重要的是它的輸出與真實的隨機數應該是不可區分的。模指數外包計算算式EXP(a, u) — uamodp,該算式表示,輸入兩個參數(a, u),經過運算后,輸出UaHiodp,具體算法如下初始化p,q是兩個大素數,Zp*的階是q。I T 運行 Randl 兩次,輸出(α,gamodp), ( β , gVodp),其中 v = ga, vb = ge,且b = β / a。2 :T 進行兩次分解,一個分解是 ua = (Vw) a =vawa = V1Vwa ,其中 w = u/v, c =a -b ;另一個分解是 vbvcwa = vb (fh) cwd+e = vbfchcwdwe,其中 h = v/f, e = a -d。3 :對于每個程序,T固定兩個測試詢問運行Randl得到O1^gh ) , H ),
(nD, (d)
15-ο第一次測試詢問,T詢問 U1, U1 (d, w) wd, U1 (c, f) — fc, U ^tl I r{,gr') gh,第二次測試詢問,T詢問 U2, U2 (e, w) — we, U2 (c, h) — hc, U2 lr\->Sh)^ Sh ,U1(t1ir2,gr2)^· gh。4 T檢查給U1和U2的測試詢問是不是產生正確的輸出(即#和#)。如果不成立,則輸出“錯誤”,否則,他通過如下等式計算出u'vbfchcwdwe = vb+cwd+e = vawa = (vw) a = Ua。作為一個例子,一種密鑰協商協議初始化Zp是一個有限域,P是一個素數,g是Zp的一個生成元。p,g是公開的。1:用戶 A 選擇隨機數 a, Ct1, a / e
,計算 a 2 = a - a pod (p_l) , a 2’=a-a Jmod(P-1),然后運行 Randl 兩次,得到Oi, g" mod/7), ,f _ mod/)),并送Wl mod p , gmod /;給用戶 B ;2:用戶 B 選擇隨機數 β, β 1; β / e [O, p-2],計算 β 2 = β _ β !mod (ρ_1), β 2’=β -β /mocKp-l),然后運行 Randl 兩次,得到(A.f mod, ),(汊mod/ ),并送g'' modp,片/V mod/;給用戶 A ;3 :用戶 A送(a ” a2’)給 Ul, ( a 2, a / )給 U2 ;4 :用戶 B 送(β η β 2’)給 U1, ( β 2,β / )給 U2 ;5 =U1 計算 Z11 = gaA modp 和[22'二 g°2'A'mod/ , U2 計算 ^ll’= mod/ 和K22 = modp。然后 U1 送 Kn,Κ22,給 A 和 B,U2 送 Kn,,K22 給 A 和 B。6 :用戶A和U1, U2運行模指數的外包計算兩次,分別得到K21和K21’,其中K21 KXl\a..y'··) K21'KXPia^gii ')
O7 :用戶B和U1, U2運行模指數的外包計算兩次,分別得到K12和K12’,其中
人Κ' ΚΧΡ(β )
*■5—ο8 Α驗證K21和K21 ’的正確性,B驗證K12和K12’的正確性。如果任何一個驗證出錯,則輸出“錯誤”。否則,A發送K21和K21 ’給B, B發送K12和K12’給A09 :Α和B各自驗證K11K12K21K22 = K11' K12' K21' K22'是否成立,如果不成立,輸出“錯誤”,否則雙方得到一個共同的密鑰K = K11K12K21K220圖3示出了根據本發明的密鑰生成設備300的方框示意圖。如圖3所示,密鑰生成設備300包括隨機數選擇模塊301、相關數計算模塊302、第一設備中間參數計算模塊303、第二設備中間參數接收模塊304、服務器發送模塊305、第一服務器參數接收模塊306、第二服務器參數接收模塊307、設備安全多方計算協議執行模塊308、第二設備參數接收模塊309和密鑰生成模塊310 隨機數選擇模塊301,用于選擇一個隨機數作為第一根隨機數,選擇多個隨機數作為第一隨機數,得到包括多個第一隨機數的第一隨機數組;相關數計算模塊302,用于計算多個第一相關數,得到包括多個第一相關數的第一相關數組,所述每個第一相關數由一個第一隨機數與第一根隨機數計算得到;第一設備中間參數計算模塊303,用于根據第一隨機數計算得到第一設備中間參數,并發送給第二設備;第二設備中間參數接收模塊304,用于接收第二設備發送的第二設備中間參數,所述第二設備中間參數由第二設備隨機選擇的多個第二隨機數計算得到;
服務器發送模塊305,用于把第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,把第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,把第一隨機數組第一部分和第一相關數組第二部分發送給第一服務器,把第一隨機數組第二部分和第一相關數組第一部分發送給第二服務器;第一服務器參數接收模塊306,用于接收第一服務器發送的第一服務器參數,所述第一服務器參數由第一服務器對接收到的第一隨機數組第一部分、第一相關數組第二部分進行計算得到;第二服務器參數接收模塊307,用于接收第二服務器發送的第二服務器參數,所述第二服務器參數由第二服務器對接收到的第一隨機數組第二部分和第一相關數組第一部分進行計算得到;設備安全多方計算協議執行模塊308,用于通過第一服務器和第二服務器根據第一相關數及第二設備中間參數執行安全多方計算協議進行模指數運算得到第一設備參數,并發送到第二設備; 第二設備參數接收模塊309,用于接收第二設備發送的第二設備參數,所述第二設備參數由第二設備通過第一服務器和第二服務器根據第二相關數及第一設備中間參數執行安全多方計算協議進行模指數運算得到,所述第二相關數由第二設備根據第二隨機數與第二根隨機數計算得到,所述第二根隨機數由第二設備隨機選擇;密鑰生成模塊310,用于采用第一服務器參數、第二服務器參數、第一設備參數及第二設備參數的組合作為密鑰。圖4示出了根據本發明的密鑰生成服務器400的方框示意圖。—種密鑰生成服務器400,包括第一設備接收模塊401、第二設備接收模塊402、第一服務器參數生成模塊403、協調第一設備安全多方計算協議執行模塊404和協調第二設備安全多方計算協議執行模塊405 第一設備接收模塊401,用于從第一設備接收由第一設備生成的第一隨機數組第一部分和第一相關數組第二部分;第二設備接收模塊402,用于從第二設備接收由第二設備生成的第二隨機數組第一部分和第二相關數組第二部分;第一服務器參數生成模塊403,用于對接收到的第一隨機數組第一部分、第一相關數組第二部分、第二隨機數組第一部分和第二相關數組第二部分進行計算得到第一服務器參數,并發送給第一設備和第二設備;協調第一設備安全多方計算協議執行模塊404,用于與第一設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第一設備參數,所述第一設備參數與第一服務器參數用于第一設備生成密鑰;協調第二設備安全多方計算協議執行模塊405,用于與第二設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第二設備參數,所述第二設備參數與第一服務器參數用于第二設備生成密鑰。如圖5示出了根據本發明的由本發明的密鑰生成設備和密鑰生成服務器執行的密鑰生成方法的信息交互圖。步驟S510 :第一設備101給第二設備102信息mod/),f ' mod/;.
步驟S520 :第二設備 102 給第一設備 101 信息mod/ , gK mod ρ .步驟S531 :第一設備101給第一月艮務器103信息(α ” α 2,);步驟S532 :第一設備101給第二服務器104信息(α 2,α / );步驟S541 :第二設備102給第一服務器103信息(β1; β;);步驟S542 :第二設備102給第二服務器104信息(β 2,β / );步驟S551 :第一服務器103給第一設備101信息K11, K22’ ;步驟S552 :第一服務器103給第二設備102信息K11, K22’ ;
步驟S553 :第二服務器104給第一設備101信息Kn’,K22 ;步驟S554 :第二服務器104給第二設備102信息Kn’,K22 ;步驟S560 :在第一設備101、第一服務器103和第二服務器104中執行模指數的外包計算兩次。第一服務器103和第二服務器104之間的虛線表示兩個服務器沒有交互;步驟S570 :在第二設備102、第一服務器103和第二服務器104中執行模指數的外包計算兩次。第一服務器103和第二服務器104之間的虛線表示兩個服務器沒有交互;步驟S581 :第一設備101給第二設備102信息K21和K21 ’ ;步驟S582 :第二設備102給第一設備101信息K12和K12’ ;步驟S590 :第一設備101計算K1 = K11K12K21K22,第二設備102各自計算K2 =KnK12K21K22O對于第一服務器103和第二服務器104來說,第一服務器103缺少Kn’,K22,而第二服務器104缺少Kn,K22’,因此均無法計算出K1或者K2,從而保證了密鑰生成的安全性。作為一種具體的應用,兩個服務器103和104可以為云服務器,云服務器的計算能力較強,但具有不安全性,特別適合本發明所提供的密鑰生成方法。本發明提供的密鑰生成方法,使得計算能力很弱的第一設備和第二設備得到一個公共的密鑰K,但是云服務器沒有得到K的任何信息。在密鑰生成的過程中,兩個不可信的服務器只能獲得密鑰生成過程中的部分信息,在兩個服務器不能串通,即兩個服務器隔絕通信的條件下,任何一方都不可能獲得完整的秘密信息,從而保證密鑰生成的安全性。以上所述實施例僅表達了本發明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬于本發明的保護范圍。因此,本發明專利的保護范圍應以所附權利要求為準。
權利要求
1.一種密鑰生成方法,其特征在于,包括獲取一個隨機數作為第一根隨機數,獲取多個隨機數作為第一隨機數,得到包括多個第一隨機數的第一隨機數組;計算多個第一相關數,得到包括多個第一相關數的第一相關數組,其中,所述每個第一相關數由一個第一隨機數與第一根隨機數計算得到;根據第一隨機數計算得到第一設備中間參數,并發送給第二設備;接收第二設備發送的第二設備中間參數,所述第二設備中間參數由第二設備隨機獲取的多個第二隨機數計算得到;將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,將第一隨機數組第一部分和第一相關數組第二部分發送給第一服務器,將第一隨機數組第二部分和第一相關數組第一部分發送給第二服務器;接收第一服務器發送的第一服務器參數,其中,所述第一服務器參數由第一服務器對第一隨機數組第一部分、第一相關數組第二部分進行計算得到;接收第二服務器發送的第二服務器參數,其中,所述第二服務器參數由第二服務器對第一隨機數組第二部分和第一相關數組第一部分進行計算得到;通過第一服務器和第二服務器根據第一相關數及第二設備中間參數執行安全多方計算協議進行模指數運算得到第一設備參數,并發送到第二設備;接收第二設備發送的第二設備參數,其中,所述第二設備參數由第二設備通過第一服務器和第二服務器根據第二相關數及第一設備中間參數執行安全多方計算協議進行模指數運算得到,所述第二相關數由第二設備根據第二隨機數與第二根隨機數計算得到,所述第二根隨機數由第二設備隨機選擇;采用第一服務器參數、第二服務器參數、第一設備參數及第二設備參數生成密鑰。
2.根據權利要求1所述的密鑰生成方法,其特征在于,第一相關數組第一部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第一部分中的一個第一隨機數計算得到;第一相關數組第二部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第二部分中的一個第一隨機數計算得到。
3.根據權利要求1所述的密鑰生成方法,其特征在于,具體包括初始化選擇一個有限域Zp,其中,P是一個素數,從Zp中選擇一個生成元g ;獲取一個隨機數α作為第一根隨機數,獲取兩個隨機數\和α/作為第一隨機數, 得到包括£^和a /的第一隨機數組,其中,a,Ct1, a / e
;計算兩個第一相關數%和a2’,得到包括%和a2’的第一相關數組,其中,Ci2 = α-αρο Κρ-Ι), ct 2,= a - a J mod (p-1);計算兩個第一設備中間參數f mod"和gei mod/ ,把& mod/;和f mod/;發給第二設備;接收第二設備發送的兩個第二設備中間參數f1 mod/;和兒A’mod/ ,其中,P1和β / 為第二設備隨機獲取的兩個第二隨機數,β/ e [O, p-2];將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,第一隨機數組第一部分為h,第一隨機數組第二部分為a/,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,第一相關數組第一部分為α 2,第一相關數組第二部分為 α 2’,將a i和α 2’發送給第一服務器,將α 2和α /發送給第二服務器;接收由第一服務器發送的第一服務器參數K11和Κ22’,其中,K11由第一服務器根據 =W1 mo卸得到,K22 ’由第一服務器根據[=Pvv modp計算得到,其中,β2’由第二設備根據β2’ = β-β/mocKp-l)得到,β為第二設備隨機獲取的第二根隨機數,β e [O, p-2];接收由第二服務器發送的第二服務器參數Kn’和K22,其中,Κη’由第二服務器根據 AV=Pvvmod/;計算得到,K22由第二服務器根據I22計算得到,其中,β2由第二設備根據= β - β ^od (ρ-1)得到;與第一服務器和第二服務器共同執行安全多方計算協議進行模指數運算,分別得到兩個第一設備參數K21和K21 ’,其中,人,i =CV1廣:mod P ,Κ,],= ( ξ ''γ<2 mod p,并發送K21和 K21 ’給第二設備;接收第二設備發送的兩個第二設備參數K12和K12’,1(12和1(12’由第二設備、第一服務器和第二服務器共同執行安全多方計算協議進行模指數運算得到,其中,[,2 =C "1 mod,如果 K11K12K21K22 = Kn’ K12’ K21 ’ K22’,則采用 K = K11K12K21K22 作為密鑰。
4.一種密鑰生成設備,其特征在于,包括隨機數選擇模塊、相關數計算模塊、第一設備中間參數計算模塊、第二設備中間參數接收模塊、服務器發送模塊、第一服務器參數接收模塊、第二服務器參數接收模塊、設備安全多方計算協議執行模塊、第二設備參數接收模塊和密鑰生成模塊隨機數選擇模塊,用于獲取一個隨機數作為第一根隨機數,獲取多個隨機數作為第一隨機數,得到包括多個第一隨機數的第一隨機數組;相關數計算模塊,用于計算多個第一相關數,得到包括多個第一相關數的第一相關數組;其中,所述每個第一相關數由一個第一隨機數與第一根隨機數計算得到;第一設備中間參數計算模塊,用于根據第一隨機數計算得到第一設備中間參數,并發送給第二設備;第二設備中間參數接收模塊,用于接收第二設備發送的第二設備中間參數,所述第二設備中間參數由第二設備隨機獲取的多個第二隨機數計算得到;服務器發送模塊,用于將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,將第一隨機數組第一部分和第一相關數組第二部分發送給第一服務器,將第一隨機數組第二部分和第一相關數組第一部分發送給第二服務器;第一服務器參數接收模塊,用于接收第一服務器發送的第一服務器參數,其中,所述第一服務器參數由第一服務器對第一隨機數組第一部分、第一相關數組第二部分進行計算得到;第二服務器參數接收模塊,用于接收第二服務器發送的第二服務器參數,其中,所述第二服務器參數由第二服務器對第一隨機數組第二部分和第一相關數組第一部分進行計算得到;設備安全多方計算協議執行模塊,用于通過第一服務器和第二服務器根據第一相關數及第二設備中間參數執行安全多方計算協議進行模指數運算得到第一設備參數,并發送到第二設備;第二設備參數接收模塊,用于接收第二設備發送的第二設備參數,其中,所述第二設備參數由第二設備通過第一服務器和第二服務器根據第二相關數及第一設備中間參數執行安全多方計算協議進行模指數運算得到,所述第二相關數由第二設備根據第二隨機數與第二根隨機數計算得到,所述第二根隨機數由第二設備隨機選擇;密鑰生成模塊,用于采用第一服務器參數、第二服務器參數、第一設備參數及第二設備參數生成密鑰。
5.一種密鑰生成方法,其特征在于,包括接收由第一設備生成的第一隨機數組第一部分和第一相關數組第二部分;接收由第二設備生成的第二隨機數組第一部分和第二相關數第二部分組;對接收到的第一隨機數第一部分、第一相關數第二部分、第二隨機數第一部分和第二相關數第二部分進行計算得到第一服務器參數,并發送給第一設備和第二設備;與第一設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第一設備參數,所述第一設備參數與第一服務器參數用于第一設備生成密鑰;與第二設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第二設備參數,所述第二設備參數與第一服務器參數用于第二設備生成密鑰。
6.根據權利要求5所述的密鑰生成方法,其特征在于,具體包括選擇一個有限域Zp,其中,P是一個素數,從Zp中選擇一個生成元g ;接收由第一設備生成的第一隨機數組第一部分a i和第一相關數組第二部分α2’ ; 接收由第二設備生成的第二隨機數組第一部分β i和第二相關數組第二部分β2’ ; 計算第一服務器參數二gaM modPmKn'=g',-L modp,并把K1^K2/發送給第一設備和第二設備;與第一設備和第二服務器共同執行安全多方計算協議進行模指數運算,以生成兩個第一設備參數K21和K21,,其中,[21 =(#Γ mo卻,人V=mod P,其中,勵d/)和mod P為第一設備從第二設備接收的兩個第二設備中間參數,Ci2和α2’由第一設備根據 Ct2= a - a Pod(P-1)和 α 2’ = a - a / mod (ρ_1)計算得到,(^和 α / 為第一設備隨機選擇的第一隨機數,α為第一設備隨機選擇的第一根隨機數,α,αι,a / e [O, p-2]; 與第二設備和第二服務器共同執行安全多方計算協議進行模指數運算,以生成兩個第二設備參數K12和K12,,其中,[丨2 f2 mod/ ;2'=Wfmod/ ,其中,P咖#和 mod P為第二設備從第一設備接收的兩個第一設備中間參數,02和β2’由第二設備根據β 2 = β _β Pod(P-1)和β 2’ = β _β / mod(p-l)得到,P1和β /為第二設備隨機選擇的第二隨機數,β為第二設備隨機選擇的第二根隨機數,β/ e [O, p-2] 0
7.—種密鑰生成服務器,其特征在于,包括第一設備接收模塊、第二設備接收模塊、第一服務器參數生成模塊、協調第一設備安全多方計算協議執行模塊和協調第二設備安全多方計算協議執行模塊第一設備接收模塊,用于接收由第一設備生成的第一隨機數組第一部分和第一相關數組第二部分;第二設備接收模塊,用于接收由第二設備生成的第二隨機數組第一部分和第二相關數組第二部分;第一服務器參數生成模塊,用于對接收到的第一隨機數組第一部分、第一相關數組第二部分、第二隨機數組第一部分和第二相關數組第二部分進行計算得到第一服務器參數, 并發送給第一設備和第二設備;協調第一設備安全多方計算協議執行模塊,用于與第一設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第一設備參數,所述第一設備參數與第一服務器參數用于第一設備生成密鑰;協調第二設備安全多方計算協議執行模塊,用于與第二設備、第二服務器共同執行安全多方計算協議進行模指數運算,以生成第二設備參數,所述第二設備參數與第一服務器參數用于第二設備生成密鑰。
8.—種密鑰生成方法,其特征在于,包括第一設備獲取一個隨機數作為第一根隨機數,獲取多個隨機數作為第一隨機數,得到包括多個第一隨機數的第一隨機數組;計算多個第一相關數,得到包括多個第一相關數的第一相關數組,其中,所述每個第一相關數由一個第一隨機數與第一根隨機數計算得到;第二設備獲取一個隨機數作為第二根隨機數,獲取多個隨機數作為第二隨機數,得到包括多個第二隨機數的第二隨機數組;計算多個第二相關數,得到包括多個第二相關數的第二相關數組,其中,所述每個第二相關數由一個第二隨機數與第二根隨機數計算得到;第一設備將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,將第一隨機數組第一部分和第一相關數組第二部分發送給第一服務器,將第一隨機數組第二部分和第一相關數組第一部分發送給第二服務器;第二設備將第二隨機數組分為第二隨機數組第一部分和第二隨機數組第二部分,將第二相關數組分為第二相關數組第一部分和第二相關數組第二部分,將第二隨機數組第一部分和第二相關數組第二部分發送給第一服務器,將第二隨機數組第二部分和第二相關數組第一部分發送給第二服務器;第一服務器對接收到的第一隨機數組第一部分、第一相關數組第二部分、第二隨機數組第一部分和第二相關數組第二部分進行計算得到第一服務器參數,并發送給第一設備和第二設備;第二服務器對接收到的第一隨機數組第二部分、第一相關數組第一部分、第二隨機數組第二部分和第二相關數組第一部分進行計算得到第二服務器參數,并發送給第一設備和第二設備;第一設備通過第一服務器和第二服務器執行安全多方計算協議進行模指數運算得到第一設備參數,并發送給第二設備;第二設備通過第一服務器和第二服務器執行安全多方計算協議進行模指數運算得到第二設備參數,并發送給第一設備;第一設備和第二設備采用第一服務器參數、第二服務器參數、第一設備參數及第二設備參數的組合作為密鑰。
9.根據權利要求8所述的密鑰生成方法,其特征在于第一相關數組第一部分中的任意一個第一相關數,由第一根隨機數及第一隨機數組第一部分中的一個第一隨機數計算得到,第一相關數組第二部分中的任意一個第一相關數, 由第一根隨機數及第一隨機數組第二部分中的一個第一隨機數計算得到;第二相關數組第一部分中的任意一個第二相關數,由第二根隨機數及第二隨機數組第一部分中的一個第二隨機數計算得到,第二相關數組第二部分中的任意一個第二相關數, 由第二根隨機數及第二隨機數第二部分中的一個第二隨機數計算得到。
10.根據權利要求8所述的密鑰生成方法,其特征在于,具體包括初始化選擇一個有限域Zp,其中,P是一個素數,從Zp中選擇一個生成元g ;第一設備獲取一個隨機數α作為第一根隨機數,獲取兩個隨機數\和α /作為第一隨機數,得到包括\和α/的第一隨機數組,其中,a,Q1, a/ e
,計算兩個第一相關數%和α2’,得到包括02和α2’的第一相關數組,其中,Ct2= Ct-Ct1Inod(P-1), α 2 = α - a / mod (p_l),計算兩個第一設備中間參數f: mod /)和f mod μ,把mod μ 和mod ρ發給第二設備;第二設備獲取一個隨機數β作為第二根隨機數,獲取兩個隨機數^和β/作為第二隨機數,得到包括^和β/的第二隨機數組,其中,β,β/ e
,計算兩個第二相關數和β/,得到包括和@2’的第二相關數組其中,β - β jmocKp-l), β 2 = β _β / mod(p-l),計算兩個第二設備中間參數mod"和mod/ ,把mod p 和mod p發給第一設備;第一設備將第一隨機數組分為第一隨機數組第一部分和第一隨機數組第二部分,第一隨機數組第一部分為h,第一隨機數組第二部分為α/,將第一相關數組分為第一相關數組第一部分和第一相關數組第二部分,第一相關數組第一部分為α2,第一相關數組第二部分為α2’,將\和α2’發送給第一服務器,將%和α /發送給第二服務器;第二設備將第二隨機數組分為第二隨機數組第一部分和第二隨機數組第二部分,第二隨機數組第一部分為P1,第二隨機數組第二部分為β/,將第二相關數組分為第二相關數組第一部分和第二相關數組第二部分,第二相關數組第一部分為β2,第二相關數組第二部分為β2’,將^和β2’發送給第一服務器,將32和β/發送給第二服務器;第一服務器計算第一服務器參數A11 二 g· mod,第二服務器計算第二服務器參數尤J=廣丨1' mod和A2 = ^";/; mod/;,然后第一服務器將K11和K22’發送給第一設備和第二設備,第二服務器將Kn’和K22發送給第一設備和第二設備;第一設備、第一服務器和第二服務器共同執行安全多方計算協議進行模指數運算,得到兩個第一設備參數 K21 和 K21 ’,其中,[21 = (V: Γ: Hiodi ,K2]'=(g/rr modp ;第二設備、第一服務器和第二服務器共同執行安全多方計算協議進行模指數運算,得到兩個第二設備參數 K12 和 K12 ’,其中,[丨2 =(gei)Am0dp JCu'=(g^')A'modp;第一設備發送K21和K21 ’給第二設備,第二設備發送K12和K12’給第一設備;第一設備驗證如果 K11K12K21K22 = Kn’ K12’ K21 ’ K22’,則采用 K = K11K12K21K22 作為密鑰; 第二設備驗證如果 K11K12K21K22 = Kn’ K12’ K21 ’ K22’,則采用 K = K11K12K21K22 作為密鑰。
全文摘要
本發明涉及密鑰協商相關技術領域,特別是涉及一種密鑰生成方法、設備及服務器。該密鑰生成方法包括第一設備和第二設備分別選擇多個隨機數,計算多個相關數;發送一部分的隨機數和一部分的相關數到第一服務器,以及發送另一部分的隨機數和相關數到第二服務器;第一服務器和第二服務器分別根據接收到的隨機數和相關數進行計算得到服務器參數;第一設備、第二設備通過第一服務器和第二服務器執行安全多方計算協議進行模指數運算得到設備參數;第一設備和第二設備采用服務器參數和設備參數的組合作為密鑰。本發明的密鑰生成方法,使得兩個計算能力很弱的設備,在服務器不可信的情形下,也能借助服務器實現模指數的外包計算,得到一個共同的密鑰。
文檔編號H04L29/06GK103001957SQ201210489040
公開日2013年3月27日 申請日期2012年11月26日 優先權日2012年11月26日
發明者唐春明, 張永強, 劉 申請人:廣州大學, 廣東數字證書認證中心有限公司