專利名稱:p元域SM2橢圓曲線密鑰協商系統的制作方法
技術領域:
本發(fā)明涉及信息安全技術領域,特別是涉及一種P元域SM2橢圓曲線密鑰協商系統。
背景技術:
隨著通信技術和信息處理技術的發(fā)展,信息在傳輸過程中的安全性越來越受到關注,需要通過信息處理技術來保證信息在通信過程中不被竊聽、篡改和仿造。密碼技術能很好的解決這方面的要求。自從1976年Diffie和Hellmann提出公鑰密碼體制的概念以來,出現了 3類公認的安全有效的公鑰密碼系統,其依賴的數學問題分別為整數因數分解問題(IFP)、離散對數問題(DLP)和橢圓曲線離散對數問題(ECDLP),對應的算法依次是RSA算法、DSA數字簽名算法、橢圓曲線算法(ECC)。這三種問題均基于計算復雜性的NPC問題(Non-deterministic Polynomial Complete problem)來保證密鑰的安全性的。相對于另外兩種算法,ECC的安全性能更高、計算量更小,處理速度更快、在安全性相同的情況下所需要的密鑰尺寸更小、對帶寬的要求更低,因此,ECC體制具有更為廣闊的應用前景。SM2橢圓曲線公鑰密碼算法是國家密碼管理局發(fā)布的一種ECC算法,密鑰交換協議是其中的一項重要算法,它適用于商用密碼應用中的密鑰交換,可滿足通信雙方經過兩次或三次信息傳遞過程,計算獲取一個由雙方共同決定的共享的會話密鑰。但國家密碼管理局已公布的僅僅是SM2橢圓曲線公鑰密碼算法中密鑰交換協議的流程,目前尚未出現任何將其用硬件實現的硬件設備,難以將這種優(yōu)秀的算法付諸應用。
發(fā)明內容
本發(fā)明所要解決的技術問題是提供一種p元域SM2橢圓曲線密鑰協商系統,能用硬件來實現SM2橢圓曲線公鑰密碼算法中的密鑰交換協議。本發(fā)明解決上述技術問題的技術方案如下一種p元域SM2橢圓曲線密鑰協商系統,所述橢圓曲線具有基G和余因子h,G的階為n ;發(fā)起方雜湊值和響應方雜湊值分別為ZA和ZB ;發(fā)起方公鑰和發(fā)起方私鑰分別為PA和dA,響應方公鑰和響應方私鑰分別為PB和dB ;發(fā)起方和響應方約定的會話密鑰的長度為klen ;該系統包括發(fā)起方子系統和響應方子系統;所述發(fā)起方子系統包括發(fā)起方控制中心、發(fā)起方隨機數生成模塊、發(fā)起方倍點運算模塊、發(fā)起方點加模塊、發(fā)起方密鑰派生模塊;所述響應方子系統包括響應方控制中心、響應方隨機數生成模塊、響應方倍點運算模塊、響應方點加模塊、響應方密鑰派生模塊;其中,所述發(fā)起方控制中心用于,將rA和G作為一組倍點運算數據發(fā)送到所述發(fā)起方倍點運算模塊;將RA發(fā)送到所述響應方控制中心;根據xlO = 2w+[xl&(2w-l)]和x20 =2w+[x2&(2W-1)]分別計算得到xlO和x20 ;計算xlO和rA的標量乘積xlO rA,根據tA =(dA+xlO rA)modn計算得到tA ;判斷RB是否為所述橢圓曲線上的點;將x20和RB作為一組倍點運算數據發(fā)送到所述發(fā)起方倍點運算模塊;計算h和tA的標量乘積h -tA ;將PB和[x20]RB作為一組點加運算數據發(fā)送到所述發(fā)起方點加模塊;將h tA和(PB+[x20]RB)作為一組倍點運算數據發(fā)送到所述發(fā)起方倍點運算模塊;判斷U是否為無窮遠點;將xU、yU、ZA和ZB拼接成的比特串Z發(fā)送到所述發(fā)起方密鑰派生模塊;將發(fā)起方密鑰派生模塊返回的比特串KA作為發(fā)起方會話密鑰輸出;在判斷出RB不為所述橢圓曲線上的點、U為無窮遠點的情況之一時,輸出協商失敗的消息;所述發(fā)起方隨機數生成模塊用于,將生成的I與(n-1)之間的隨機數rA發(fā)送到所述發(fā)起方控制中心;所述發(fā)起方倍點運算模塊用于,對G進行rA倍點運算,得到坐標為(xl,yl)的點RA,并將RA發(fā)送到所述發(fā)起方控制中心;對RB進行x20倍點運算,將得到的[x20]RB發(fā)送到所述發(fā)起方控制中心;對(PB+[x20]RB)進行h tA倍點運算,將得到的點U發(fā)送到所述發(fā)起方控制中心,所述點U的坐標為(xU, yU);所述發(fā)起方點加模塊用于,對PB和[x20]RB進行點加運算,將生成的(PB+[x20]RB)發(fā)送到所述發(fā)起方控制中心;所述發(fā)起方密鑰派生模塊用于,對比特串Z進行密鑰派生運算,將得到的長度為klen的比特串KA發(fā)送到所述發(fā)起方控制中心;所述響應方控制中心用于,將rB和G作為一組倍點運算數據發(fā)送到所述響應方倍點運算模塊;根據xlO = 2Mxl&(2w_l)]和x20 = 2Mx2&(2w-l)]分別計算得到xlO和x20 ;計算x20和rB的標量乘積x20 *rB,根據tB = (dB+x20 *rB)modn計算tB ;判斷RA是否為所述橢圓曲線上的點;將xlO和RA作為一組倍點運算數據發(fā)送到所述響應方倍點運算模塊;計算h和tB的標量乘積h *tB ;將PA和[xlO] RA作為一組點加運算數據發(fā)送到所述響應方點加模塊和(PA+[xlO]RA)作為一組倍點運算數據發(fā)送到所述響應方倍點運算模塊;判斷V是否為無窮遠點;將xV.yV.ZA和ZB拼接成的比特串V發(fā)送到所述響應方密鑰派生模塊;將響應方密鑰派生模塊返回的比特串KB作為響應方會話密鑰輸出;將1 發(fā)送到所述發(fā)起方控制中心;在判斷出RA不為所述橢圓曲線上的點、V為無窮遠點的情況之一時,輸出協商失敗的消息;
所述響應方隨機數生成模塊用于,將生成的I與(n-1)之間的隨機數rB發(fā)送到所述響應方控制中心;所述響應方倍點運算模塊用于,對G進行rB倍點運算,得到坐標為(x2,y2)的點RB,并將RB發(fā)送到所述響應方控制中心;對RA進行xlO倍點運算,將得到的[xlO]RA發(fā)送到所述響應方控制中心;對(PA+[xlO]RA)進行h tB倍點運算,將得到的點V發(fā)送到所述響應方控制中心,所述點V的坐標為(xV,yV);所述響應方點加模塊用于,對PA和[xlO]RA進行點加運算,將生成的(PA+[xlO]RA)發(fā)送到所述響應方控制中心;所述響應方密鑰派生模塊用于,對比特串V進行密鑰派生運算,將得到的長度為klen的比特串KB發(fā)送到所述響應方控制中心;其中,w為參數,&為按比特邏輯與運算符,mod為求模運算符。本發(fā)明的有益效果是由于發(fā)起方控制中心和響應方控制中心可分別安排相應的隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊的工作時序,使發(fā)起方隨機數生成模塊和響應方隨機數生成模塊各自隨機生成I與(n-1)之間的隨機數rA和rB,使發(fā)起方倍點運算模塊和響應方倍點運算模塊分別進行標量數值與點之間的倍點運算,使發(fā)起方點加模塊和響應方點加模塊分別進行兩個點的點加運算,使發(fā)起方密鑰派生模塊和響應方密鑰派生模塊分別對比特串進行密鑰派生運算,同時,發(fā)起方控制中心和響應方控制中心分別進行協商成功與否的判斷,從而實現發(fā)起方與響應方之間的密鑰協商,在雙方協商成功時,發(fā)起方和響應方分別通過發(fā)起方密鑰派生模塊和響應方密鑰派生模塊運算得到同一個會話密鑰,從而進行通信的加密和解密,在協商不成功時,輸出協商失敗的信息。因此,本發(fā)明能利用發(fā)起方控制中心、發(fā)起方隨機數生成模塊、發(fā)起方倍點運算模塊、發(fā)起方點加模塊、發(fā)起方密鑰派生模塊組成的發(fā)起方子系統和響應方控制中心、響應方隨機數生成模塊、響應方倍點運算模塊、響應方點加模塊、響應方密鑰派生模塊組成的響應方子系統,用硬件來實現SM2橢圓曲線公鑰密碼算法中的密鑰交換協議。
圖I為國家密碼管理局發(fā)布的SM2橢圓曲線公鑰密碼算法中的密鑰交換協議的流程圖;圖2為本發(fā)明提供的p元域SM2橢圓曲線密鑰協商系統的結構圖;圖3為本發(fā)明提供的發(fā)起方控制中心和響應方控制中心實現標量乘運算功能的硬件結構圖;圖4為本發(fā)明提供的倍點運算模塊的結構圖;圖5為本發(fā)明提供的點加模塊的結構圖;圖6為本發(fā)明提供的密鑰派生模塊的結構圖;圖7為本發(fā)明一個具體實施例的結構圖;圖8為本發(fā)明另一個具體實施例的結構圖。
具體實施例方式以下結合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。圖I為國家密碼管理局發(fā)布的SM2橢圓曲線公鑰密碼算法中的密鑰交換協議的流程圖。在密鑰交換協議所涉及的相互通信的兩個用戶中,發(fā)送首輪交換信息的用戶稱為發(fā)起方,另一用戶則稱為響應方,這兩方均有公私密鑰對。本發(fā)明中,發(fā)起方用符號A來表示,響應方用符號B來表示,因而發(fā)起方公鑰和發(fā)起方私鑰分別用PA和dA表示,響應方公鑰和響應方私鑰分別用PB和dB來表示。如圖I所示,該流程中,步驟A-101至步驟A-107均由發(fā)起方A來執(zhí)行,步驟B-101至步驟B-106均由響應方B來執(zhí)行,并且在條件滿足的情況下,發(fā)起方A和響應方B均可執(zhí)行步驟108。如圖I所示,步驟A-101至步驟A-107如下步驟A-101 :確認發(fā)起方A的已知數據橢圓曲線的基G及G的階n、余因子h、發(fā)起方雜湊值ZA、響應方雜湊值ZB、發(fā)起方公鑰PA和發(fā)起方私鑰dA、響應方公鑰PB、雙方約定的會話密鑰長度klen、參數W= I I (I Ilog2nI |/2) | -I。本步驟是一個確認已知數據的步驟,后續(xù)的步驟A-102至步驟A-107均是在本步驟確定的這些已知數據的基礎上進行運算的。
本發(fā)明中所述的橢圓曲線均為p元有限域中的橢圓曲線。p元有限域中,橢圓曲線的方程為I2 = x3+ax+b,這里的p為大于3的素數,a和b均為p元域中的數值,且滿足(4a3+27b2)mod p不為0, mod為求模運算符。本發(fā)明中所述的橢圓曲線具有基,記為G,G為該橢圓曲線上的一個點,該點的坐標為(xG,yG),并且G具有階n。另外,橢圓曲線還具有一個參數,稱為余因子,本發(fā)明中用h表不。發(fā)起方雜湊值ZA是將拼接A的可辨別標識、橢圓曲線方程中的參數a、b、xG、yG、PA的橫坐標xA和縱坐標yA后得到的比特串進行密碼雜湊運算所得到的雜湊值,同樣,響應方雜湊值ZB是將拼接B的可辨別標識、a、b、xG、yG、PB的橫坐標xB、yB后得到的比特串進行密碼雜湊運算所得到的雜湊值。這里的拼接運算指的是將一個比特串連接到前一比特串的最末位比特之后,密碼雜湊運算則是一種將任意長度的比特串映射為固定長度比特串的
運算,其輸出值稱為雜湊值。密碼雜湊運算具有運算不可逆性和輸入輸出--對應性,因而·
利用密碼雜湊運算獲得的雜湊值不會泄露其輸入值的信息。在密鑰交換協議執(zhí)行之前,A和B需要約定共享的會話密鑰的長度,本發(fā)明用klen表不該長度。在確定參數w時用到的I |X I I運算,是確定大于或等于X的最小整數的運算,例如,I |7.2| I = 8,I 8 I = 9。因此,I Ilog2nI I即為大于或等于log2n的最小整數,
I (I Ilog2nI |/2) I I即為大于或等于(I Ilog2nI |/2)的最小整數。步驟A-102 :產生I與(n-1)之間的隨機數rA,根據RA = [rA]G = (xl, yl)得到RA,并將RA發(fā)送到響應方。本步驟中的隨機數rA為正整數,且不能超過(n-1)。計算公式RA = [rA]G = (xl, yl)中的G為橢圓曲線的基,rA為隨機數,[rA]G運算為對G進行rA倍點運算,運算結果RA也為一個點,其坐標為(xl, yl)。步驟A-103 :根據tA = (dA+xlO *rA)modn計算得到tA,其中的參數xlO根據公式xlO = 2w+[xl&(2w-l)]計算得到。本步驟中,xlO *rA的運算為p元有限域中的標量乘運算。xlO = 2w+[xl&(2w_l)]中的&為按比特邏輯與運算符。步驟A-104 :接收步驟B-106發(fā)送的RB,并判斷RB的坐標是否滿足本發(fā)明中的橢圓曲線方程,即RB是否為橢圓曲線上的點,是則執(zhí)行步驟A-105,否則,執(zhí)行步驟108。本步驟主要是一個判斷步驟,在步驟B-106的基礎上執(zhí)行。步驟A-105 :根據 U = [h tA] (PB+[x20]RB) = (xU, yU)計算 U,其中的 x20 根據公式 x20 = 2w+[x2& (2W-1)]計算得到。本步驟中的h -tA為標量乘運算,得到一個p元有限域中的數值;[x20]RB為對RB進行x20倍點運算,得到的結果與PB再進行p元有限域中的點加運算,運算結果仍為一個點,這樣,[h tA] (PB+[x20]RB)就是對點(PB+[x20]RB)進行h tA倍點運算,運算結果U為橢圓曲線上的一個新的點,其坐標為(xU,yU)。步驟A-106 :判斷步驟A-105所得到的U是否為無窮遠點,是則執(zhí)行步驟108,否則執(zhí)行步驟A-107。這里所說的無窮遠點為p元有限域橢圓曲線上的一個特殊點,步驟A-105進行的運算為倍點運算,其運算結果有可能為無窮遠點,而密鑰交換協議在協商成功后A在計算會話密鑰時要用到點U的坐標,這里參與計算的點U不能是無窮遠點,因而需要在本步驟判斷U是否為無窮遠點。步驟A-107 :協商成功,根據KA = KDF (xU-yU-ZA-ZB,klen)計算會話密鑰KA。本步驟中的協商成功有兩層含義,其一是實現了從B到A的密鑰確認,即實現了 A確信B擁有會話密鑰的保證;另外,由于由于本步驟是在步驟A-104接收B在步驟B-106發(fā)出的RB的基礎上執(zhí)行的,而步驟B-106判斷從A到B協商成功,即實現了從A到B的密鑰確認,B確信A擁有會話密鑰的保證,這樣,本步驟中的協商成功就有了另一層含義,即AB雙方均確信對方擁有了會話密鑰,即密鑰交換協議所要進行的AB雙方的協商完全成功,A只需計算得到會話密鑰即可結束協商過程。 這里根據KA = KDF(xU-yU-ZA-ZB,klen)計算得到的KA即為本發(fā)明中A和B所要共享的會話密鑰,從數學的角度來看,整個密鑰交換協議到本步驟后,由本步驟計算得到的KA與步驟B-106計算得到的KB是相同的,因而AB雙方可用同一個會話密鑰對向對方發(fā)送的數據進行加密,并對對方發(fā)來的加密數據進行解密。這里的xU-yU-ZA-ZB為由U的橫坐標xU、縱坐標yU、發(fā)起方雜湊值ZA和響應方雜湊值ZB拼接而成的比特串,KDF(xU-yU-ZA-ZB, klen)運算是對比特串xU-yU-ZA-ZB進行密鑰派生運算,生成長度為klen的比特串,其中的KDF為密鑰派生函數的標識,如果用比特串Z來表示比特串xU-yU-ZA-ZB,設置一個32比特的計數變量ct,并設在該密鑰派生運算中所進行的密碼雜湊運算生成的雜湊值的長度均為V比特,則該密鑰派生運算的運算規(guī)則為(a)置ct的初始值為用16進制表示的00000001 ;(b)確定出大于或等于(klen/v)的最小整數I | klen/v | I,在循環(huán)變量i從I增加到I I klen/v I I的過程中,循環(huán)執(zhí)行bl和b2步驟(bl)根據Hai = Hv(Z_ct)得到Hai ;其中,Hv(Z_ct)是對Z與ct拼接而成的比特串進行密碼雜湊運算,生成的雜湊值的長度為V比特;(b2) ct 遞增 16 進制的 00000001 ;(c)如果(klen/v)為整數,則直 Ha ! |kien/v| = Ha| |kien/v| ;否則,則將 Ha ! Ikien/v|置為比特串Hallkwvll中從最高比特位起的(故w-vxp/ew/v」)比特,其中的L々/e /v」為小于或等于(klen/v)的最小整數;(d)進行拼接運算 KA = Ha1-Ha2-. . . -Ha(丨 |kWv| M)_Ha !丨 |klen/v| +,得到會話密鑰 KA。由此,從步驟(a)至步驟(d),可通過密鑰派生運算得到會話密鑰KA,可以看出,該密鑰派生運算過程中,除了比特串拼接運算外,最核心的運算為循環(huán)進行密碼雜湊運算。步驟(c)的目的在于,確定步驟(d)中用于拼接成KA的最后一個比特串Ha !丨lklen/vl丨,使KA的長度符合AB預先約定的長度klen。步驟B-101至步驟B-106如下步驟B-101 :確認響應方B的已知數據橢圓曲線的基G及G的階n、余因子h、發(fā)起方雜湊值ZA、響應方雜湊值ZB、響應方公鑰PB和響應方私鑰dB、發(fā)起方公鑰PA、雙方約定的會話密鑰長度klen、參數W= I I (I Ilog 2n| |/2) | |_1。本步驟與步驟A-101相似,也是一個確認已知數據的步驟,后續(xù)的步驟B-102至步驟B-106均是在本步驟確定的這些已知數據的基礎上進行運算的。
步驟B-102 :產生I與(n-1)之間的隨機數rB,根據RB = [rB]G = (x2, y2)得到RB,根據 tB = (dB+x20 *rB)modn 得到 tB,其中的參數 x20 根據公式 x20 = 2w+[x2&(2w_l)]計算得到。與步驟A-1 02相似,本步驟中的[rB]G也是對G進行的倍點運算,區(qū)別在于倍點次數不同,這里進行的是rB倍點運算,運算結果RB也為一個點,其坐標為(x2,y2)。與步驟A-103相似,本步驟中的x20 rB也為p元有限域中的標量乘運算。步驟B-103 :接收A發(fā)送的RA,并判斷RA的坐標是否滿足橢圓曲線方程,是則執(zhí)行步驟B-104,否則執(zhí)行步驟108。本步驟所接收的RA是A通過步驟A-102計算得到的一個點的坐標。步驟B-104 :根據 V = [h tB] (PA+[xlO]RA) = (xV, yV)計算得到 V,其中的 xlO可通過公式xlO = 2w+[xl&(2w-l)]計算得到。與步驟A-105相似,本步驟中的h -tB為標量乘運算,得到一個p元有限域中的數值;[xlO]RA為對RA進行xlO倍點運算,得到的結果與PA再進行p元有限域中的點加運算,運算結果仍為一個點,這樣,[h tB] (PA+[xlO]RA)就是對點(PA+[xlO]RA)進行h tB倍點運算,運算結果V為橢圓曲線上的一個新的點,其坐標為(xV,yV)。步驟B-105 :判斷步驟B-104得到的V是否為無窮遠點,是則執(zhí)行步驟108,否則執(zhí)行步驟B-106。步驟B-106 :從A到B的協商成功,根據KB = KDF (xV-yV-ZA-ZB, klen)計算得到KB,并將RB發(fā)送到A。本步驟中,從A到B的協商成功,意味著實現了從A到B的密鑰確認,即B確信A擁有會話密鑰的保證,因而可以計算得到KB來作為會話密鑰,并結束響應方的協商過程,密鑰交換協議剩余的工作轉移到步驟A-104,由發(fā)起方A來執(zhí)行,如果A判斷協商也成功,則本密鑰交換協議的協商過程就會完全成功,并在步驟A-107中計算得到發(fā)起方的會話密鑰KA,從數學的角度講,步驟A-107得到的KA和本步驟得到的KB是相等的,即發(fā)起方A和響應方B在此后的通信過程中,將使用相同的會話密鑰來對信息加密和解密。另外,步驟108為協商失敗。這里,無論是A執(zhí)行步驟A-101至步驟A-107的過程中執(zhí)行本步驟,還是B在執(zhí)行步驟B-101至步驟B-106的過程中執(zhí)行本步驟,均為整個密鑰交換協議的協商過程失敗,則AB雙方需要重新開啟協商過程才能獲得雙方共享的會話密鑰。圖2為本發(fā)明提供的p元域SM2橢圓曲線密鑰協商系統的結構圖。本發(fā)明中所述的橢圓曲線具有基G和余因子h,并且G的階為n ;發(fā)起方雜湊值和響應方雜湊值分別為ZA和ZB ;發(fā)起方公鑰和發(fā)起方私鑰分別為PA和dA,響應方公鑰和響應方私鑰分別為PB和dB ;發(fā)起方和響應方約定的會話密鑰的長度為klen。該密鑰協商系統用于從硬件上實現p元域SM2橢圓曲線公鑰密碼算法中的密鑰交換協議,如果發(fā)起方和響應方協商成功,則二者分別生成相同的會話密鑰,該會話密鑰的長度即為約定長度klen。如圖2所不,該系統包括發(fā)起方子系統212和響應方子系統213 ;發(fā)起方子系統212包括發(fā)起方控制中心201、發(fā)起方隨機數生成模塊202、發(fā)起方倍點運算模塊205、發(fā)起方點加模塊204、發(fā)起方密鑰派生模塊203 ;響應方子系統213包括響應方控制中心206、響應方隨機數生成模塊207、響應方倍點運算模塊208、響應方點加模塊209、響應方密鑰派生模塊210;可見,發(fā)起方子系統和響應方子系統中的各模塊是相互對應的,可用同樣的硬件來實現。該系統中,發(fā)起方控制中心201用于,將rA和G作為一組倍點運算數據發(fā)送到發(fā)起方倍點運算模塊205 ;將RA發(fā)送到響應方控制中心206 ;根據xlO = 2w+[xl&(2w_l)]和x20 =2w+[x2&(2W-1)]分別計算得到xlO和x20 ;計算xlO和rA的標量乘積xlO rA,根據tA =(dA+xlO rA)modn計算得到tA ;判斷RB是否為橢圓曲線上的點;將x20和RB作為一組倍點運算數據發(fā)送到發(fā)起方倍點運算模塊205 ;計算h和tA的標量乘積h -tA ;將PB和[x20]RB作為一組點加運算數據發(fā)送到發(fā)起方點加模塊204和(PB+[x20]RB)作為一組倍點運算數據發(fā)送到發(fā)起方倍點運算模塊205 ;判斷U是否為無窮遠點;將xU、yU、ZA和ZB拼接成的比特串Z發(fā)送到發(fā)起方密鑰派生模塊203 ;將發(fā)起方密鑰派生模塊203返回的比特串KA作為發(fā)起方會話密鑰輸出;在判斷出RB不為橢圓曲線上的點、U為無窮遠點的情況之一時,輸出協商失敗的消息;發(fā)起方隨機數生成模塊202用于,將生成的I與(n-1)之間的隨機數rA發(fā)送到發(fā) 起方控制中心201 ;發(fā)起方倍點運算模塊205用于,對G進行rA倍點運算,得到坐標為(xl,yl)的點RA,并將RA發(fā)送到發(fā)起方控制中心201 ;對RB進行x20倍點運算,將得到的[x20]RB發(fā)送到發(fā)起方控制中心201 ;對(PB+[x20]RB)進行h tA倍點運算,將得到的點U發(fā)送到發(fā)起方控制中心201,點U的坐標為(xU, yU);發(fā)起方點加模塊204用于,對PB和[x20]RB進行點加運算,將生成的(PB+[x20]RB)發(fā)送到發(fā)起方控制中心201 ;發(fā)起方密鑰派生模塊203用于,對比特串Z進行密鑰派生運算,將得到的長度為klen的比特串KA發(fā)送到發(fā)起方控制中心201 ;響應方控制中心206用于,將rB和G作為一組倍點運算數據發(fā)送到響應方倍點運算模塊 208 ;根據 xlO = 2w+[xl&(2w-l)]和 x20 = 2w+[x2&(2w_l)]分別計算得到 xlO 和 x20 ;計算x20和rB的標量乘積x20 *rB,根據tB = (dB+x20 *rB)modn計算tB ;判斷RA是否為橢圓曲線上的點;將xlO和RA作為一組倍點運算數據發(fā)送到響應方倍點運算模塊208 ;計算h和tB的標量乘積h *tB ;將PA和[xlO] RA作為一組點加運算數據發(fā)送到響應方點加模塊209 ;將h -tB和(PA+[xl0]RA)作為一組倍點運算數據發(fā)送到響應方倍點運算模塊208 ;判斷V是否為無窮遠點;將xV、yV、ZA和ZB拼接成的比特串V發(fā)送到響應方密鑰派生模塊210 ;將響應方密鑰派生模塊210返回的比特串KB作為響應方會話密鑰輸出;將RB發(fā)送到發(fā)起方控制中心201 ;在判斷出RA不為橢圓曲線上的點、V為無窮遠點的情況之一時,輸出協商失敗的消息;響應方隨機數生成模塊207用于,將生成的I與(n-1)之間的隨機數rB發(fā)送到響應方控制中心206 ;響應方倍點運算模塊208用于,對G進行rB倍點運算,得到坐標為(x2,y2)的點RB,并將RB發(fā)送到響應方控制中心206 ;對RA進行xlO倍點運算,將得到的[xl0]RA發(fā)送到響應方控制中心206 ;對(PA+[xl0]RA)進行h tB倍點運算,將得到的點V發(fā)送到響應方控制中心206,點V的坐標為(xV,yV);響應方點加模塊209用于,對PA和[xl0]RA進行點加運算,將生成的(PA+[xl0]RA)發(fā)送到響應方控制中心206 ;響應方密鑰派生模塊210用于,對比特串V進行密鑰派生運算,將得到的長度為klen的比特串KB發(fā)送到響應方控制中心206 ;其中,w為參數,&為按比特邏輯與運算符,mod為求模運算符。需要指出的是,本發(fā)明中對點進行的運算,均指的是對該點的坐標進行的運算,例如,點加運算是對兩個點的坐標進行的運算,倍點運算是對一個標量與一個點的坐標進行的運算。因此,本發(fā)明中所提到的各模塊或子模塊發(fā)送或接收點,指的就是發(fā)送或接收該點的坐標。本發(fā)明中的發(fā)起方控制中心和響應方控制中心均為各自所在子系統的控制中心,負責安排所在子系統內各模塊的工作時序,并將數據在各模塊間傳遞、運算,將數據發(fā)送給另一子系統中的控制中心,最重要的,這兩個控制中心負責判斷協商成功與否,如發(fā)起方控 制中心可判斷RB是否為橢圓曲線上的點,如果判斷結果為否,則輸出協商失敗的消息,這說明發(fā)起方與響應方的協商失敗。再例如,響應方控制中心負責判斷V是否為無窮遠點,如果是,則輸出協商失敗的消息,這也說明發(fā)起方與響應方的協商失敗。與圖I發(fā)布的流程圖相對應,其步驟A-101至步驟A-107由發(fā)起方子系統來實現,步驟B-101至步驟B-106由響應方子系統來實現,而步驟108則由雙方共同實現。其中,步驟A-101和步驟B-101由相應子系統中的控制中心來實現,即將這兩個步驟中的各已知數據輸入或存儲在相應子系統中的控制中心,并由該控制中心發(fā)送給相應的模塊,以便在計算中使用;步驟A-101中產生I與(n-1)之間的隨機數rA的步驟由發(fā)起方隨機數生成模塊實現,根據RA = [rA]G = (xl, yl)得到RA的步驟由發(fā)起方倍點運算模塊實現,將RA發(fā)送到響應方的步驟以及步驟A-103、A-104和A-106由發(fā)起方控制中心實現;步驟A-105中h與tA之間的標量乘運算由發(fā)起方控制中心實現,x20與RB之間、以及h tA與(PB+[x20]RB)之間的倍點運算由發(fā)起方倍點運算模塊實現,PB與[x20]RB之間的點加運算由發(fā)起方點加模塊來實現;步驟A-107中判斷協商成功的步驟由發(fā)起方控制中心實現,根據KA =KDF(xU-yU-ZA-ZB, klen)計算會話密鑰KA的步驟由發(fā)起方密鑰派生模塊來實現。與發(fā)起方子系統的各模塊相對應,響應方子系統中的各模塊也能實現步驟B-101至步驟B-106,具體為步驟B-102中產生I與(n-1)之間的隨機數rB的步驟由響應方隨機數生成模塊來實現,根據RB = [rB]G = (x2, y2)得到RB的步驟由響應方倍點運算模塊來實現,根據tB=(dB+x20 *rB)modn得到tB以及根據公式x20 = 2w+[x2&(2w_l)]計算x20的步驟和步驟B-103由響應方控制中心來實現;步驟B-104中,h與tB之間的標量乘運算由響應方控制中心實現,xlO與RA之間以及h tB與(PA+[xlO]RA)之間的倍點運算由響應方倍點運算模塊實現,PA與[xlO]RA之間的點加運算由響應方點加模塊來實現,步驟B-105和B-106中判斷從A到B的協商成功的步驟和將RB發(fā)送到發(fā)起方A的步驟由響應方控制中心實現,根據KB = KDF(xV-yV-ZA-ZB, klen)計算得到KB的步驟由響應方密鑰派生模塊實現。根據判斷的情況,步驟108由發(fā)起方控制中心或響應方控制中心來實現。由此可見,由于發(fā)起方控制中心和響應方控制中心可分別安排相應的隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊的工作時序,使發(fā)起方隨機數生成模塊和響應方隨機數生成模塊各自隨機生成I與(n-1)之間的隨機數rA和rB,使發(fā)起方倍點運算模塊和響應方倍點運算模塊分別進行標量數值與點之間的倍點運算,使發(fā)起方點加模塊和響應方點加模塊分別進行兩個點的點加運算,使發(fā)起方密鑰派生模塊和響應方密鑰派生模塊分別對比特串進行密鑰派生運算,同時,發(fā)起方控制中心和響應方控制中心分別進行協商成功與否的判斷,從而實現發(fā)起方與響應方之間的密鑰協商,在雙方協商成功時,發(fā)起方和響應方分別通過發(fā)起方密鑰派生模塊和響應方密鑰派生模塊運算得到同一個會話密鑰,從而進行通信的加密和解密,在協商不成功時,輸出協商失敗的信息。因此,本發(fā)明能利用發(fā)起方控制中心、發(fā)起方隨機數生成模塊、發(fā)起方倍點運算模塊、發(fā)起方點加模塊、發(fā)起方密鑰派生模塊組成的發(fā)起方子系統和響應方控制中心、響應方隨機數生成模塊、響應方倍點運算模塊、響應方點加模塊、響應方密鑰派生模塊組成的響應方子系統,用硬件來實現SM2橢圓曲線公鑰密碼算法中的密鑰交換協議。由于本發(fā)明能夠利用硬件來實現SM2橢圓曲線公鑰密碼算法中的密鑰交換協議,相對于該密鑰交換協議的軟件實現,本發(fā)明的運算速度更快,安全性也更高。如圖2所示,該系統進一步包括w生成模塊211,用于根據詠=II (II log" 11/2) Il -I計算得到參數w,并將其分別發(fā)送到發(fā)起方控制中心201和響應方控制中心206。 本發(fā)明中的發(fā)起方控制中心和響應方控制中心均具有標量乘運算功能,該功能可以通過相同的硬件結構來實現。圖3為本發(fā)明提供的發(fā)起方控制中心和響應方控制中心實現標量乘運算功能的硬件結構圖,該硬件結構包含于發(fā)起方控制中心和響應方控制中心內部。如圖3所示,該硬件結構包括控制子模塊301、域轉換子模塊302、蒙哥馬利域乘法子模塊303 ;其中,控制子模塊301用于,將需要進行標量乘運算的m和j 二者在有限域的值發(fā)送到域轉換子模塊302 ;將m和j各自在蒙哥馬利域的值發(fā)送到蒙哥馬利域乘法子模塊303 ;將I與蒙哥馬利域乘法子模塊303返回的mj發(fā)送到蒙哥馬利域乘法子模塊303 ;域轉換子模塊302用于,將m和j 二者在有限域的值分別轉換為各自在蒙哥馬利域的值返回控制子模塊301;蒙哥馬利域乘法子模塊303用于,對m和j各自在蒙哥馬利域的值進行蒙哥馬利域乘法運算,將得到的乘積mj返回控制子模塊301 與I進行蒙哥馬利域乘法運算,得到m和j在有限域的值的標量乘積;將m和j在有限域的值的標量乘積返回控制子模塊301。這里所涉及的m和j是進行標量乘運算的兩個標量,其可以代表通過圖2中發(fā)起方控制中心201進行標量乘運算的xlO和rA,或h和tA,也可以代表通過響應方控制中心206進行標量乘運算的x20和rB,或h和tB。本發(fā)明中,發(fā)起方控制中心和響應方控制中心將標量乘運算的兩個數據由有限域轉換到蒙哥馬利域中進行,可以大大降低運算難度,提高運算效率,有利于進一步提高密鑰交換協議的運算速度。當然,圖3中的控制子模塊還可以作為發(fā)起方控制中心或響應方控制中心中的控制核心,完成其所在的控制中心的其他控制、運算、判斷功能。例如,發(fā)起方控制中心里的控制子模塊除了具有圖3所述的標量乘運算的控制功能之外,還可以用于將rA和G作為一組倍點運算數據發(fā)送到發(fā)起方倍點運算模塊;將RA發(fā)送到響應方控制中心里的控制子模塊;根據 xlO = 2w+[xl&(2w-l)]和 x20 = 2w+[x2&(2W-1)]分別計算得到 xlO 和 x20 ;根據tA = (dA+xlO *rA)modn計算得到tA ;判斷RB是否為橢圓曲線上的點;將x20和RB作為一組倍點運算數據發(fā)送到發(fā)起方倍點運算模塊^fPB和[x20] RB作為一組點加運算數據發(fā)送到發(fā)起方點加模塊和(PB+[x20]RB)作為一組倍點運算數據發(fā)送到發(fā)起方倍點運算模塊;判斷U是否為無窮遠點;將xU、yU、ZA和ZB拼接成的比特串Z發(fā)送到發(fā)起方密鑰派生模塊;將發(fā)起方密鑰派生模塊返回的比特串KA作為發(fā)起方會話密鑰輸出;在判斷出RB不為橢圓曲線上的點、U為無窮遠點的情況之一時,輸出協商失敗的消息。再如,響應方控制中心里的控制子模塊除了具有圖3所述的標量乘運算的控制功能外,還可以用于將rB和G作為一組倍點運算數據發(fā)送到響應方倍點運算模塊;根據xlO = 2W+[X1&(2W-1)]和x20 =2w+[x2&(2w-l)]分別計算得到 xlO 和 x20 ;根據 tB = (dB+x20 rB)modn 計算 tB ;判斷 RA是否為橢圓曲線上的點;將xlO和RA作為一組倍點運算數據發(fā)送到響應方倍點運算模塊;將PA和[xlO]RA作為一組點加運算數據發(fā)送到響應方點加模塊;將11 *tB和(PA+[xlO]RA)作為一組倍點運算數據發(fā)送到響應方倍點運算模塊;判斷V是否為無窮遠點;將xV、yV、ZA和ZB拼接成的比特串V發(fā)送到響應方密鑰派生模塊;將響應方密鑰派生模塊返回的比特串KB作為響應方會話密鑰輸出;將RB發(fā)送到發(fā)起方控制中心里的控制子模塊;在判斷出RA不為橢圓曲線上的點、V為無窮遠點的情況之一時,輸出協商失敗的消息。
本發(fā)明中,發(fā)起方倍點運算模塊和響應方倍點運算模塊均為進行倍點運算的模塊,其進行的倍點運算是相同的,因而可以用相同的硬件機構來實現,該硬件機構可以稱之為倍點運算模塊。圖4為本發(fā)明提供的倍點運算模塊的結構圖,該倍點運算模塊可以用作發(fā)起方倍點運算模塊,也可以用作響應方倍點運算模塊。如圖4所示,該倍點運算模塊包括倍點運算控制子模塊401、射影系二倍點運算子模塊404、域轉換子模塊403、蒙哥馬利域乘法子模塊405、有限域求逆子模塊402、射影系點加子模塊406 ;其中,倍點運算控制子模塊401用于,接收由數值f和點C組成的一組倍點運算數據,將C在仿射坐標系下的坐標(xc,yc)轉換為C在射影坐標系下的坐標(xc2,yc2,l),并將xc2、yc2、l發(fā)送到域轉換子模塊403 ;將(xc3, yc3, zc3)發(fā)送到射影系點加子模塊406,并將其作為[f]C在蒙哥馬利域的坐標(xcl,ycl, zcl)的初始值,其中的[f]C為對C進行f倍點運算的結果;確定f的二進制比特長度L ;將f的二進制形式中的次高比特位作為其當前比特位的初始值,從f的二進制形式中的次高比特位開始,每次降低一個比特位作為當前比特位,直至其最低比特位為止,進行(L-I)次迭代運算;將(L-I)次迭代運算的結果坐標(xcl,ycl, zcl)中的zcl發(fā)送到蒙哥馬利域乘法子模塊405 ;將zcl在有限域的值發(fā)送到有限域求逆子模塊402 ;將zcl—1在有限域的值發(fā)送到域轉換子模塊403 ;將(L-I)次迭代運算的結果坐標(XCl,yCl,ZCl)中的xcUycl以及zcl—1在蒙哥馬利域的值發(fā)送到蒙哥馬利域乘法子模塊405 ;將I與蒙哥馬利域乘法子模塊405返回的xcl在仿射坐標系的值發(fā)送到蒙哥馬利域乘法子模塊405 ;將I與蒙哥馬利域乘法子模塊405返回的ycl在仿射坐標系的值發(fā)送到蒙哥馬利域乘法子模塊405 ;將xcl、ycl 二者在有限域的值組成的坐標(xcl, ycl)作為[f]C的運算結果輸出;其中的一次迭代運算包括將坐標(xcl,ycl, zcl)的當前值發(fā)送到射影系二倍點運算子模塊404、在f的當前比特位為二進制I的情況下,將射影系二倍點運算子模塊404返回的輸出坐標發(fā)送到射影系點加子模塊406 ;域轉換子模塊403用于,將有限域的值xc2、yc2U分別轉換為各自在蒙哥馬利域的值xc3、yc3、zc3,并將其返回倍點運算控制子模塊401 ;將zcl—1在有限域的值轉換為其在蒙哥馬利域的值,并將其返回倍點運算控制子模塊401 ;射影系二倍點運算子模塊404用于,對輸入坐標進行二倍點運算,將運算結果作為輸出坐標返回至倍點運算控制子模塊401 ;射影系點加子模塊406用于,將輸入坐標與(XC3,yC3,ZC3)進行點加運算,將運算結果發(fā)送到倍點運算控制子模塊401 ;蒙哥馬利域乘法子模塊405用于,對zcl在蒙哥馬 利域的值與I進行蒙哥馬利域乘法運算,將得到的ZCl在有限域的值發(fā)送到倍點運算控制子模塊401 ;對XCl與zcl—1在蒙哥馬利域的值進行蒙哥馬利域乘法運算,對ycl與zcl—1在蒙哥馬利域的值進行蒙哥馬利域乘法運算,將分別得到的xcl、ycl 二者在仿射坐標系的值返回倍點運算控制子模塊401 ;對I與xcl在仿射坐標系的值進行蒙哥馬利域乘法運算,對ycl在仿射坐標系的值與I進行蒙哥馬利域乘法運算,將得到的xcl、ycl 二者在有限域的值返回到倍點運算控制子模塊401 ;有限域求逆子模塊402用于,對zcl在有限域的值進行求逆運算,將得到的zcl—1在有限域的值發(fā)送到倍點運算控制子模塊401。這里進行倍點運算的一組倍點運算數據所包含的數值f和點C為倍點運算控制子模塊從其所在的子系統中的控制中心所接收,如其位于發(fā)起方子系統中,則接收自發(fā)起方控制中心,如其位于響應方子系統中,則接收自響應方控制中心。并且這里的f和C分別為各組倍點運算數據中的數值和點的指代,如,f 和C可以分別為圖2所示的發(fā)起方控制中心發(fā)送給發(fā)起方倍點運算模塊的rk和G,或x20和RB,或h - tA和(PB+[x20]RB),也可以為響應方控制中心發(fā)送給響應方倍點運算模塊的rB和G,或xlO和RA,或h tB和(PA+[xlO]RA)。當然,上述的xc2、yc2、xc3、yc3、zc3、xcl、ycl、zcl以及zcT1也可以分別與圖2中發(fā)起方倍點運算模塊205或響應方倍點運算模塊208的功能中的相應運算數值一一對應。本發(fā)明提供的如圖4所示的倍點運算模塊,先將數據由仿射坐標系轉換到射影坐標系,再將其從有限域轉換到蒙哥馬利域,這樣就可以在蒙哥馬利域進行相應的計算,完成后將數據從射影坐標系轉換到仿射坐標系,再從蒙哥馬利域轉換到有限域,最終將倍點運算的結果輸出,相對于直接在仿射坐標系進行計算,本發(fā)明雖然增加了坐標系間以及域之間的數據轉換過程,但倍點運算的效率仍有很大的提高。圖2所示的系統中,發(fā)起方點加模塊和響應方點加模塊實現的都是點加功能,因而可以用相同的硬件來實現,該硬件稱為點加模塊。圖5為本發(fā)明提供的點加模塊的結構圖,該點加模塊可以用作發(fā)起方點加模塊,也可以用作響應方點加模塊。如圖5所示,該點加模塊包括點加控制子模塊501、域轉換子模塊502、射影系點加子模塊504、蒙哥馬利域乘法子模塊503、有限域求逆子模塊505 ;其中,點加控制子模塊501用于,將接收的要進行點加運算的點PPl和PP2在仿射坐標系下的坐標(xir,yir )和(xi2’,yi2’)分別轉換為各自在射影坐標系下的坐標(xir,yllM)和(xl2’,yl2’,l),并將xll’、yll’、l 和 xl2’、yl2’、l 發(fā)送到域轉換子模塊502 ;將xlll’、ylll’、zlir 組成的坐標(xlll,,ylll’,zlir )和 xl21 ’、yl21 ’、zl21’ 組成的坐標(X121’,yl2r,zl2r )發(fā)送到射影系點加子模塊504 ;將射影系點加子模塊504返回的坐標(X131’,yl3r,zl3r )中的zl31’發(fā)送到蒙哥馬利域乘法子模塊503 ;將蒙哥馬利域乘法子模塊503返回的zl31’在有限域的值發(fā)送到有限域求逆子模塊505 ;將zl31' 1在有限域的值發(fā)送到域轉換子模塊502 ;將坐標(χ13Γ,713Γ,ζ13Γ )中的xl31’、yl3r以及zl31' 1在蒙哥馬利域的值發(fā)送到蒙哥馬利域乘法子模塊503 ;將I與蒙哥馬利域乘法子模塊503返回的χ13Γ在仿射坐標系的值、I與蒙哥馬利域乘法子模塊503返回的yl31’在仿射坐標系的值分別發(fā)送到蒙哥馬利域乘法子模塊503 ;將蒙哥馬利域乘法子模塊503返回的xl31’、yl31’ 二者在有限域的值組成的坐標(xl31’,yl31’)作為PPl和PP2在仿射坐標系下進行點加運算的結果輸出;域轉換子模塊502用于,分別將χ Γ、yll’、I和xl2’、yl2’、I在有限域的值轉換為各自在蒙哥馬利域的值χΙ Γ、ylll’、ζΙ Γ和xl21’、yl21’、zl21’,并將其返回點加控制子模塊501;將ζ131' ―1在有限域的值轉換為ζ131' ―1在蒙哥馬利域的值,并將其返回點加控制子模塊501 ;射影系點加子模塊504用于,對輸入的坐標(χΙΙΓ,ylir, zlll’)和(χ121’,yl21’,ζ12Γ )進行點加運算,將得到的坐標(χ13Γ,yl31’,ζ13Γ )返回點加控制子模塊501 ; 蒙哥馬利域乘法子模塊503用于,對輸入的ζ13Γ與I進行蒙哥馬利域乘法運算,將得到的ζ13Γ在有限域的值發(fā)送到點加控制子模塊501 ;對1131’與Zll' ―1在蒙哥馬利域的值、yl31’與zll' ―1在蒙哥馬利域的值分別進行蒙哥馬利域乘法運算,將得到的X131’、yl31’ 二者在仿射坐標系的值返回點加控制子模塊501 ;對1131’、yl31’ 二者在仿射坐標系的值分別與I進行蒙哥馬利域乘法運算,將得到的X131’、yl31’ 二者在有限域的值返回點加控制子模塊501 ;有限域求逆子模塊505用于,對輸入的ζ13Γ在有限域的值進行求逆運算,將得到的zl31' ―1在有限域的值發(fā)送到點加控制子模塊501。這里的點PPl和PP2為點加控制子模塊從自身所在的子系統中的控制中心接收的數據,如其位于發(fā)起方子系統中,則接收自發(fā)起方控制中心,如其位于響應方子系統中,則接收自響應方控制中心。這里的點PPl和PP2代表的是發(fā)起方點加控制子模塊或響應方點加控制子模塊進行點加運算的數據,如,PPl和PP2可以分別代表發(fā)起方控制中心發(fā)送給發(fā)起方點加模塊的點加運算數據PB和[x20]RB,也可以分別代表響應方控制中心發(fā)送給響應方點加模塊的點加運算數據PA和[xlO]RA。本發(fā)明提供的如圖5所示的點加模塊,是將PPl和PP2在仿射坐標系下的坐標轉換到射影坐標系,然后從有限域轉換到蒙哥馬利域進行相應計算,完成后再從射影坐標系轉換到仿射坐標系,從蒙哥馬利域轉換到有限域,最后將結果輸出,該過程雖然比直接在仿射坐標系下運算增加了數據轉換步驟,但運算效率仍有很大的提高。本發(fā)明中,發(fā)起方密鑰派生模塊和響應方密鑰派生模塊均為實現密鑰派生功能的模塊,也可以用相同的硬件結構來實現,該硬件結構稱為密鑰派生模塊。圖6為本發(fā)明提供的密鑰派生模塊的結構圖,該密鑰派生模塊可以作為發(fā)起方密鑰派生模塊,也可以作為響應方密鑰派生模塊來應用。如圖6所示,該密鑰派生模塊包括密鑰派生控制子模塊601、輸出的雜湊值的長度為V比特的密碼雜湊子模塊602 ;其中,密鑰派生控制子模塊601用于,接收輸入比特串ZZ ;設置32比特的計數變量ct的初始值為16進制表示的00000001 ;確定大于或等于(klen/v)的最小整數Il klen/v Il ;循環(huán)變量i從I起遞增至Il klen/v Il ,每次遞增1,執(zhí)行Il klen/v Il次密碼雜湊運算;在(klen/v)為整數的情況下,置Ha !
I I klen/v I | Ha | | klen/v | |
;在(klen/v)不為整數的情況下,將Ha ! l|kWv|l置為比特串Hallklen7vll中從最高比特位起的(W -vxV」)比特,其中的為小于或等于(klen/v)的最小整數;將i從I遞增至(Il klen/v -I)的Hai以及Ha ! I|klen/v|l順次拼接,將得到的長度為klen比特的比特串作為對ZZ進行密鑰派生運算的結果輸出;其中,一次密碼雜湊運算包括將ct的當前值與ZZ拼接為比特串ZZ-ct ;將ZZ-ct發(fā)送到密碼雜湊子模塊602 ;將密碼雜湊子模塊602返回的Hv(ZZ-Ct)賦值給v比特的Hai ;ct的值增加16進制的00000001 ;密碼雜湊子模塊602用于,對輸入比特串ZZ-ct進行密碼雜湊運算,將輸出的V比特的雜湊值Hv(ZZ-Ct)返回密鑰派生控制子模塊601。
·
這里,比特串ZZ是密鑰派生控制子模塊從自身所在的子系統中的控制中心接收的,如其位于發(fā)起方子系統中,則接收自發(fā)起方控制中心,如其位于響應方子系統中,則接收自響應方控制中心。比特串ZZ表示的是發(fā)起方密鑰派生模塊或響應方密鑰派生模塊所接收的比特串,例如,ZZ可以表示圖2中發(fā)起方控制中心發(fā)送給發(fā)起方密鑰派生模塊的比特串Z,也可以表示響應方控制中心發(fā)送給響應方密鑰派生模塊的比特串Z’??梢钥闯觯撓到y中,發(fā)起方子系統和響應方子系統的部分模塊可以對應具有相同的結構,如發(fā)起方隨機數生成模塊和響應方隨機數生成模塊可以為相同結構的隨機數生成模塊;發(fā)起方倍點運算模塊和響應方倍點運算模塊可以為相同結構的倍點運算模塊;發(fā)起方點加模塊和響應方點加模塊可以為相同結構的點加模塊;發(fā)起方密鑰派生模塊和響應方密鑰派生模塊可以為相同結構的密鑰派生模塊,因此,可以對兩個子系統中相對應的模塊進行復用,從而節(jié)約硬件資源,提高系統集成度,減小芯片面積。圖7為本發(fā)明一個具體實施例的結構圖。如圖7所示,該系統包括發(fā)起方控制中心701、響應方控制中心702、隨機數生成模塊704、倍點運算模塊705、點加模塊706、密鑰派生模塊707,與圖2結構相比較,圖2中的發(fā)起方隨機數生成模塊和響應方隨機數生成模塊在圖7中用同一個隨機數生成模塊704實現;發(fā)起方倍點運算模塊和響應方倍點運算模塊在圖7中用同一個倍點運算模塊705實現;發(fā)起方點加模塊和響應方點加模塊在圖7中用同一個點加模塊706實現;發(fā)起方密鑰派生模塊和響應方密鑰派生模塊在圖7中用同一個密鑰派生模塊707實現;另外,該系統在圖2所示系統結構的基礎上,進一步包括上層復選模塊703 ;發(fā)起方控制中心701用于,向上層復選模塊703發(fā)送發(fā)起方占用信號;響應方控制中心702用于,向上層復選模塊703發(fā)送響應方占用信號;上層復選模塊703用于,根據發(fā)起方占用信號,將隨機數生成模塊704、倍點運算模塊705、點加模塊706、密鑰派生模塊707的工作模式置為發(fā)起方模式,使各模塊分別具有圖2中發(fā)起方隨機數生成模塊、發(fā)起方倍點運算模塊、發(fā)起方點加模塊、發(fā)起方密鑰派生模塊的功能,并轉發(fā)發(fā)起方控制中心701與隨機數生成模塊704、倍點運算模塊705、點加模塊706、密鑰派生模塊707之間的通信數據;根據響應方占用信號將隨機數生成模塊704、倍點運算模塊705、點加模塊706、密鑰派生模塊707的工作模式置為響應方模式,使各模塊分別具有圖2中響應方隨機數生成模塊、響應方倍點運算模塊、響應方點加模塊、響應方密鑰派生模塊的功能,并轉發(fā)響應方控制中心與隨機數生成模塊704、倍點運算模塊705、點加模塊706、密鑰派生模塊707之間的通信數據。另外,圖7中還可以進一步包括w生成模塊708,以實現生成w發(fā)送給發(fā)起方控制中心701和響應方控制中心702的功能。由此可見,圖7所示的實施例中,通過增設一個上層復選模塊作為發(fā)起方控制中心和響應方控制中心與各自子系統中其他模塊通信數據的轉發(fā)模塊,發(fā)起方控制中心和響應方控制中心只需通過上層復選模塊控制其他模塊的工作模式,即可使兩個子系統中的對應結構相同的模塊實現復用,從而大大減少了模塊的數量,節(jié)約了硬件的資源。進一步地,通過圖3、4、5所示的各模塊的結構可知,圖7實施例中的發(fā)起方控制中心、響應方控制中心、倍點運算模塊、點加模塊還可以進一步實現相同功能的子模塊的復 用。由此可得到圖8所示的本發(fā)明的另一個具體實施例的結構圖。圖8實施例中的系統包括由圖7所示的發(fā)起方控制中心、響應方控制中心、倍點運算模塊、點加模塊所共用的域轉換子模塊810、蒙哥馬利域乘法子模塊811 ;由倍點運算模塊、點加模塊所共用的射影系點加子模塊812、有限域求逆子模塊813 ;該系統進一步包括下層復選模塊808,以實現上述對域轉換子模塊810、蒙哥馬利域乘法子模塊811、射影系點加子模塊812、有限域求逆子模塊813的共用;圖7中的發(fā)起方控制中心還可以包括發(fā)起方控制子模塊801 ;響應方控制中心還包括響應方控制子模塊802 ;倍點運算模塊還包括倍點運算控制子模塊805、射影系二倍點運算子模塊809 ;點加模塊還包括點加控制子模塊806 ;圖7中的隨機數生成模塊、上層復選模塊在圖8中的標號分別為804和803,其功能與圖7中的相同。圖8中的發(fā)起方控制子模塊用于,向下層復選模塊發(fā)送發(fā)起方控制子模塊占用信號;將需要進行標量乘運算的兩個有限域的值發(fā)送到域轉換子模塊;將域轉換子模塊返回的兩個蒙哥馬利域的值發(fā)送到蒙哥馬利域乘法子模塊;將I與蒙哥馬利域乘法子模塊返回的乘積發(fā)送到蒙哥馬利域乘法子模塊;除了這里所說的標量乘運算功能,該發(fā)起方控制子模塊還具有圖2中發(fā)起方中心所具有的數據運算、判斷和控制其他模塊工作時序的功能,例如將rA和G作為一組倍點運算數據發(fā)送到倍點運算控制子模塊;將狀發(fā)送到響應方控制子模塊;根據 xlO = 2w+[xl&(2w-l)]和 x20 = 2w+[x2&(2W-1)]分別計算得到 χ10 和 χ20 ;根據tA = (dA+xlO · rA)modn計算得到tA ;判斷RB是否為橢圓曲線上的點;將x20和RB作為一組倍點運算數據發(fā)送到倍點運算控制子模塊和[x20] RB作為一組點加運算數據發(fā)送到點加控制子模塊;將h*tA和(PB+[x20]RB)作為一組倍點運算數據發(fā)送到倍點運算控制子模塊;判斷U是否為無窮遠點;將xU、yU、ZA和ZB拼接成的比特串Z發(fā)送到密鑰派生模塊;將密鑰派生模塊返回的比特串KA作為發(fā)起方會話密鑰輸出;在判斷出RB不為橢圓曲線上的點、U為無窮遠點的情況之一時,輸出協商失敗的消息;由此,該發(fā)起方控制子模塊通過下層復選模塊,與域轉換子模塊、蒙哥馬利域乘法子模塊共同構成了圖3所示的發(fā)起方控制中心,也具有了圖3所示的發(fā)起方控制中心的功能。圖8中的響應方控制子模塊用于,向下層復選模塊發(fā)送響應方控制子模塊占用信號;將需要進行標量乘運算的兩個有限域的值發(fā)送到域轉換子模塊;將域轉換子模塊返回的兩個蒙哥馬利域的值發(fā)送到蒙哥馬利域乘法子模塊;將I與蒙哥馬利域乘法子模塊返回的乘積發(fā)送到蒙哥馬利域乘法子模塊;除了這里所說的標量乘運算功能,該響應方控制子模塊還具有圖2中響應方中心所具有的數據運算、判斷和控制其他模塊工作時序的功能,例如將rB和G作為一組倍點運算數據發(fā)送到倍點運算控制子模塊;根據XlO =2w+[xl&(2w-l)]和 x20 = 2w+[x2&(2w-l)]分別計算得到 xlO 和 x20 ;根據 tB = (dB+x20 *rB)modn計算tB ;判斷RA是否為橢圓曲線上的點;將xlO和RA作為一組倍點運算數據發(fā)送到倍點運算控制子模塊^fPA和[xlO] RA作為一組點加運算數據發(fā)送到點加控制子模塊;將h · tB和(PA+[xlO]RA)作為一組倍點運算數據發(fā)送到倍點運算控制子模塊;判斷V是否為無窮遠點;將xV、yV、ZA和ZB拼接成的比特串V發(fā)送到密鑰派生模塊;將密鑰派生模塊返回的比特串KB作為響應方會話密鑰輸出;將RB發(fā)送到發(fā)起方控制子模塊;在判斷出RA不為橢圓曲線上的點、V為無窮遠點的情況之一時,輸出協商失敗的消息;這樣,響應方控制子模塊通過下層復選模塊,與域轉換子模塊、蒙哥馬利域乘法子模塊共同構成了圖3所示的響應方控制中心,也具有了圖3所示的響應方控制中心的功能。
圖8中的倍點運算控制子模塊用于,向下層復選模塊發(fā)送倍點運算控制子模塊占用信號;接收由數值f和點C組成的一組倍點運算數據,將C在仿射坐標系下的坐標(XC,yc)轉換為C在射影坐標系下的坐標0^2,7(32,1),并將^2、7(2、1發(fā)送到域轉換子模塊;將(XC3,yC3,ZC3)發(fā)送到射影系點加子模塊,并將其作為[f]C在蒙哥馬利域的坐標(xcl,ycl,zcl)的初始值,其中的[f]C為對C進行f倍點運算的結果;確定f的二進制比特長度L ;將f的二進制形式中的次高比特位作為其當前比特位的初始值,從f的二進制形式中的次高比特位開始,每次降低一個比特位作為當前比特位,直至其最低比特位為止,進行(L-I)次迭代運算;將(L-I)次迭代運算的結果坐標(xcl,ycl, zcl)中的zcl發(fā)送到蒙哥馬利域乘法子模塊;將zcl在有限域的值發(fā)送到有限域求逆子模塊;將zcl—1在有限域的值發(fā)送到域轉換子模塊;將(L-I)次迭代運算的結果坐標(xcl, ycl, zcl)中的xcl、ycl以及zcl—1在蒙哥馬利域的值發(fā)送到蒙哥馬利域乘法子模塊;將I與蒙哥馬利域乘法子模塊返回的xcl在仿射坐標系的值發(fā)送到蒙哥馬利域乘法子模塊;將I與蒙哥馬利域乘法子模塊返回的ycl在仿射坐標系的值發(fā)送到蒙哥馬利域乘法子模塊;將xcl、ycl 二者在有限域 的值組成的坐標(xcl,ycl)作為[f]C的運算結果輸出;其中的一次迭代運算包括將坐標(xcl, ycl, zcl)的當前值發(fā)送到射影系二倍點運算子模塊、在f的當前比特位為二進制I的情況下,將射影系二倍點運算子模塊返回的輸出坐標發(fā)送到射影系點加子模塊;射影系二倍點運算子模塊用于,對輸入坐標進行二倍點運算,將運算結果作為輸出坐標返回至倍點運算控制子模塊;由此可見,這里的倍點運算控制子模塊通過下層復選模塊,與域轉換子模塊、蒙哥馬利域乘法子模塊、射影系二倍點運算子模塊、射影系點加子模塊、有限域求逆子模塊共同構成了圖4所示的倍點運算模塊的結構,也就具有了圖4所示的倍點運算模塊的功能。圖8中的點加控制子模塊用于,向下層復選模塊發(fā)送點加控制子模塊占用信號;將接收的要進行點加運算的點PPl和PP2在仿射坐標系下的坐標(xir,yll’ )和(xl2’, yl2’ )分別轉換為各自在射影坐標系下的坐標(χ Γ,yllM)和(xl2’,y12’,l),并將χ Γ、yll’、l和xl2’、yl2’、l發(fā)送到域轉換子模塊;將xlll’、ylll’、zlll’組成的坐標(xlir,ylll’,zlir)和 xl2r、yl21’、zl2r 組成的坐標(χ12Γ,yl21’,zl21’)發(fā)送到射影系點加子模塊;將射影系點加子模塊返回的坐標(χ13Γ,713Γ,ζ13Γ)中的ζ13Γ發(fā)送到蒙哥馬利域乘法子模塊;將蒙哥馬利域乘法子模塊返回的ζ13Γ在有限域的值發(fā)送到有限域求逆子模塊;將ζ13Γ ―1在有限域的值發(fā)送到域轉換子模塊;將坐標(χ13Γ,yl31’,ζ13Γ)中的xl31’、yl31’以及ζ131' ―1在蒙哥馬利域的值發(fā)送到蒙哥馬利域乘法子模塊;將I與χ13Γ在仿射坐標系的值發(fā)送到蒙哥馬利域乘法子模塊;將I與yl31’在仿射坐標系的值發(fā)送到蒙哥馬利域乘法子模塊;將蒙哥馬利域乘法子模塊返回的xl31’、yl3r 二者在有限域的值組成的坐標(χ13Γ,yl31’ )作為PPl和PP2在仿射坐標系下進行點加運算的結果輸出;由此可見,圖8中的點加控制子模塊通過下層復選模塊的數據轉發(fā),與域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊共同構成了圖5所示的點加模塊的結構,也就具有了圖5所示的點加模塊的功能。下層復選模塊用于,根據發(fā)起方控制子模塊占用信號,將域轉換子模塊、蒙哥馬利域乘法子模塊的工作模式置為發(fā)起方控制子模塊占用模式,并轉發(fā)發(fā)起方控制子模塊與域轉換子模塊、蒙哥馬利域乘法子模塊之間的通信數據;根據響應方控制子模塊占用信號,將域轉換子模塊、蒙哥馬利域乘法子模塊的工作模式置為響應方控制子模塊占用模式,并轉 發(fā)響應方控制子模塊與域轉換子模塊、蒙哥馬利域乘法子模塊之間的通信數據;根據倍點運算控制子模塊占用信號,將域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊的工作模式置為倍點運算控制子模塊占用模式,并轉發(fā)倍點運算控制子模塊與域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊之間的通信數據;根據點加控制子模塊占用信號,將域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊的工作模式置為點加控制子模塊占用模式,并轉發(fā)點加控制子模塊與域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊之間的通信數據;由此可見,該實施例通過在圖7的基礎上進一步設置下層復選模塊,用于對發(fā)起方控制子模塊、響應方控制子模塊、倍點運算控制子模塊、點加控制子模塊與域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊之間的通信數據進行轉發(fā),以及控制域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊的工作模式,從而實現了對域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊的復用,在圖7實施例的基礎上進一步節(jié)約了硬件資源,減小了芯片面積。圖8中的域轉換子模塊用于,在發(fā)起方控制子模塊占用模式下,將發(fā)起方控制子模塊發(fā)送的兩個有限域的值分別轉換為各自在蒙哥馬利域的值返回發(fā)起方控制子模塊;在響應方控制子模塊占用模式下,將響應方控制子模塊發(fā)送的兩個有限域的值分別轉換為各自在蒙哥馬利域的值返回響應方控制子模塊;在倍點運算控制子模塊占用模式下,將有限域的值xc2、yc2U分別轉換為各自在蒙哥馬利域的值xc3、yc3、zc3,并將其返回倍點運算控制子模塊;將zcl—1在有限域的值轉換為其在蒙哥馬利域的值,并將其返回倍點運算控制子模塊;在點加控制子模塊占用模式下,分別將χ Γ、yll’、I和xl2’、yl2’、I在有限域的值轉換為各自在蒙哥馬利域的值xlll'ylll'zlll’和χ12Γ、712Γ、ζ12Γ,并將其返回點加控制子模塊;將ζ131' ―1在有限域的值轉換為ζ131' ―1在蒙哥馬利域的值,并將其返回點加控制子模塊;圖8中的蒙哥馬利域乘法子模塊用于,在發(fā)起方控制子模塊占用模式下,對發(fā)起方控制子模塊發(fā)送的兩個蒙哥馬利域的值進行蒙哥馬利域乘法運算,將得到的乘積返回發(fā)起方控制子模塊;對I與發(fā)起方控制子模塊發(fā)送的乘積進行蒙哥馬利域乘法運算,將運算結果返回發(fā)起方控制子模塊;在響應方控制子模塊占用模式下,對響應方控制子模塊發(fā)送的兩個蒙哥馬利域的值進行蒙哥馬利域乘法運算,將得到的乘積返回響應方控制子模塊;對I與響應方控制子模塊發(fā)送的所述乘積進行蒙哥馬利域乘法運算,將運算結果返回響應方控制子模塊;在倍點運算控制子模塊占用模式下,對ZCl在蒙哥馬利域的值與I進行蒙哥馬利域乘法運算,將得到的zcl在有限域的值發(fā)送到倍點運算控制子模塊;對xcl與zcl—1在蒙哥馬利域的值進行蒙哥馬利域乘法運算,將ycl與zcl—1在蒙哥馬利域的值進行蒙哥馬利域乘法運算,將分別得到的xcl、ycl 二者在仿射坐標系的值返回倍點運算控制子模塊;對I與xcl在仿射坐標系的值進行蒙哥馬利域乘法運算,對ycl在仿射坐標系的值與I進行蒙哥馬利域乘法運算,將得到的xcl、ycl 二者在有限域的值返回到倍點運算控制子模塊;在點加控制子模塊占用模式下,對輸入的ζ13Γ與I進行蒙哥馬利域乘法運算,將得到的ζ13Γ在有限域的值發(fā)送到點加控制子模塊;對χ13Γ與Zll' ―1在蒙哥馬利域的值進行蒙哥馬利域乘法運算,將yl31’與Zll' 1在蒙哥馬利域的值進行蒙哥馬利域乘法運算, 將分別得到的xl31’、yl3r 二者在仿射坐標系的值返回點加控制子模塊;對χ13Γ在仿射坐標系的值與I進行蒙哥馬利域乘法運算,對yl31’在仿射坐標系的值與I進行蒙哥馬利域乘法運算,將分別得到的xl31’、yl3r 二者在有限域的值返回點加控制子模塊;圖8中的射影系點加子模塊用于,在倍點運算控制子模塊占用模式下,將輸入坐標與(xc3, yc3, zc3)進行點加運算,將運算結果發(fā)送到倍點運算控制子模塊;在點加控制子模塊占用模式下,對輸入的坐標(xlll’,ylll’,zlir )和(χ12Γ,yl21’,zl21’ )進行點加運算,將得到的坐標(χ13Γ,yl31’,ζ13Γ )返回點加控制子模塊;圖8中的有限域求逆子模塊用于,在倍點運算控制子模塊占用模式下,對zcl在有限域的值進行求逆運算,將得到的zcl—1在有限域的值發(fā)送到倍點運算控制子模塊;在點加控制子模塊占用模式下,對輸入的ζ13Γ在有限域的值進行求逆運算,將得到的zl31' ―1在有限域的值發(fā)送到點加控制子模塊。由此可見,圖8中的域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊可在下層復選模塊所設置的工作模式下工作,從而完成標量乘運算、點加運算和倍點運算。另外,圖8所示的系統實施例中還可以進一步包括w生成模塊814,用于生成w以提供給發(fā)起方控制子模塊801和響應方控制子模塊802。圖8中的密鑰派生模塊807也可以具有圖6所示的結構。由此可見,本發(fā)明具有以下優(yōu)點(I)本發(fā)明中,由于發(fā)起方控制中心和響應方控制中心可分別安排相應的隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊的工作時序,使發(fā)起方隨機數生成模塊和響應方隨機數生成模塊各自隨機生成I與(η-I)之間的隨機數rA和rB,使發(fā)起方倍點運算模塊和響應方倍點運算模塊分別進行標量數值與點之間的倍點運算,使發(fā)起方點加模塊和響應方點加模塊分別進行兩個點的點加運算,使發(fā)起方密鑰派生模塊和響應方密鑰派生模塊分別對比特串進行密鑰派生運算,同時,發(fā)起方控制中心和響應方控制中心分別進行協商成功與否的判斷,從而實現發(fā)起方與響應方之間的密鑰協商,在雙方協商成功時,發(fā)起方和響應方分別通過發(fā)起方密鑰派生模塊和響應方密鑰派生模塊運算得到同一個會話密鑰,從而進行通信的加密和解密,在協商不成功時,輸出協商失敗的信息。因此,本發(fā)明能利用發(fā)起方控制中心、發(fā)起方隨機數生成模塊、發(fā)起方倍點運算模塊、發(fā)起方點加模塊、發(fā)起方密鑰派生模塊組成的發(fā)起方子系統和響應方控制中心、響應方隨機數生成模塊、響應方倍點運算模塊、響應方點加模塊、響應方密鑰派生模塊組成的響應方子系統,用硬件來實現SM2橢圓曲線公鑰密碼算法中的密鑰交換協議。(2)由于本發(fā)明能夠利用硬件來實現SM2橢圓曲線公鑰密碼算法中的密鑰交換協議,相對于該密鑰交換協議的軟件實現,本發(fā)明的運算速度更快,安全性也更高。(3)本發(fā)明中,發(fā)起方控制中心和響應方控制中心將標量乘運算的兩個數據由有限域轉換到蒙哥馬利域中進行,可以大大降低運算難度,提高運算效率,有利于進一步提高密鑰交換協議的運算速度。 (4)本發(fā)明提供的倍點運算模塊和點加模塊,先將數據由仿射坐標系轉換到射影坐標系,再將其從有限域轉換到蒙哥馬利域,這樣就可以在蒙哥馬利域進行相應的計算,完成后將數據從射影坐標系轉換到仿射坐標系,再從蒙哥馬利域轉換到有限域,最終將倍點運算的結果輸出,相對于直接在仿射坐標系進行計算,本發(fā)明進行倍點運算和點加運算的效率有很大的提聞。(5)本發(fā)明對發(fā)起方子系統和響應方子系統中相對應的模塊以及子模塊進行復用,大大節(jié)約了硬件資源,提高了系統的集成度,減小了芯片的面積。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種P元域SM2橢圓曲線密鑰協商系統,所述橢圓曲線具有基G和余因子h,G的階為n ;發(fā)起方雜湊值和響應方雜湊值分別為ZA和ZB ;發(fā)起方公鑰和發(fā)起方私鑰分別為PA和dA,響應方公鑰和響應方私鑰分別為PB和dB ;發(fā)起方和響應方約定的會話密鑰的長度為klen ;其特征在于,該系統包括發(fā)起方子系統和響應方子系統;所述發(fā)起方子系統包括發(fā)起方控制中心、發(fā)起方隨機數生成模塊、發(fā)起方倍點運算模塊、發(fā)起方點加模塊、發(fā)起方密鑰派生模塊;所述響應方子系統包括響應方控制中心、響應方隨機數生成模塊、響應方倍點運算模塊、響應方點加模塊、響應方密鑰派生模塊;其中, 所述發(fā)起方控制中心用于,將rA和G作為一組倍點運算數據發(fā)送到所述發(fā)起方倍點運算模塊;將RA發(fā)送到所述響應方控制中心;根據xlO = 2w+[xl&(2w-l)]和x20 =2w+[x2&(2W-1)]分別計算得到xlO和x20 ;計算xlO和rA的標量乘積xlO rA,根據tA =(dA+xlO rA)modn計算得到tA ;判斷RB是否為所述橢圓曲線上的點;將x20和RB作為一組倍點運算數據發(fā)送到所述發(fā)起方倍點運算模塊;計算h和tA的標量乘積h -tA ;將PB和[x20]RB作為一組點加運算數據發(fā)送到所述發(fā)起方點加模塊;將h tA和(PB+[x20]RB)作為一組倍點運算數據發(fā)送到所述發(fā)起方倍點運算模塊;判斷U是否為無窮遠點;將xU、yU、ZA和ZB拼接成的比特串Z發(fā)送到所述發(fā)起方密鑰派生模塊;將發(fā)起方密鑰派生模塊返回的比特串KA作為發(fā)起方會話密鑰輸出;在判斷出RB不為所述橢圓曲線上的點、U為無窮遠點的情況之一時,輸出協商失敗的消息; 所述發(fā)起方隨機數生成模塊用于,將生成的I與(n-1)之間的隨機數rA發(fā)送到所述發(fā)起方控制中心; 所述發(fā)起方倍點運算模塊用于,對G進行rA倍點運算,得到坐標為(xl,yl)的點RA,并將RA發(fā)送到所述發(fā)起方控制中心;對1 進行x20倍點運算,將得到的[x20]RB發(fā)送到所述發(fā)起方控制中心;對(PB+[x20]RB)進行h tA倍點運算,將得到的點U發(fā)送到所述發(fā)起方控制中心,所述點U的坐標為(xU, yU); 所述發(fā)起方點加模塊用于,對PB和[x20]RB進行點加運算,將生成的(PB+[x20]RB)發(fā)送到所述發(fā)起方控制中心; 所述發(fā)起方密鑰派生模塊用于,對比特串Z進行密鑰派生運算,將得到的長度為klen的比特串KA發(fā)送到所述發(fā)起方控制中心; 所述響應方控制中心用于,將rB和G作為一組倍點運算數據發(fā)送到所述響應方倍點運算模塊;根據 xlO = 2w+[xl&(2w-l)]和 x20 = 2w+[x2& (2W-1)]分別計算得到 xlO 和 x20 ;計算x20和rB的標量乘積x20 *rB,根據tB = (dB+x20 *rB)modn計算tB ;判斷RA是否為所述橢圓曲線上的點;將xlO和RA作為一組倍點運算數據發(fā)送到所述響應方倍點運算模塊;計算h和tB的標量乘積h tB ;將PA和[xlO]RA作為一組點加運算數據發(fā)送到所述響應方點加模塊;將h*tB和(PA+[xlO]RA)作為一組倍點運算數據發(fā)送到所述響應方倍點運算模塊;判斷V是否為無窮遠點;將xV.yV.ZA和ZB拼接成的比特串V發(fā)送到所述響應方密鑰派生模塊;將響應方密鑰派生模塊返回的比特串KB作為響應方會話密鑰輸出;將RB發(fā)送到所述發(fā)起方控制中心;在判斷出RA不為所述橢圓曲線上的點、V為無窮遠點的情況之一時,輸出協商失敗的消息; 所述響應方隨機數生成模塊用于,將生成的I與(n-1)之間的隨機數rB發(fā)送到所述響應方控制中心;所述響應方倍點運算模塊用于,對G進行rB倍點運算,得到坐標為(x2,y2)的點RB,并將RB發(fā)送到所述響應方控制中心;對狀進行xlO倍點運算,將得到的[xlO]RA發(fā)送到所述響應方控制中心;對(PA+[xlO]RA)進行h tB倍點運算,將得到的點V發(fā)送到所述響應方控制中心,所述點V的坐標為(xV, yV); 所述響應方點加模塊用于,對PA和[xlO] RA進行點加運算,將生成的(PA+[xlO]RA)發(fā)送到所述響應方控制中心; 所述響應方密鑰派生模塊用于,對比特串V進行密鑰派生運算,將得到的長度為klen的比特串KB發(fā)送到所述響應方控制中心; 其中,w為參數,&為按比特邏輯與運算符,mod為求模運算符。
2.根據權利要求I所述的系統,其特征在于,該系統進一步包括w生成模塊,用于根據w =II (II log" 11/2) Il -I計算得到參數W,并將其分別發(fā)送到所述發(fā)起方控制中心和所述響應方控制中心。
3.根據權利要求I所述的系統,其特征在于,所述發(fā)起方控制中心和響應方控制中心均包括控制子模塊、域轉換子模塊、蒙哥馬利域乘法子模塊;其中, 所述控制子模塊用于,將需要進行標量乘運算的m和j 二者在有限域的值發(fā)送到所述域轉換子模塊;將!11和j各自在蒙哥馬利域的值發(fā)送到所述蒙哥馬利域乘法子模塊;將I與所述蒙哥馬利域乘法子模塊返回的mj發(fā)送到所述蒙哥馬利域乘法子模塊; 所述域轉換子模塊用于,將m和j 二者在有限域的值分別轉換為各自在蒙哥馬利域的值返回所述控制子模塊; 所述蒙哥馬利域乘法子模塊用于,對m和j各自在蒙哥馬利域的值進行蒙哥馬利域乘法運算,將得到的乘積mj返回所述控制子模塊與I進行蒙哥馬利域乘法運算,得到m和j在有限域的值的標量乘積;將111和j在有限域的值的標量乘積返回所述控制子模塊。
4.根據權利要求I所述的系統,其特征在于,所述發(fā)起方倍點運算模塊和響應方倍點運算模塊均包括倍點運算控制子模塊、射影系二倍點運算子模塊、域轉換子模塊、蒙哥馬利域乘法子模塊、有限域求逆子模塊、射影系點加子模塊;其中, 所述倍點運算控制子模塊用于,接收由數值f 和點C組成的一組倍點運算數據,將C在仿射坐標系下的坐標(xc,yc)轉換為C在射影坐標系下的坐標(xc2,yc2,1),并將xc2、yc2、I發(fā)送到所述域轉換子模塊;將(xc3,yc3, zc3)發(fā)送到所述射影系點加子模塊,并將其作為[f] C在蒙哥馬利域的坐標(Xcl,ycl,zcl)的初始值,其中的[f] C為對C進行f 倍點運算的結果;確定f的二進制比特長度L ;將f的二進制形式中的次高比特位作為其當前比特位的初始值,從所述f的二進制形式中的次高比特位開始,每次降低一個比特位作為當前比特位,直至其最低比特位為止,進行(L-I)次迭代運算;將所述(L-I)次迭代運算的結果坐標(Xcl,ycl,zcl)中的zcl發(fā)送到所述蒙哥馬利域乘法子模塊;將zcl在有限域的值發(fā)送到所述有限域求逆子模塊;將zcl—1在有限域的值發(fā)送到所述域轉換子模塊;將所述(L-I)次迭代運算的結果坐標(xcl, ycl, zcl)中的xcl、ycl以及zcl4在蒙哥馬利域的值發(fā)送到所述蒙哥馬利域乘法子模塊;將I與xcl在仿射坐標系的值、I與ycl在仿射坐標系的值分別發(fā)送到蒙哥馬利域乘法子模塊dfxcl、ycl 二者在有限域的值組成的坐標(xcl,ycl)作為[f]C的運算結果輸出;其中的一次所述的迭代運算包括將坐標(Xcl,ycl,zcl)的當前值發(fā)送到所述射影系二倍點運算子模塊、在f的當前比特位為二進制I的情況下,將所述射影系二倍點運算子模塊返回的輸出坐標發(fā)送到所述射影系點加子模塊; 所述域轉換子模塊用于,將有限域的值xc2、yc2U分別轉換為各自在蒙哥馬利域的值xc3、yc3、zc3,并將其返回所述倍點運算控制子模塊;將zcl—1在有限域的值轉換為其在蒙哥馬利域的值,并將其返回所述倍點運算控制子模塊; 所述射影系二倍點運算子模塊用于,對輸入坐標進行二倍點運算,將運算結果作為輸出坐標返回至所述倍點運算控制子模塊; 所述射影系點加子模塊用于,將輸入坐標與(xc3,yc3, zc3)進行點加運算,將運算結果發(fā)送到所述倍點運算控制子模塊; 所述蒙哥馬利域乘法子模塊用于,對zcl在蒙哥馬利域的值與I進行蒙哥馬利域乘法運算,將得到的zcl在有限域的值發(fā)送到所述倍點運算控制子模塊;對xcl與zcl—1在蒙哥 馬利域的值、ycl與zcl—1在蒙哥馬利域的值分別進行蒙哥馬利域乘法運算,將得到的xcl、ycl 二者在仿射坐標系的值返回所述倍點運算控制子模塊;將所述xcl、ycl 二者在仿射坐標系的值分別與I進行蒙哥馬利域乘法運算,將得到的xcl、ycl 二者在有限域的值返回到所述倍點運算控制子模塊; 所述有限域求逆子模塊用于,對zcl在有限域的值進行求逆運算,將得到的zcl—1在有限域的值發(fā)送到所述倍點運算控制子模塊。
5.根據權利要求I所述的系統,其特征在于,所述發(fā)起方點加模塊和響應方點加模塊均包括點加控制子模塊、域轉換子模塊、射影系點加子模塊、蒙哥馬利域乘法子模塊、有限域求逆子模塊;其中, 所述點加控制子模塊用于,將接收的要進行點加運算的點PPl和PP2在仿射坐標系下的坐標(xir,yir )和(xi2’,yi2’)分別轉換為各自在射影坐標系下的坐標(xir,yllM)和0^12’,712’,1),并將111’、711’、1和112’、712’、1發(fā)送到所述域轉換子模塊;將 xlll’、ylll’、zlll’ 組成的坐標(xlir,ylll’,Zlir )和 Xl2r、yl21’、zl2r 組成的坐標(X121’,yl2r,zl2r)發(fā)送到所述射影系點加子模塊;將所述射影系點加子模塊返回的坐標(X131’,yl3r,zl3r)中的Z131’發(fā)送到所述蒙哥馬利域乘法子模塊;將所述蒙哥馬利域乘法子模塊返回的zl31’在有限域的值發(fā)送到所述有限域求逆子模塊;將2131' -I在有限域的值發(fā)送到所述域轉換子模塊;將坐標(xl3r,yl31’,Z13r )中的X131’、yl31’以及zl31' -I在蒙哥馬利域的值發(fā)送到所述蒙哥馬利域乘法子模塊;將1131’在仿射坐標系的值與l、yl31’在仿射坐標系的值與I分別發(fā)送到所述蒙哥馬利域乘法子模塊;將所述蒙哥馬利域乘法子模塊返回的xl31’、yl31’二者在有限域的值組成的坐標(X131’,yl31’)作為PPl和PP2在仿射坐標系下進行點加運算的結果輸出; 所述域轉換子模塊用于,分別將XlT、yll’、I和xl2’、yl2’、I在有限域的值轉換為各自在蒙哥馬利域的值xlir、ylll’、Zlir和1121’、7121’、2121’,并將其返回所述點加控制子模塊;將zl31' ―1在有限域的值轉換為zl31' ―1在蒙哥馬利域的值,并將其返回所述點加控制子模塊; 所述射影系點加子模塊用于,對輸入的坐標(xiir,yiir,ziir )和(xi2i’,yi2r,Z121’ )進行點加運算,將得到的坐標(Xl31’,yl31’,Z131’ )返回所述點加控制子模塊;所述蒙哥馬利域乘法子模塊用于,對輸入的zl31’與I進行蒙哥馬利域乘法運算,將得到的zl31’在有限域的值發(fā)送到所述點加控制子模塊;對xl31’與zll' ―1在蒙哥馬利域的值、yl31’與zll' 1在蒙哥馬利域的值分別進行蒙哥馬利域乘法運算,將得到的xl31’、yl31’ 二者在仿射坐標系的值返回所述點加控制子模塊;對所述xl31’、yl31’ 二者在仿射坐標系的值分別與I進行蒙哥馬利域乘法運算,將得到的xl31’、yl31’ 二者在有限域的值返回所述點加控制子模塊; 所述有限域求逆子模塊用于,對輸入的zl31’在有限域的值進行求逆運算,將得到的zl31' 1在有限域的值發(fā)送到所述點加控制子模塊。
6.根據權利要求I所述的系統,其特征在于,所述發(fā)起方密鑰派生模塊和響應方密鑰派生模塊均包括密鑰派生控制子模塊、輸出的雜湊值的長度為V比特的密碼雜湊子模塊;其中, 所述密鑰派生控制子模塊用于,接收輸入比特串ZZ ;設置32比特的計數變量ct的初始值為16進制表示的00000001 ;確定大于或等于(klen/v)的最小整數Il klen/v Il ;循環(huán)變量i從I起遞增至Il klen/v II,每次遞增I,執(zhí)行Il klen/v Il次密碼雜湊運算;在(klen/v)為整數的情況下,置Ha !I I klen/v I I Ha j j klen/v I |;在(klen/v)不為整數的情況下,將Ha ! l|kWv|l置為比特串Hallklen7vll中從最高比特位起的(W _vxV」)比特,其中的為小于或等于(klen/v)的最小整數;將i從I遞增至(I klen/v |_1)的Hai以及Ha ! I|klen/v|l順次拼接,將得到的長度為klen比特的比特串作為對ZZ進行密鑰派生運算的結果輸出;其中,一次所述的密碼雜湊運算包括將ct的當前值與ZZ拼接為比特串ZZ-ct ;將ZZ-ct發(fā)送到所述密碼雜湊子模塊;將所述密碼雜湊子模塊返回的氏(22-(^)賦值給V比特的Hai ;ct的值增加16進制的00000001 ; 所述密碼雜湊子模塊用于,對輸入比特串ZZ-ct進行密碼雜湊運算,將輸出的V比特的雜湊值Hv (ZZ-ct)返回所述密鑰派生控制子模塊。
7.根據權利要求I所述的系統,其特征在于,該系統進一步包括上層復選模塊; 所述發(fā)起方隨機數生成模塊和所述響應方隨機數生成模塊為同一個隨機數生成模塊;所述發(fā)起方倍點運算模塊和所述響應方倍點運算模塊為同一個倍點運算模塊;所述發(fā)起方點加模塊和所述響應方點加模塊為同一個點加模塊;所述發(fā)起方密鑰派生模塊和所述響應方密鑰派生模塊為同一個密鑰派生模塊; 所述發(fā)起方控制中心用于,向所述上層復選模塊發(fā)送發(fā)起方占用信號; 所述響應方控制中心用于,向所述上層復選模塊發(fā)送響應方占用信號; 所述上層復選模塊用于,根據所述發(fā)起方占用信號,將所述隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊的工作模式置為發(fā)起方模式,使各模塊分別具有所述發(fā)起方隨機數生成模塊、所述發(fā)起方倍點運算模塊、所述發(fā)起方點加模塊、所述發(fā)起方密鑰派生模塊的功能,并轉發(fā)所述發(fā)起方控制中心與所述隨機數生成模塊、所述倍點運算模塊、所述點加模塊、所述密鑰派生模塊之間的通信數據;根據所述響應方占用信號將所述隨機數生成 模塊、倍點運算模塊、點加模塊、密鑰派生模塊的工作模式置為響應方模式,使各模塊分別具有所述響應方隨機數生成模塊、所述響應方倍點運算模塊、所述響應方點加模塊、所述響應方密鑰派生模塊的功能,并轉發(fā)所述響應方控制中心與所述隨機數生成模塊、所述倍點運算模塊、所述點加模塊、所述密鑰派生模塊之間的通信數據。
8.根據權利要求7所述的系統,其特征在于,該系統進一步包括下層復選模塊; 該系統包括由所述發(fā)起方控制中心、響應方控制中心、倍點運算模塊、點加模塊所共用的域轉換子模塊、蒙哥馬利域乘法子模塊;由所述倍點運算模塊、點加模塊所共用的射影系點加子模塊、有限域求逆子模塊; 所述發(fā)起方控制中心還包括發(fā)起方控制子模塊;所述響應方控制中心還包括響應方控制子模塊;所述倍點運算模塊還包括倍點運算控制子模塊、射影系二倍點運算子模塊;所述點加模塊還包括點加控制子模塊; 所述發(fā)起方控制子模塊用于,向所述下層復選模塊發(fā)送發(fā)起方控制子模塊占用信號;將需要進行標量乘運算的兩個有限域的值發(fā)送到所述域轉換子模塊;將所述域轉換子模塊返回的兩個蒙哥馬利域的值發(fā)送到所述蒙哥馬利域乘法子模塊;將I與所述蒙哥馬利域乘法子模塊返回的乘積發(fā)送到所述蒙哥馬利域乘法子模塊; 所述響應方控制子模塊用于,向所述下層復選模塊發(fā)送響應方控制子模塊占用信號;將需要進行標量乘運算的兩個有限域的值發(fā)送到所述域轉換子模塊;將所述域轉換子模塊返回的兩個蒙哥馬利域的值發(fā)送到所述蒙哥馬利域乘法子模塊;將I與所述蒙哥馬利域乘法子模塊返回的乘積發(fā)送到所述蒙哥馬利域乘法子模塊; 所述倍點運算控制子模塊用于,向所述下層復選模塊發(fā)送倍點運算控制子模塊占用信號;接收由數值f和點C組成的一組倍點運算數據,將C在仿射坐標系下的坐標(xc,yc)轉換為C在射影坐標系下的坐標0^2,7(32,1),并將^2、7(2、1發(fā)送到所述域轉換子模塊;將(xc3,yc3, zc3)發(fā)送到所述射影系點加子模塊,并將其作為[f] C在蒙哥馬利域的坐標(xcl, ycl, zcl)的初始值,其中的[f]C為對C進行f倍點運算的結果;確定f的二進制比特長度L ;將f的二進制形式中的次高比特位作為其當前比特位的初始值,從所述f的二進制形式中的次高比特位開始,每次降低一個比特位作為當前比特位,直至其最低比特位為止,進行(L-I)次迭代運算;將所述(L-I)次迭代運算的結果坐標(Xcl,ycl,zcl)中的zcl發(fā)送到所述蒙哥馬利域乘法子模塊;將zcl在有限域的值發(fā)送到所述有限域求逆子模塊;將zcl—1在有限域的值發(fā)送到所述域轉換子模塊;將所述(L-I)次迭代運算的結果坐標(xcl,ycl, zcl)中的xcl、ycl以及zcl—1在蒙哥馬利域的值發(fā)送到所述蒙哥馬利域乘法子模塊;將I與xcl在仿射坐標系的值、I與ycl在仿射坐標系的值分別發(fā)送到所述蒙哥馬利域乘法子模塊;將xcl、ycl 二者在有限域的值組成的坐標(Xcl,ycl)作為[f]C的運算結果輸出;其中的一次所述的迭代運算包括將坐標(xcl,ycl,zcl)的當前值發(fā)送到所述射影系二倍點運算子模塊、在f 的當前比特位為二進制I的情況下,將所述射影系二倍點運算子模塊返回的輸出坐標發(fā)送到所述射影系點加子模塊; 所述射影系二倍點運算子模塊用于,對輸入坐標進行二倍點運算,將運算結果作為輸出坐標返回至所述倍點運算控制子模塊; 所述點加控制子模塊用于,向所述下層復選模塊發(fā)送點加控制子模塊占用信號;將接收的要進行點加運算的點PPl和PP2在仿射坐標系下的坐標(Xll’,yir)和(xl2’,yl2’)分別轉換為各自在射影坐標系下的坐標(xU’,yllM)和(xl2’,yl2’,l),并將xll’、yllM和xl2’、yl2’、l發(fā)送到所述域轉換子模塊;將xlll’、ylll’、ZllT組成的坐標(xlir,ylll’,Zlir )和 Xl2r、yl21’、zl2r 組成的坐標(Xl2r,yl21’,zl2r )發(fā)送到所述射影系點加子模塊;將所述射影系點加子模塊返回的坐標(Xl31’,yl31’,zl31’ )中的zl31’發(fā)送到所述蒙哥馬利域乘法子模塊;將所述蒙哥馬利域乘法子模塊返回的zl31’在有限域的值發(fā)送到所述有限域求逆子模塊;將2131' ―1在有限域的值發(fā)送到所述域轉換子模塊;將坐標(X13r,yl31’,Z13r )中的Xl31’、yl3r以及zl31' ―1在蒙哥馬利域的值發(fā)送到所述蒙哥馬利域乘法子模塊;將xl31’在仿射坐標系的值與l、yl31’在仿射坐標系的值與I分別發(fā)送到所述蒙哥馬利域乘法子模塊;將所述蒙哥馬利域乘法子模塊返回的xl31’、yl31’二者在有限域的值組成的坐標(xl31’,yl3r)作為PPl和PP2在仿射坐標系下進行點加運算的結果輸出; 所述下層復選模塊用于,根據所述發(fā)起方控制子模塊占用信號,將所述域轉換子模塊、蒙哥馬利域乘法子模塊的工作模式置為發(fā)起方控制子模塊占用模式,并轉發(fā)所述發(fā)起方控制子模塊與所述域轉換子模塊、蒙哥馬利域乘法子模塊之間的通信數據;根據所述響應方控制子模塊占用信號,將所述域轉換子模塊、蒙哥馬利域乘法子模塊的工作模式置為響應方控制子模塊占用模式,并轉發(fā)所述響應方控制子模塊與所述域轉換子模塊、蒙哥馬利域乘法子模塊之間的通信數據;根據所述倍點運算控制子模塊占用信號,將所述域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊的工作模式置為倍點運算控制子模塊占用模式,并轉發(fā)所述倍點運算控制子模塊與所述域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊之間的通信數據;根據所述點加控制子模塊占用信號,將所述域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊的工作模式置為點加控制子模塊占用模式,并轉發(fā)所述點加控制子模塊與所述域轉換子模塊、蒙哥馬利域乘法子模塊、射影系點加子模塊、有限域求逆子模塊之間的通信數據; 所述域轉換子模塊用于,在所述發(fā)起方控制子模塊占用模式下,將所述發(fā)起方控制子模塊發(fā)送的所述兩個有限域的值分別轉換為各自在蒙哥馬利域的值返回所述發(fā)起方控制子模塊;在所述響應方控制子模塊占用模式下,將所述響應方控制子模塊發(fā)送的所述兩個有限域的值分別轉換為各自在蒙哥馬利域的值返回所述響應方控制子模塊;在所述倍點運算控制子模塊占用模式下,將有限域的值XC2、yc2、l分別轉換為各自在蒙哥馬利域的值xc3、yc3、zc3,并將其返回所述倍點運算控制子模塊;將zcl—1在有限域的值轉換為其在蒙哥馬利域的值,并將其返回所述倍點運算控制子模塊;在所述點加控制子模塊占用模式下,分別將xll’、yll’、1和xl2’、yl2’、l在有限域的值轉換為各自在蒙哥馬利域的值xlll’、 ylll’、zlir和xl21’、yl21’、zl21’,并將其返回所述點加控制子模塊;將zl31' ―1在有限域的值轉換為zl31' 1在蒙哥馬利域的值,并將其返回所述點加控制子模塊; 所述蒙哥馬利域乘法子模塊用于,在所述發(fā)起方控制子模塊占用模式下,對所述發(fā)起方控制子模塊發(fā)送的兩個蒙哥馬利域的值進行蒙哥馬利域乘法運算,將得到的乘積返回所述發(fā)起方控制子模塊;對I與發(fā)起方控制子模塊發(fā)送的所述乘積進行蒙哥馬利域乘法運算,將運算結果返回所述發(fā)起方控制子模塊;在所述響應方控制子模塊占用模式下,對所述響應方控制子模塊發(fā)送的兩個蒙哥馬利域的值進行蒙哥馬利域乘法運算,將得到的乘積返回所述響應方控制子模塊;對I與響應方控制子模塊發(fā)送的所述乘積進行蒙哥馬利域乘法運算,將運算結果返回所述響應方控制子模塊;在所述倍點運算控制子模塊占用模式下,對zcl在蒙哥馬利域的值與I進行蒙哥馬利域乘法運算,將得到的zcl在有限域的值發(fā)送到所述倍點運算控制子模塊;對xcl與zcl—1在蒙哥馬利域的值、ycl與zcl—1在蒙哥馬利域的值分別進行蒙哥馬利域乘法運算,將得到的xcl、ycl 二者在仿射坐標系的值返回所述倍點運算控制子模塊;將所述xcl、ycl 二者在仿射坐標系的值分別與I進行蒙哥馬利域乘法運算,將得到的xcl、ycl 二者在有限域的值返回到所述倍點運算控制子模塊;在所述點加控制子模塊占用模式下,對輸入的zl31’與I進行蒙哥馬利域乘法運算,將得到的zl31’在有限域的值發(fā)送到所述點加控制子模塊;對xl31’與zll' ―1在蒙哥馬利域的值、yl31’與zll' 1在蒙哥馬利域的值分別進行蒙哥馬利域乘法運算,將得到的xl31’、yl31’ 二者在仿射坐標系的值返回所述點加控制子模塊;對所述xl31’、yl3r 二者在仿射坐標系的值分別與I進行蒙哥馬利域乘法運算,將得到的xl31’、yl31’ 二者在有限域的值返回所述點加控制子模塊; 所述射影系點加子模塊用于,在所述倍點運算控制子模塊占用模式下,將輸入坐標與(xc3, yc3, zc3)進行點加運算,將運算結果發(fā)送到所述倍點運算控制子模塊;在所述點加控制子模塊占用模式下,對輸入的坐標(Xlll’,ylll’,Zlir )和(xl21’,yl21’,zl2V ) 進行點加運算,將得到的坐標(xl31’,yl31’,zl31’ )返回所述點加控制子模塊; 所述有限域求逆子模塊用于,在所述倍點運算控制子模塊占用模式下,對zcl在有限域的值進行求逆運算,將得到的zcl—1在有限域的值發(fā)送到所述倍點運算控制子模塊;在所述點加控制子模塊占用模式下,對輸入的zl31’在有限域的值進行求逆運算,將得到的zl31' 1在有限域的值發(fā)送到所述點加控制子模塊。
全文摘要
本發(fā)明涉及一種p元域SM2橢圓曲線密鑰協商系統。該系統包括由控制本子系統內其他模塊的工作時序、數據調用、判斷密鑰協商成功與否的發(fā)起方控制中心、生成隨機數的發(fā)起方隨機數生成模塊、實現倍點運算的發(fā)起方倍點運算模塊、實現點加運算的發(fā)起方點加模塊、具有密鑰派生功能的發(fā)起方密鑰派生模塊構成的發(fā)起方子系統;由控制本子系統內其他模塊的工作時序、數據調用、判斷密鑰協商成功與否的響應方控制中心、生成隨機數的響應方隨機數生成模塊、實現倍點運算的響應方倍點運算模塊、實現點加運算的響應方點加模塊、具有密鑰派生功能的響應方密鑰派生模塊構成的響應方子系統。本發(fā)明能用硬件實現SM2橢圓曲線公鑰密碼算法中的密鑰交換協議。
文檔編號H04L9/30GK102761411SQ20111010752
公開日2012年10月31日 申請日期2011年4月27日 優(yōu)先權日2011年4月27日
發(fā)明者劉建巍, 劉振, 屈善新, 徐樹民, 王紹麟, 田心 申請人:航天信息股份有限公司