亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于sm2密鑰交換協(xié)議的密鑰協(xié)商方法及裝置的制作方法

文檔序號:7994376閱讀:693來源:國知局
專利名稱:基于sm2密鑰交換協(xié)議的密鑰協(xié)商方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法
及裝置。
背景技術(shù)
2010年12月中國國家密碼管理局將SM2、SM3密碼算法公開,標(biāo)志著SM2、SM3密碼算法進(jìn)入了商用化階段。SM2密鑰交換協(xié)議作為SM2密碼算法的一個組成部分,其在密鑰管理和密鑰協(xié)商功能領(lǐng)域得到很好的應(yīng)用。在SM2密鑰交換協(xié)議工程實現(xiàn)過程中,W參數(shù)作為密鑰交換協(xié)議內(nèi)的一個重要參數(shù),其參數(shù)值的生成運算效率成為整個密鑰交換協(xié)議實現(xiàn)效率的決定性因素?;赟M2密鑰交換協(xié)議的規(guī)定,現(xiàn)有的密鑰協(xié)商流程如下假設(shè)用戶A為密鑰協(xié)商發(fā)起方,而用戶B為密鑰協(xié)商響應(yīng)方,用戶A和用戶B協(xié)商獲得的密鑰數(shù)據(jù)的長度為klen比特,以及用戶A和用戶B雙方使用相同的橢圓曲線方程, 其中,該橢圓曲線方程類型可選擇素域方程y2 = x3+ax+b,也可以選擇二元擴域方程y2+xy =x3+ax2+b ο在SM2密鑰交換協(xié)議內(nèi)規(guī)定使用的密鑰派生函數(shù)記為KDF(Z,klen),其作用是從一個秘密比特串中派生出密鑰數(shù)據(jù),其中,ζ為輸入的秘密比特串,整數(shù)klen表示要獲得的密鑰數(shù)據(jù)的比特長度,要求該值小于032-1)ν,將長度為klen的密鑰數(shù)據(jù)比特串記為K。在密鑰數(shù)據(jù)生成的過程中,密鑰派生函數(shù)需要調(diào)用密碼雜湊函數(shù)(例如,SM3密碼雜湊算法), 通常將密碼雜湊函數(shù)記為HvO,密碼雜湊函數(shù)的輸出是長度為ν比特的雜湊值。下面介紹密鑰派生函數(shù)運算步驟如下(1)、初始化一個32比特構(gòu)成的計數(shù)器ct = 0x00000001 ;(2)、分別采用i從1到「- /vl的取值循環(huán)執(zhí)行以下步驟a和步驟b,各次的執(zhí)行結(jié)
果分別記為Hai、Ha2......Ha\k,enivy\、Ha、.\kMv],其中,Up^M為生成的最后一個t的
取值的部分或全部a、計算 Hai = hv(Z I I ct) ; | | 為級聯(lián)運算b、ct++;在計算,Uptwv1時,若klen/v是整數(shù),則令υ「Α/βΛ/ν = 明,若klen/V是非整數(shù),則令^f!「論…為^^編H最左邊的(射⑶-(vxL蹌Wv」))個比特;⑶、最后,令I(lǐng)= Zfo1 Il Il …Il Hafklenhyi || HaIfklen^ ; κ 便是獲得的密鑰數(shù)據(jù)?;讷@得的密鑰函數(shù),用戶A和用戶B為了獲得相同的密鑰,需要進(jìn)行密鑰協(xié)商, 具體運算步驟如下記狄=「(「10&( )]/2)]-1。
用戶A:Al 采用隨機數(shù)發(fā)生器產(chǎn)生隨機數(shù)rA e [1,n-1];A2:計算橢圓曲線點I A= [rA]G= (x1 Yl), (Χι,Υι)即是點&的坐標(biāo)值,G為選取的橢圓曲線參數(shù)。A3 將&發(fā)送給用戶B ;用戶B:Bl 采用隨機數(shù)發(fā)生器產(chǎn)生隨機數(shù)rB e [1,n-1];B2:計算橢圓曲線點&= [rB]G= (x2, y2), (x2, y2)即是點&的坐標(biāo)值,G為選取的橢圓曲線參數(shù)。B3 從&中取出域元素x2,若域元素x2為二元擴域數(shù)據(jù),則先要將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),若域元素x2為素域數(shù)據(jù),則無需轉(zhuǎn)換,可直接進(jìn)行后續(xù)操作;接著,計算用戶B側(cè)
的中間參數(shù)g,^ = 2W + (x2 & (2W -1));B4 計算& = (dB + x^-rB)modn ,其中,tB為用戶B側(cè)的中間參數(shù),dB為用戶
B本地保存的私鑰、rB為用戶B本地產(chǎn)生的隨機數(shù)。B5 驗證&是否滿足橢圓曲線方程(采用素域方式或二元擴域方式可預(yù)先與用戶A約定,雙方采用相同的橢圓曲線方程),若不滿足則確定本次密鑰協(xié)商失敗,若滿足,則從&中取出域元素xl,若域元素Xl為二元擴域域數(shù)據(jù),則先要將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),
若域元素Xl為素域數(shù)據(jù),則無需轉(zhuǎn)換,可直接進(jìn)行后續(xù)操作,計算用戶B側(cè)的中間參數(shù)¥, ^ = 2w+(x,&(2w-l));B6 計算橢圓曲線點廠=· ] (ΡΑ + [ ] Ra ) = (χν, >V ),其中,h為選取的橢圓
曲線參數(shù),Pa為用戶A的公鑰,判斷V是否為無窮遠(yuǎn)點(如,xv = 0, yv = 0),若是,則確認(rèn)用戶B密鑰協(xié)商失敗,否則,將域元素xv、yv的數(shù)據(jù)類型轉(zhuǎn)換為比特串;B7:計算Kb = KDF(xv| IyvI Za ZB,klen) ;KB即為用戶B通過密鑰協(xié)商獲得的密鑰數(shù)據(jù),此時,可默認(rèn)用戶B的密鑰協(xié)商成功??蛇x地,在執(zhí)行B7后,用戶B還可以進(jìn)一步執(zhí)行B8 B8 將Ra的坐標(biāo)xl、yl和&的坐標(biāo)x2、y2的數(shù)據(jù)類型均轉(zhuǎn)換為比特串,計算& = Hash (0x02 |yv| Hash(xv |ZA| Zb X1My1 X2 |y2)),HashO 可以看作是密碼雜湊函數(shù) HvO,&可以看作是運算獲得的一雜湊值。B9 將&發(fā)送給用戶A,若執(zhí)行了 B8,則還需進(jìn)一步將&發(fā)送給用戶A ;用戶A A4 從&中取出域元素xl,若域元素xl為二元擴域數(shù)據(jù),則先要將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),若域元素xl為素域數(shù)據(jù),則無需轉(zhuǎn)換,可直接進(jìn)行后續(xù)操作,計算中間參數(shù);, 〒=2"+(^&(2"-1));A5 計算G = ( 4+^τ4)πιο η ,其中,tA為用戶A側(cè)的中間參數(shù),dA為用戶A本地保存的私鑰、rA為用戶A本地產(chǎn)生的隨機數(shù)。A6 驗證&是否滿足橢圓曲線方程(與用戶B約定),若不滿足,則確定本次密鑰協(xié)商失??;否則,從&中取出域元素x2,若域元素x2為二元擴域域數(shù)據(jù),則先要將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),若域元素x2為素域數(shù)據(jù),則無需轉(zhuǎn)換,可直接進(jìn)行后續(xù)操作,計算中間參數(shù)Α7 計算橢圓曲線點t/ = [h-tA](PB+[^]RB) = (χυ,γυ),若U是無窮遠(yuǎn)點(如,Xu
=0,= 0),則A協(xié)商失?。环駝t將域元素%、Yu的數(shù)據(jù)類型轉(zhuǎn)換為比特串;A8:計算Ka = KDFUuI IyuI Za |&,klen),Ka即為用戶A通過密鑰協(xié)商獲得的密鑰數(shù)據(jù),此時,可默認(rèn)用戶A的密鑰協(xié)商成功;可選地,在執(zhí)行A8后,若接收到用戶B發(fā)送的SB,則用戶A還可以進(jìn)一步執(zhí)行A9 禾P AlO A9 將Ra的坐標(biāo)xl、yl和&的坐標(biāo)x2、y2的數(shù)據(jù)類型均轉(zhuǎn)換為比特串,計算S1 = Hash (0x02 IyuI Hash(xJ |ZA| Zb X1My1 X2 |y2)),HashO 可以看作是密碼雜湊函數(shù) HvO,S1可以看作是運算獲得的一雜湊值,并檢驗S1 = Sb是否成立,若成立,則確定用戶B 到用戶A的密鑰確認(rèn)成功,若不成立則確定從用戶B到用戶A的密鑰確認(rèn)失??;AlO 計算 \ = Hash(0x03 yj Hash(xJ Za Zb X1 yj X2 |y2)),并將 \ 發(fā)送給用戶B。用戶B :(若接收到用戶A發(fā)送的SA,則用戶B可以繼續(xù)執(zhí)行步驟BlO和Bll)BlO 計算 & = Hash(0x03 yv Hash(xv Za Zb X1 yj X2 |y2)),并檢驗 & = Sa是否成立,若成立,則確定用戶A到用戶B的密鑰確認(rèn)成功,若不成立則確定從用戶A到用戶B的密鑰確認(rèn)失敗。上述過程便是SM2密鑰交換協(xié)議描述的密鑰協(xié)商過程,由此可知,在上述流程中, W參數(shù)值運算公式為w =「(「log2(n)l/ 2)1-1 ,其中n為橢圓曲線參數(shù),稱為階n,階n通常是 160位以上的大整數(shù),如果基于階η直接求取10 (η)的對數(shù)值,然后再進(jìn)行向上取整運算, 在工程實現(xiàn)上是較為復(fù)雜的,也比較耗費計算時間,從而直接降低了密鑰協(xié)商流程的實現(xiàn)效率,提升了密鑰協(xié)商流程的實現(xiàn)復(fù)雜度。

發(fā)明內(nèi)容
本發(fā)明實施例提供一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法及裝置,用以降低密鑰協(xié)商流程的實現(xiàn)復(fù)雜度,提高密鑰協(xié)商流程的實現(xiàn)效率。本發(fā)明實施例提供的具體技術(shù)方案如下一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法,包括確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計算所述階η小于或等于2Χ時,X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值;基于所述W的取值與協(xié)商對端進(jìn)行密鑰協(xié)商。一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商裝置,包括第一控制模塊,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值,并計算所述階η小于或等于2Χ時,X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù) W的取值;
第二控制模塊,用于基于所述W的取值與協(xié)商對端進(jìn)行密鑰協(xié)商。一種參數(shù)生成裝置,包括確定單元,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計算單元,用于計算所述階η小于或等于2Χ時,X的最小正整數(shù)值,并基于獲得的 X的最小正整數(shù)值獲得參數(shù)W的取值。本發(fā)明實施例中,協(xié)商雙方均根據(jù)令不等式η < 2Χ成立的X取值中的最小正整數(shù)值,來計算參數(shù)W,并根據(jù)該參數(shù)W與協(xié)商對端進(jìn)行基于SM2密鑰交換協(xié)議的密鑰協(xié)商。相較于采用先計算log2(n)對數(shù)值再向上取整的方式計算參數(shù)W的方法,有效地減少了計算量,并且降低了算法的實現(xiàn)復(fù)雜度,從而在很大程度上提高了基于SM2密鑰交換協(xié)議的密鑰協(xié)商流程的實現(xiàn)效率,進(jìn)而優(yōu)化了 SM2密鑰交換協(xié)議的工程化實現(xiàn)。


圖IA為本發(fā)明實施例中密鑰協(xié)商裝置功能結(jié)構(gòu)示意圖;圖IB為本發(fā)明實施例中參數(shù)W生成裝置功能結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例中進(jìn)行密鑰協(xié)商的流程圖;圖3為本發(fā)明實施例中生成參數(shù)W的第一種方法流程圖;圖4為本發(fā)明實施例中生成參數(shù)W的第二種方法流程圖。
具體實施例方式在基于SM2密鑰交換協(xié)議的密鑰協(xié)商過程中,為了降低密鑰協(xié)商流程的執(zhí)行復(fù)雜度,提高密鑰協(xié)商流程的實現(xiàn)效率,本發(fā)明實施例中,進(jìn)行密鑰協(xié)商的雙方不再采用 「log2( )l來計算參數(shù)W,而是求取滿足η < 2Χ中X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值(例如,將X的最小正整數(shù)值替代的運算結(jié)果代入公式 W = [([Iog2 ( )1 / 2” -1中計算W的取值),然后,再基于采用這種方式計算出的W值與對端進(jìn)行密鑰協(xié)商。下面仍以用戶A和用戶B為例,結(jié)合附圖對本發(fā)明優(yōu)選的實施方式進(jìn)行詳細(xì)說明。參閱圖IA所示,本發(fā)明實施例中,基于SM2密鑰交換協(xié)議的密鑰協(xié)商雙方中,任意一方使用的密鑰協(xié)商裝置(可以是用戶Α,也可以是用戶B)包括第一控制模塊10和第二控制模塊11,其中,第一控制模塊10,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值,并計算階η小于或等于2Χ時,X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W 的取值;第二控制模塊11,用于基于上述參數(shù)W的取值與協(xié)商對端進(jìn)行密鑰協(xié)商。如圖IA所示,第二控制模塊11內(nèi)部又可細(xì)分為若干以軟件形式實現(xiàn)的功能單元和以硬件形式實現(xiàn)的功能單元,這些功能單元的作用將在后續(xù)實施例中進(jìn)行詳細(xì)介紹,另一方面,圖IA所示的第二控制模塊11內(nèi)部的功能單元的劃分方式僅為一種舉例,實現(xiàn)應(yīng)用中可以根據(jù)具體的應(yīng)用環(huán)境而另行規(guī)劃,在此不再贅述。另一方面,實際應(yīng)用中,第一控制模塊10可以是密鑰協(xié)商裝置中設(shè)置的邏輯模塊,也可以是具有獨立運行功能的子裝置,參閱圖IB所示,本發(fā)明實施例中,第一控制模塊10包括確定單元100和計算單元101,其中,確定單元100,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計算單元101,用于計算階η小于或等于2Χ時,X的最小正整數(shù)值,并基于獲得的 X的最小正整數(shù)值獲得參數(shù)W的取值。基于上述技術(shù)方案,參閱圖2所示,本發(fā)明實施例中,SM2密鑰協(xié)商雙方中的任意一方(可以是用戶Α,也可以是用戶B)所執(zhí)行的具體流程如下步驟200 確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值。通常階η的取值會預(yù)先設(shè)置,用戶A和用戶B在SM2密鑰協(xié)商流程的啟動階段,會約定采用的橢圓曲線的方程,以及向?qū)Χ税l(fā)送自身采用的公鑰,即Pa和IV步驟210 計算確定的階η小于或等于2的X次方時,X的最小正整數(shù)值,即確定令不等式η < 2Χ成立的X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值。本實施例中,在確定令不等式η < 2Χ成立的X的最小正整數(shù)值時,執(zhí)行的具體操作如下參閱圖3和圖4所示,密鑰協(xié)商裝置需要先確定階η的有效比特數(shù)m,即從高位第一個非0比特位算起,階η包含的比特總數(shù)目;然后,將階η的取值與2"進(jìn)行大小比較,即判斷η > 21"-1 ?若是,則直接將m的當(dāng)前取值作為X的最小正整數(shù)值;否則,采用設(shè)定步長值(如,步長值為1)對m逐次進(jìn)行減小,每減少一次,判斷一次η > 21"-1 ?直到該不等式成立為止,并將m減少后的最后取值作為X的最小正整數(shù)值。本實施例中,在獲得X的最小正整數(shù)值后,在基于X的最小正整數(shù)值計算參數(shù)W的取值時,可以采用多種方式例如參閱圖3所示,可以先判斷最后獲得的m的奇偶性(即X的最小正整數(shù)取值的奇偶性),若m為奇數(shù),則將m除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后的結(jié)果作為參數(shù)W的取值,如,采用公式w = L /2」計算參數(shù)W的取值,其中丄」為向下取整操作,m為X的最小正整數(shù);若m為偶數(shù),則將m除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后再減去第二預(yù)設(shè)參數(shù)的結(jié)果作為參數(shù)W的取值,如,采用公式w = ^/2」—1計算參數(shù)W的取值,其中,2為第一預(yù)設(shè)參數(shù), 1為第二預(yù)設(shè)參數(shù)。又例如,參閱圖4所示,可以先判斷最后獲得的m的奇偶性(即X的最小正整數(shù)取值的奇偶性),若m為奇數(shù),則將m右移設(shè)定位數(shù)后的結(jié)果作為參數(shù)W的取值,如,采用公式 w = m>> 1計算參數(shù)W的取值,其中,>>為向右移位操作,1為右移的設(shè)定位數(shù),m >> 1 即表示將m的當(dāng)前取值的最低位(二元擴域形式)刪除,再將最高位補零;若m為偶數(shù),則將m右移設(shè)定位數(shù)后再減去第三預(yù)設(shè)參數(shù)的結(jié)果作為參數(shù)W的取值,如,采用公式w = (m >> 1)"1計算參數(shù)W的取值,其中,第一個1為右移設(shè)定位數(shù),第二個1為第三預(yù)設(shè)參數(shù)。步驟220 基于獲得的參數(shù)W的取值與協(xié)商對端進(jìn)行密鑰協(xié)商。參閱圖2所示,實現(xiàn)SM2密鑰交換協(xié)議的密鑰協(xié)商裝置即可作為發(fā)起方用戶A,也可作為響應(yīng)方用戶B,其中,第一控制模塊10即是計算參數(shù)W的運算模塊,密鑰協(xié)商裝置通過第一控制模塊10獲得參數(shù)W后,與對端進(jìn)行密鑰協(xié)商的過程如下在SM2密鑰交換協(xié)議流程啟動后,用戶發(fā)起方A和用戶響應(yīng)方B通過各自使用的密鑰協(xié)商裝置內(nèi)設(shè)置的第一控制模塊10分別獲得相應(yīng)的參數(shù)W,接著,用戶A通過密鑰協(xié)商裝置內(nèi)的第二控制模塊11計算隨機數(shù)和橢圓曲線點,其中,第二控制模塊11可以通過硬件方式實現(xiàn),參閱圖1所示,用戶A可以通過第二控制模塊11內(nèi)的隨機數(shù)發(fā)生單元生成隨機數(shù)rAe [l,n-l],而ECC運算單元可以基于生成的隨機數(shù)產(chǎn)生橢圓曲線點I A= [rA]G= (Xl,yi),同時,第二控制模塊11將本密鑰協(xié)商裝置中密鑰存儲子模塊內(nèi)保存的參與本次密鑰協(xié)商所用到的私鑰dA相對應(yīng)的公鑰Pa取出,并將公鑰Pa 通過本地以軟件形式實現(xiàn)的通信接口將橢圓曲線點&和公鑰Pa發(fā)送給用戶B ;用戶B使用的密鑰協(xié)商裝置B從用戶A接收的信息中主要包括對方公鑰Pa、對方橢圓曲線點IV對方用戶信息4,同時獲取本地用戶信息4、橢圓曲線余因子參數(shù)h、協(xié)商密鑰預(yù)期長度klen ;用戶B采用本地第二控制模塊11計算隨機數(shù)和橢圓曲線點,其中,第二控制模塊 11可以通過硬件方式實現(xiàn),如,用戶B可以通過第二控制模塊11內(nèi)的隨機數(shù)發(fā)生單元生成隨機數(shù)rB e [1,n-1],接著,通過第二控制模塊11內(nèi)的ECC運算單元可以基于生成的隨機數(shù)產(chǎn)生橢圓曲線點[rB]G= (x2,y2),同時,第二控制模塊11將本密鑰協(xié)商裝置中密鑰存儲單元內(nèi)保存的參與本次密鑰協(xié)商所用到的私_dB相對應(yīng)的公鑰取出,并通過本地以軟件形式實現(xiàn)的通信接口將橢圓曲線點&和公鑰I3b發(fā)送給用戶A ;接著,用戶B可以采用本地第二控制模塊11內(nèi)以軟件形式實現(xiàn)的數(shù)據(jù)類型轉(zhuǎn)換單元將獲得的域元素X1和&的數(shù)據(jù)類型轉(zhuǎn)化成整數(shù)數(shù)據(jù)類型,然后,調(diào)用第二控制單元11內(nèi)以軟件形式實現(xiàn)的I參數(shù)運算單元,基于已獲得的參數(shù)W,采用公式7 = 2W+(χ &C2w-;i) 分別計算出參數(shù)i和g,其中,X1為橢圓曲線點&的橫坐標(biāo),X2為橢圓曲線點&橫坐標(biāo),此處便使用到了采用本發(fā)明實施例提供的方案生成的參數(shù)W。接著,用戶B通過密鑰協(xié)商裝置將對端公鑰Pa、對端橢圓曲線點I A、本地采用的橢圓曲線余因子參數(shù)h、參數(shù)f、參數(shù)g傳輸至第二控制模塊11內(nèi)的硬件實現(xiàn)部分,并調(diào)用其
中的大整數(shù)運算單元完成G = +iTdmod 運算,其中私鑰dB是從第二控制模塊Ii 中以硬件形式實現(xiàn)的密鑰存儲單元中讀取出的,相關(guān)運算主要包括,先采用大整數(shù)模乘運算計算出/ = (。Α)ηκχ1 ,再采用大整數(shù)模加運算計算出、=(dB+l)modn ;用戶B繼續(xù)調(diào)用上述大整數(shù)運算單元完成f = [h · tB]運算,相關(guān)運算主要包括大整數(shù)乘運算。然后,用戶B采用第二控制模塊11內(nèi)以硬件形式實現(xiàn)的ECC運算單元完成&是否
滿足橢圓曲線方程的驗證,再完成「= /(尺+[^]化)=(而,凡)運算,相關(guān)運算主要包括通過ECC點乘運算計算出s = ,通過ECC點加運算計算出g = PA+s,然后再次通過ECC點乘運算計算出V = f · g = (xv, yv)。用戶B通過密鑰協(xié)商裝置中的第二控制模塊11將&是否滿足橢圓曲線方程的驗證結(jié)果及橢圓曲線點V= (xv, yv)傳輸至軟件實現(xiàn)部分,如果&不滿足橢圓曲線方程,或, V = (xv,yv)為橢圓曲線無窮遠(yuǎn)點,則結(jié)束運算;否則用戶B通過第二控制模塊11中以軟件形式實現(xiàn)的數(shù)據(jù)類型轉(zhuǎn)換單元將橢圓曲線點V= (xv, yv)中橫坐標(biāo)xv和縱坐標(biāo)”的數(shù)據(jù)類型轉(zhuǎn)換為比特串?dāng)?shù)據(jù)類型,用戶B通過第二控制模塊11中以軟件形式實現(xiàn)的密鑰派生單元計算用戶B本地的協(xié)商密鑰Kb = KDF(xv| |yv| Za | ZB,klen),至此,用戶B可以默認(rèn)密鑰協(xié)商成功。當(dāng)然,可選的,用戶B還可以進(jìn)一步通過第二控制模塊11中通過軟件形式實現(xiàn)的數(shù)據(jù)類型轉(zhuǎn)換單元將橢圓曲線點K= (Xl,yi)橫坐標(biāo)X1、縱坐Sy1和橢圓曲線點U2, I2)橫坐標(biāo)&、縱坐標(biāo)72的數(shù)據(jù)類型轉(zhuǎn)換為比特串?dāng)?shù)據(jù)類型,然后,通過第二控制模塊11中以軟件形式實現(xiàn)的密碼雜湊計算單元計算出如下校驗信息Sb = Hash (0x02 yv Hash(xv Za Zb X1 yj X2 y2))S2 = Hash (0x03 yv Hash(xv Za Zb X1 yj X2 y2))用戶B將校驗信息&通過以軟件形式的傳輸接口傳輸?shù)接脩鬉。發(fā)起方A所屬密鑰協(xié)商裝置接收用戶B發(fā)送的信息,獲得用戶B的公鑰IV用戶B 橢圓曲線點&、用戶B的用戶信息Zb、以及獲取本地用戶信息Za、橢圓曲線余因子參數(shù)h、協(xié)商密鑰預(yù)期長度klen,而后采用與用戶B相同的流程計算出的Ka = KDF (xj yj Za Zb, klen)至此,發(fā)起方A也可以默認(rèn)密鑰協(xié)商成功。進(jìn)一步地,若用戶A接收到用戶B發(fā)送的校驗信息&,則也需要采用相同流程計算出以下驗證信息S1 = Hash(0x02 yj Hash(xJ |ZA| Zb X1 yj X2 y2))Sa = Hash(0x03 yj Hash(xJ |ZA| Zb X1 yj X2 y2))然后校驗S1是否與&相等,如果相等,則確認(rèn)密鑰協(xié)商成功,若不相等,則確認(rèn)密鑰協(xié)商失敗,并將Sa發(fā)送給用戶B ;用戶B驗證Sa是否等于S2,如果相等,則確認(rèn)密鑰協(xié)商成功,如果不相等,則確認(rèn)密鑰協(xié)商失敗。至此,SM2密鑰交換協(xié)議中制定的SM2密鑰協(xié)商流程完全結(jié)束。綜上所述,本發(fā)明實施例中,協(xié)商雙方均根據(jù)令不等式η < 2X成立的X取值中的最小正整數(shù)值,來計算參數(shù)W,并根據(jù)該參數(shù)W與協(xié)商對端進(jìn)行基于SM2密鑰交換協(xié)議的密鑰協(xié)商。其中,參數(shù)W的計算過程,可以在實際協(xié)商流程啟動之前執(zhí)行,或者,在實際協(xié)商流程啟動之后執(zhí)行,均可實現(xiàn)相同效果。相較于采用先計算log2(n)對數(shù)值再向上取整的方式計算參數(shù)W的方法,有效地減少了計算量,并且降低了算法的實現(xiàn)復(fù)雜度,從而在很大程度上提高了基于SM2密鑰交換協(xié)議的密鑰協(xié)商流程的實現(xiàn)效率,進(jìn)而優(yōu)化了 SM2密鑰交換協(xié)議的工程化實現(xiàn)。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法,其特征在于,包括確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計算所述階η小于或等于2Χ時,X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值;基于所述參數(shù)W的取值與協(xié)商對端進(jìn)行密鑰協(xié)商。
2.如權(quán)利要求1所述的方法,其特征在于,計算所述階η小于或等于2Χ時,X的最小正整數(shù)值,包括獲取所述階η的有效比特數(shù)m ;判斷階η的取值是否大于2"1-1的取值,若是,則直接將m的當(dāng)前取值作為所述X的最小正整數(shù)值;否則,采用設(shè)定步長值對m逐次進(jìn)行減小,每減少一次,將階η的取值與2"1-1的取值進(jìn)行一次比較,直到前者大于后者為止,并將m的最后取值作為所述X的最小正整數(shù)值。
3.如權(quán)利要求2所述的方法,其特征在于,基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值,包括判斷X的最小正整數(shù)值為奇數(shù)還是偶數(shù),若為奇數(shù),則將X的最小正整數(shù)值除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后的結(jié)果作為參數(shù)W的取值;若為偶數(shù),則將X的最小正整數(shù)值除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后再減去第二預(yù)設(shè)參數(shù)。
4.如權(quán)利要求2所述的方法,其特征在于,基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值,包括判斷X的最小正整數(shù)值為奇數(shù)還是偶數(shù),若為奇數(shù),則將X的最小正整數(shù)值右移設(shè)定位數(shù)后的結(jié)果作為參數(shù)W的取值;若為偶數(shù),則將X的最小正整數(shù)值右移設(shè)定位數(shù)后再減去第三預(yù)設(shè)參數(shù)的結(jié)果作為參數(shù)W的取值。
5.如權(quán)利要求1-4任一項所述的方法,其特征在于,基于所述W的取值與協(xié)商對端進(jìn)行密鑰協(xié)商,包括接收協(xié)商對端發(fā)送的對端公鑰pA、對端橢圓曲線點&、對端用戶信息zA,以及獲取本地用戶信息4、本地私鑰dB、本地生成的隨機數(shù)rB、本地生成的橢圓曲線點&、本地橢圓曲線余因子參數(shù)h和協(xié)商密鑰預(yù)期長度klen ;基于已獲得的參數(shù)W,分別根據(jù)橢圓曲線點&的橫坐標(biāo)X1和橢圓曲線點&的橫坐標(biāo) &,采用SM2密鑰交換協(xié)議規(guī)定的方式生成相應(yīng)的參數(shù);和根據(jù)本地橢圓曲線余因子參數(shù)h,本地私鑰dB,所述參數(shù);和i、對端公鑰Pa、對端橢圓曲線點I A,本地生成隨機數(shù)rB,采用SM2密鑰交換協(xié)議規(guī)定的方式生成橢圓曲線點V,其坐標(biāo)值為(χν,yv);根據(jù)橢圓曲線點V的橫坐標(biāo)χν和縱坐標(biāo)yv,對端用戶信息ZA,本地用戶信息ZB,以及協(xié)商密鑰預(yù)期長度klen,采用SM2密鑰交換協(xié)議規(guī)定的方式生成本地協(xié)商密鑰KB。
6.如權(quán)利要求5的方法,其特征在于,生成本地協(xié)商密鑰Kb后,包括默認(rèn)與協(xié)商對端的密鑰協(xié)商成功;或者,根據(jù)所述橢圓曲線點的橫坐標(biāo)χν和縱坐標(biāo)yv,橢圓曲線點&的橫坐標(biāo)X1和縱坐標(biāo)y1; 橢圓曲線點&的橫坐標(biāo)&和縱坐標(biāo)y2,對端用戶信息ZA,本地用戶信息ZB,采用SM2密鑰交換協(xié)議規(guī)定的方式計算驗證信息&和驗證信息&,并將驗證信息&發(fā)送至協(xié)商對端,令協(xié)商對端接收到驗證信息&后,采用相同方式生成驗證信息\和驗證信息S1,并在確認(rèn)&和 S1相等時,確定本地至協(xié)商對端的密鑰協(xié)商成功,以及接收協(xié)商對端發(fā)送的驗證信息\,并在確認(rèn)\和&相等時,確定協(xié)商對端至本地的密鑰協(xié)商成功。
7.一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商的裝置,其特征在于,包括第一控制模塊,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值,并計算所述階η小于或等于2Χ時,X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值;第二控制模塊,用于基于所述參數(shù)W的取值與協(xié)商對端進(jìn)行密鑰協(xié)商。
8.如權(quán)利要求7所述的裝置,其特征在于,所述第一控制模塊計算所述階η小于或等于 2Χ時,X的最小正整數(shù)值時,獲取所述階η的有效比特數(shù)m,判斷階η的取值是否大于2"1.1的取值,若是,則直接將m的當(dāng)前取值作為所述X的最小正整數(shù)值;否則,采用設(shè)定步長值對m 逐次進(jìn)行減小,每減少一次,將階η的取值與2"1-1的取值進(jìn)行一次比較,直到前者大于后者為止,并將m的最后取值作為所述X的最小正整數(shù)值。
9.如權(quán)利要求8所述的裝置,其特征在于,所述第一控制模塊基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值時,判斷X的最小正整數(shù)值為奇數(shù)還是偶數(shù),若為奇數(shù),則將X的最小正整數(shù)值除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后的結(jié)果作為參數(shù)W的取值;若為偶數(shù),則將X的最小正整數(shù)值除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后再減去第二預(yù)設(shè)參數(shù)后的結(jié)果作為參數(shù)W的取值。
10.如權(quán)利要求8所述的裝置,其特征在于,所述第一控制模塊基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值時,判斷X的最小正整數(shù)值為奇數(shù)還是偶數(shù),若為奇數(shù),則將X的最小正整數(shù)值右移設(shè)定位數(shù)后的結(jié)果作為參數(shù)W的取值;若為偶數(shù),則將X的最小正整數(shù)值右移設(shè)定位數(shù)后再減去第三預(yù)設(shè)參數(shù)的結(jié)果作為參數(shù)W的取值。
11.如權(quán)利要求8-10任一項所述的裝置,其特征在于,所述第二控制模塊基于所述W的取值與協(xié)商對端進(jìn)行密鑰協(xié)商時,執(zhí)行以下操作接收協(xié)商對端發(fā)送的對端公鑰PA、對端橢圓曲線點I、對端用戶信息T^,以及獲取本地用戶信息4、本地私鑰dB、本地生成的隨機數(shù)rB、本地生成的橢圓曲線點&、本地橢圓曲線余因子參數(shù)h和協(xié)商密鑰預(yù)期長度klen ;基于已獲得的參數(shù)W,分別根據(jù)橢圓曲線點&的橫坐標(biāo)X1和橢圓曲線點&的橫坐標(biāo) &,采用SM2密鑰交換協(xié)議規(guī)定的方式生成相應(yīng)的參數(shù);和根據(jù)本地橢圓曲線余因子參數(shù)h,本地私鑰dB,所述參數(shù);和i、對端公鑰Pa、對端橢圓曲線點I A,本地生成的隨機數(shù)rB,采用SM2密鑰交換協(xié)議規(guī)定的方式生成橢圓曲線點V,其坐標(biāo)值為(xv,yv);根據(jù)橢圓曲線點V的橫坐標(biāo)χν和縱坐標(biāo)yv,對端用戶信息ZA,本地用戶信息ZB,以及協(xié)商密鑰預(yù)期長度klen,采用SM2密鑰交換協(xié)議規(guī)定的方式生成本地協(xié)商密鑰KB。
12.如權(quán)利要求11的裝置,其特征在于,所述第一控制模塊生成本地協(xié)商密鑰Kb后,默認(rèn)與協(xié)商對端的密鑰協(xié)商成功;或者,根據(jù)所述橢圓曲線點的橫坐標(biāo)xv和縱坐標(biāo)yv,橢圓曲線點&的橫坐標(biāo)X1和縱坐標(biāo)yi,橢圓曲線點&的橫坐標(biāo)&和縱坐標(biāo)y2,對端用戶信息ZA, 本地用戶信息&,采用SM2密鑰交換協(xié)議規(guī)定的方式計算驗證信息&和驗證信息&,并將驗證信息&發(fā)送至協(xié)商對端,令協(xié)商對端接收到驗證信息&后,采用相同方式生成驗證信息\和驗證信息S1,并在確認(rèn)&和S1相等時,確定本地至協(xié)商對端的密鑰協(xié)商成功,以及接收協(xié)商對端發(fā)送的驗證信息SA,并在確認(rèn)Sa和&相等時,確定協(xié)商對端至本地的密鑰協(xié)商成功。
13.一種參數(shù)生成裝置,其特征在于,包括確定單元,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計算單元,用于計算所述階η小于或等于2Χ時,X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值。
14.如權(quán)利要求13所述的裝置,其特征在于,所述計算單元計算所述階η小于或等于2Χ 時,X的最小正整數(shù)值時,獲取所述階η的有效比特數(shù)m,并判斷階η的取值是否大于2"1.1的取值,若是,則直接將m的當(dāng)前取值作為所述X的最小正整數(shù)值;否則,采用設(shè)定步長值對m 逐次進(jìn)行減小,每減少一次,將階η的取值與2"1-1的取值進(jìn)行一次比較,直到前者大于后者為止,并將m的最后取值作為所述X的最小正整數(shù)值。
15.如權(quán)利要求13所述的裝置,其特征在于,所述計算單元基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值時,判斷X的最小正整數(shù)值為奇數(shù)還是偶數(shù),若為奇數(shù),則將X的最小正整數(shù)值除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后的結(jié)果作為參數(shù)W的取值;若為偶數(shù),則將 X的最小正整數(shù)值除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后再減去第二預(yù)設(shè)參數(shù)的結(jié)果作為參數(shù)W的取值。
16.如權(quán)利要求13所述的裝置,其特征在于,所述計算單元基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值時,判斷X的最小正整數(shù)值為奇數(shù)還是偶數(shù),若為奇數(shù),則將X的最小正整數(shù)值右移設(shè)定位數(shù)后的結(jié)果作為參數(shù)W的取值;若為偶數(shù),則將X的最小正整數(shù)值右移設(shè)定位數(shù)后再減去第三預(yù)設(shè)參數(shù)的結(jié)果作為W的取值。
全文摘要
本發(fā)明涉及信息技術(shù)領(lǐng)域,公開了一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法及裝置。該方法為協(xié)商雙方均根據(jù)令不等式n≤2x成立的X取值中的最小正整數(shù)值,來計算參數(shù)W,并根據(jù)該參數(shù)W與協(xié)商對端進(jìn)行密鑰協(xié)商。相較于采用先計算log2(n)對數(shù)值再向上取整的方式計算參數(shù)W的方法,有效地減少了計算量,并且降低了算法的實現(xiàn)復(fù)雜度,從而在很大程度上提高了基于SM2密鑰交換協(xié)議的密鑰協(xié)商流程的實現(xiàn)效率,進(jìn)而優(yōu)化了SM2密鑰交換協(xié)議的工程化實現(xiàn)。
文檔編號H04L9/08GK102412971SQ20111039056
公開日2012年4月11日 申請日期2011年11月30日 優(yōu)先權(quán)日2011年11月30日
發(fā)明者李志勇, 顏湘 申請人:西安西電捷通無線網(wǎng)絡(luò)通信股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1