專利名稱:基于sm2密鑰交換協(xié)議的密鑰協(xié)商方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法
及裝置。
背景技術(shù):
2010年12月中國(guó)國(guó)家密碼管理局將SM2、SM3密碼算法公開,標(biāo)志著SM2、SM3密碼算法進(jìn)入了商用化階段。SM2密鑰交換協(xié)議作為SM2密碼算法的一個(gè)組成部分,其在密鑰管理和密鑰協(xié)商功能領(lǐng)域得到很好的應(yīng)用。在SM2密鑰交換協(xié)議工程實(shí)現(xiàn)過(guò)程中,W參數(shù)作為密鑰交換協(xié)議內(nèi)的一個(gè)重要參數(shù),其參數(shù)值的生成運(yùn)算效率成為整個(gè)密鑰交換協(xié)議實(shí)現(xiàn)效率的決定性因素?;赟M2密鑰交換協(xié)議的規(guī)定,現(xiàn)有的密鑰協(xié)商流程如下假設(shè)用戶A為密鑰協(xié)商發(fā)起方,而用戶B為密鑰協(xié)商響應(yīng)方,用戶A和用戶B協(xié)商獲得的密鑰數(shù)據(jù)的長(zhǎng)度為klen比特,以及用戶A和用戶B雙方使用相同的橢圓曲線方程, 其中,該橢圓曲線方程類型可選擇素域方程y2 = x3+ax+b,也可以選擇二元擴(kuò)域方程y2+xy =x3+ax2+b ο在SM2密鑰交換協(xié)議內(nèi)規(guī)定使用的密鑰派生函數(shù)記為KDF(Z,klen),其作用是從一個(gè)秘密比特串中派生出密鑰數(shù)據(jù),其中,ζ為輸入的秘密比特串,整數(shù)klen表示要獲得的密鑰數(shù)據(jù)的比特長(zhǎng)度,要求該值小于032-1)ν,將長(zhǎng)度為klen的密鑰數(shù)據(jù)比特串記為K。在密鑰數(shù)據(jù)生成的過(guò)程中,密鑰派生函數(shù)需要調(diào)用密碼雜湊函數(shù)(例如,SM3密碼雜湊算法), 通常將密碼雜湊函數(shù)記為HvO,密碼雜湊函數(shù)的輸出是長(zhǎng)度為ν比特的雜湊值。下面介紹密鑰派生函數(shù)運(yùn)算步驟如下(1)、初始化一個(gè)32比特構(gòu)成的計(jì)數(shù)器ct = 0x00000001 ;(2)、分別采用i從1到「- /vl的取值循環(huán)執(zhí)行以下步驟a和步驟b,各次的執(zhí)行結(jié)
果分別記為Hai、Ha2......Ha\k,enivy\、Ha、.\kMv],其中,Up^M為生成的最后一個(gè)t的
取值的部分或全部a、計(jì)算 Hai = hv(Z I I ct) ; | | 為級(jí)聯(lián)運(yùn)算b、ct++;在計(jì)算,Uptwv1時(shí),若klen/v是整數(shù),則令υ「Α/βΛ/ν = 明,若klen/V是非整數(shù),則令^f!「論…為^^編H最左邊的(射⑶-(vxL蹌Wv」))個(gè)比特;⑶、最后,令I(lǐng)= Zfo1 Il Il …Il Hafklenhyi || HaIfklen^ ; κ 便是獲得的密鑰數(shù)據(jù)?;讷@得的密鑰函數(shù),用戶A和用戶B為了獲得相同的密鑰,需要進(jìn)行密鑰協(xié)商, 具體運(yùn)算步驟如下記狄=「(「10&( )]/2)]-1。
用戶A:Al 采用隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù)rA e [1,n-1];A2:計(jì)算橢圓曲線點(diǎn)I A= [rA]G= (x1 Yl), (Χι,Υι)即是點(diǎn)&的坐標(biāo)值,G為選取的橢圓曲線參數(shù)。A3 將&發(fā)送給用戶B ;用戶B:Bl 采用隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù)rB e [1,n-1];B2:計(jì)算橢圓曲線點(diǎn)&= [rB]G= (x2, y2), (x2, y2)即是點(diǎn)&的坐標(biāo)值,G為選取的橢圓曲線參數(shù)。B3 從&中取出域元素x2,若域元素x2為二元擴(kuò)域數(shù)據(jù),則先要將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),若域元素x2為素域數(shù)據(jù),則無(wú)需轉(zhuǎn)換,可直接進(jìn)行后續(xù)操作;接著,計(jì)算用戶B側(cè)
的中間參數(shù)g,^ = 2W + (x2 & (2W -1));B4 計(jì)算& = (dB + x^-rB)modn ,其中,tB為用戶B側(cè)的中間參數(shù),dB為用戶
B本地保存的私鑰、rB為用戶B本地產(chǎn)生的隨機(jī)數(shù)。B5 驗(yàn)證&是否滿足橢圓曲線方程(采用素域方式或二元擴(kuò)域方式可預(yù)先與用戶A約定,雙方采用相同的橢圓曲線方程),若不滿足則確定本次密鑰協(xié)商失敗,若滿足,則從&中取出域元素xl,若域元素Xl為二元擴(kuò)域域數(shù)據(jù),則先要將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),
若域元素Xl為素域數(shù)據(jù),則無(wú)需轉(zhuǎn)換,可直接進(jìn)行后續(xù)操作,計(jì)算用戶B側(cè)的中間參數(shù)¥, ^ = 2w+(x,&(2w-l));B6 計(jì)算橢圓曲線點(diǎn)廠=· ] (ΡΑ + [ ] Ra ) = (χν, >V ),其中,h為選取的橢圓
曲線參數(shù),Pa為用戶A的公鑰,判斷V是否為無(wú)窮遠(yuǎn)點(diǎn)(如,xv = 0, yv = 0),若是,則確認(rèn)用戶B密鑰協(xié)商失敗,否則,將域元素xv、yv的數(shù)據(jù)類型轉(zhuǎn)換為比特串;B7:計(jì)算Kb = KDF(xv| IyvI Za ZB,klen) ;KB即為用戶B通過(guò)密鑰協(xié)商獲得的密鑰數(shù)據(jù),此時(shí),可默認(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)換為比特串,計(jì)算& = Hash (0x02 |yv| Hash(xv |ZA| Zb X1My1 X2 |y2)),HashO 可以看作是密碼雜湊函數(shù) HvO,&可以看作是運(yùn)算獲得的一雜湊值。B9 將&發(fā)送給用戶A,若執(zhí)行了 B8,則還需進(jìn)一步將&發(fā)送給用戶A ;用戶A A4 從&中取出域元素xl,若域元素xl為二元擴(kuò)域數(shù)據(jù),則先要將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),若域元素xl為素域數(shù)據(jù),則無(wú)需轉(zhuǎn)換,可直接進(jìn)行后續(xù)操作,計(jì)算中間參數(shù);, 〒=2"+(^&(2"-1));A5 計(jì)算G = ( 4+^τ4)πιο η ,其中,tA為用戶A側(cè)的中間參數(shù),dA為用戶A本地保存的私鑰、rA為用戶A本地產(chǎn)生的隨機(jī)數(shù)。A6 驗(yàn)證&是否滿足橢圓曲線方程(與用戶B約定),若不滿足,則確定本次密鑰協(xié)商失?。环駝t,從&中取出域元素x2,若域元素x2為二元擴(kuò)域域數(shù)據(jù),則先要將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),若域元素x2為素域數(shù)據(jù),則無(wú)需轉(zhuǎn)換,可直接進(jìn)行后續(xù)操作,計(jì)算中間參數(shù)Α7 計(jì)算橢圓曲線點(diǎn)t/ = [h-tA](PB+[^]RB) = (χυ,γυ),若U是無(wú)窮遠(yuǎn)點(diǎn)(如,Xu
=0,= 0),則A協(xié)商失?。环駝t將域元素%、Yu的數(shù)據(jù)類型轉(zhuǎn)換為比特串;A8:計(jì)算Ka = KDFUuI IyuI Za |&,klen),Ka即為用戶A通過(guò)密鑰協(xié)商獲得的密鑰數(shù)據(jù),此時(shí),可默認(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)換為比特串,計(jì)算S1 = Hash (0x02 IyuI Hash(xJ |ZA| Zb X1My1 X2 |y2)),HashO 可以看作是密碼雜湊函數(shù) HvO,S1可以看作是運(yùn)算獲得的一雜湊值,并檢驗(yàn)S1 = Sb是否成立,若成立,則確定用戶B 到用戶A的密鑰確認(rèn)成功,若不成立則確定從用戶B到用戶A的密鑰確認(rèn)失?。籄lO 計(jì)算 \ = Hash(0x03 yj Hash(xJ Za Zb X1 yj X2 |y2)),并將 \ 發(fā)送給用戶B。用戶B :(若接收到用戶A發(fā)送的SA,則用戶B可以繼續(xù)執(zhí)行步驟BlO和Bll)BlO 計(jì)算 & = Hash(0x03 yv Hash(xv Za Zb X1 yj X2 |y2)),并檢驗(yàn) & = Sa是否成立,若成立,則確定用戶A到用戶B的密鑰確認(rèn)成功,若不成立則確定從用戶A到用戶B的密鑰確認(rèn)失敗。上述過(guò)程便是SM2密鑰交換協(xié)議描述的密鑰協(xié)商過(guò)程,由此可知,在上述流程中, W參數(shù)值運(yùn)算公式為w =「(「log2(n)l/ 2)1-1 ,其中n為橢圓曲線參數(shù),稱為階n,階n通常是 160位以上的大整數(shù),如果基于階η直接求取10 (η)的對(duì)數(shù)值,然后再進(jìn)行向上取整運(yùn)算, 在工程實(shí)現(xiàn)上是較為復(fù)雜的,也比較耗費(fèi)計(jì)算時(shí)間,從而直接降低了密鑰協(xié)商流程的實(shí)現(xiàn)效率,提升了密鑰協(xié)商流程的實(shí)現(xiàn)復(fù)雜度。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法及裝置,用以降低密鑰協(xié)商流程的實(shí)現(xiàn)復(fù)雜度,提高密鑰協(xié)商流程的實(shí)現(xiàn)效率。本發(fā)明實(shí)施例提供的具體技術(shù)方案如下一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法,包括確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計(jì)算所述階η小于或等于2Χ時(shí),X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值;基于所述W的取值與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商。一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商裝置,包括第一控制模塊,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值,并計(jì)算所述階η小于或等于2Χ時(shí),X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù) W的取值;
第二控制模塊,用于基于所述W的取值與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商。一種參數(shù)生成裝置,包括確定單元,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計(jì)算單元,用于計(jì)算所述階η小于或等于2Χ時(shí),X的最小正整數(shù)值,并基于獲得的 X的最小正整數(shù)值獲得參數(shù)W的取值。本發(fā)明實(shí)施例中,協(xié)商雙方均根據(jù)令不等式η < 2Χ成立的X取值中的最小正整數(shù)值,來(lái)計(jì)算參數(shù)W,并根據(jù)該參數(shù)W與協(xié)商對(duì)端進(jìn)行基于SM2密鑰交換協(xié)議的密鑰協(xié)商。相較于采用先計(jì)算log2(n)對(duì)數(shù)值再向上取整的方式計(jì)算參數(shù)W的方法,有效地減少了計(jì)算量,并且降低了算法的實(shí)現(xiàn)復(fù)雜度,從而在很大程度上提高了基于SM2密鑰交換協(xié)議的密鑰協(xié)商流程的實(shí)現(xiàn)效率,進(jìn)而優(yōu)化了 SM2密鑰交換協(xié)議的工程化實(shí)現(xiàn)。
圖IA為本發(fā)明實(shí)施例中密鑰協(xié)商裝置功能結(jié)構(gòu)示意圖;圖IB為本發(fā)明實(shí)施例中參數(shù)W生成裝置功能結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例中進(jìn)行密鑰協(xié)商的流程圖;圖3為本發(fā)明實(shí)施例中生成參數(shù)W的第一種方法流程圖;圖4為本發(fā)明實(shí)施例中生成參數(shù)W的第二種方法流程圖。
具體實(shí)施例方式在基于SM2密鑰交換協(xié)議的密鑰協(xié)商過(guò)程中,為了降低密鑰協(xié)商流程的執(zhí)行復(fù)雜度,提高密鑰協(xié)商流程的實(shí)現(xiàn)效率,本發(fā)明實(shí)施例中,進(jìn)行密鑰協(xié)商的雙方不再采用 「log2( )l來(lái)計(jì)算參數(shù)W,而是求取滿足η < 2Χ中X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值(例如,將X的最小正整數(shù)值替代的運(yùn)算結(jié)果代入公式 W = [([Iog2 ( )1 / 2” -1中計(jì)算W的取值),然后,再基于采用這種方式計(jì)算出的W值與對(duì)端進(jìn)行密鑰協(xié)商。下面仍以用戶A和用戶B為例,結(jié)合附圖對(duì)本發(fā)明優(yōu)選的實(shí)施方式進(jìn)行詳細(xì)說(shuō)明。參閱圖IA所示,本發(fā)明實(shí)施例中,基于SM2密鑰交換協(xié)議的密鑰協(xié)商雙方中,任意一方使用的密鑰協(xié)商裝置(可以是用戶Α,也可以是用戶B)包括第一控制模塊10和第二控制模塊11,其中,第一控制模塊10,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值,并計(jì)算階η小于或等于2Χ時(shí),X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W 的取值;第二控制模塊11,用于基于上述參數(shù)W的取值與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商。如圖IA所示,第二控制模塊11內(nèi)部又可細(xì)分為若干以軟件形式實(shí)現(xiàn)的功能單元和以硬件形式實(shí)現(xiàn)的功能單元,這些功能單元的作用將在后續(xù)實(shí)施例中進(jìn)行詳細(xì)介紹,另一方面,圖IA所示的第二控制模塊11內(nèi)部的功能單元的劃分方式僅為一種舉例,實(shí)現(xiàn)應(yīng)用中可以根據(jù)具體的應(yīng)用環(huán)境而另行規(guī)劃,在此不再贅述。另一方面,實(shí)際應(yīng)用中,第一控制模塊10可以是密鑰協(xié)商裝置中設(shè)置的邏輯模塊,也可以是具有獨(dú)立運(yùn)行功能的子裝置,參閱圖IB所示,本發(fā)明實(shí)施例中,第一控制模塊10包括確定單元100和計(jì)算單元101,其中,確定單元100,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計(jì)算單元101,用于計(jì)算階η小于或等于2Χ時(shí),X的最小正整數(shù)值,并基于獲得的 X的最小正整數(shù)值獲得參數(shù)W的取值?;谏鲜黾夹g(shù)方案,參閱圖2所示,本發(fā)明實(shí)施例中,SM2密鑰協(xié)商雙方中的任意一方(可以是用戶Α,也可以是用戶B)所執(zhí)行的具體流程如下步驟200 確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值。通常階η的取值會(huì)預(yù)先設(shè)置,用戶A和用戶B在SM2密鑰協(xié)商流程的啟動(dòng)階段,會(huì)約定采用的橢圓曲線的方程,以及向?qū)Χ税l(fā)送自身采用的公鑰,即Pa和IV步驟210 計(jì)算確定的階η小于或等于2的X次方時(shí),X的最小正整數(shù)值,即確定令不等式η < 2Χ成立的X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值。本實(shí)施例中,在確定令不等式η < 2Χ成立的X的最小正整數(shù)值時(shí),執(zhí)行的具體操作如下參閱圖3和圖4所示,密鑰協(xié)商裝置需要先確定階η的有效比特?cái)?shù)m,即從高位第一個(gè)非0比特位算起,階η包含的比特總數(shù)目;然后,將階η的取值與2"進(jìn)行大小比較,即判斷η > 21"-1 ?若是,則直接將m的當(dāng)前取值作為X的最小正整數(shù)值;否則,采用設(shè)定步長(zhǎng)值(如,步長(zhǎng)值為1)對(duì)m逐次進(jìn)行減小,每減少一次,判斷一次η > 21"-1 ?直到該不等式成立為止,并將m減少后的最后取值作為X的最小正整數(shù)值。本實(shí)施例中,在獲得X的最小正整數(shù)值后,在基于X的最小正整數(shù)值計(jì)算參數(shù)W的取值時(shí),可以采用多種方式例如參閱圖3所示,可以先判斷最后獲得的m的奇偶性(即X的最小正整數(shù)取值的奇偶性),若m為奇數(shù),則將m除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后的結(jié)果作為參數(shù)W的取值,如,采用公式w = L /2」計(jì)算參數(shù)W的取值,其中丄」為向下取整操作,m為X的最小正整數(shù);若m為偶數(shù),則將m除以第一預(yù)設(shè)參數(shù)并進(jìn)行向下取整后再減去第二預(yù)設(shè)參數(shù)的結(jié)果作為參數(shù)W的取值,如,采用公式w = ^/2」—1計(jì)算參數(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計(jì)算參數(shù)W的取值,其中,>>為向右移位操作,1為右移的設(shè)定位數(shù),m >> 1 即表示將m的當(dāng)前取值的最低位(二元擴(kuò)域形式)刪除,再將最高位補(bǔ)零;若m為偶數(shù),則將m右移設(shè)定位數(shù)后再減去第三預(yù)設(shè)參數(shù)的結(jié)果作為參數(shù)W的取值,如,采用公式w = (m >> 1)"1計(jì)算參數(shù)W的取值,其中,第一個(gè)1為右移設(shè)定位數(shù),第二個(gè)1為第三預(yù)設(shè)參數(shù)。步驟220 基于獲得的參數(shù)W的取值與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商。參閱圖2所示,實(shí)現(xiàn)SM2密鑰交換協(xié)議的密鑰協(xié)商裝置即可作為發(fā)起方用戶A,也可作為響應(yīng)方用戶B,其中,第一控制模塊10即是計(jì)算參數(shù)W的運(yùn)算模塊,密鑰協(xié)商裝置通過(guò)第一控制模塊10獲得參數(shù)W后,與對(duì)端進(jìn)行密鑰協(xié)商的過(guò)程如下在SM2密鑰交換協(xié)議流程啟動(dòng)后,用戶發(fā)起方A和用戶響應(yīng)方B通過(guò)各自使用的密鑰協(xié)商裝置內(nèi)設(shè)置的第一控制模塊10分別獲得相應(yīng)的參數(shù)W,接著,用戶A通過(guò)密鑰協(xié)商裝置內(nèi)的第二控制模塊11計(jì)算隨機(jī)數(shù)和橢圓曲線點(diǎn),其中,第二控制模塊11可以通過(guò)硬件方式實(shí)現(xiàn),參閱圖1所示,用戶A可以通過(guò)第二控制模塊11內(nèi)的隨機(jī)數(shù)發(fā)生單元生成隨機(jī)數(shù)rAe [l,n-l],而ECC運(yùn)算單元可以基于生成的隨機(jī)數(shù)產(chǎn)生橢圓曲線點(diǎn)I A= [rA]G= (Xl,yi),同時(shí),第二控制模塊11將本密鑰協(xié)商裝置中密鑰存儲(chǔ)子模塊內(nèi)保存的參與本次密鑰協(xié)商所用到的私鑰dA相對(duì)應(yīng)的公鑰Pa取出,并將公鑰Pa 通過(guò)本地以軟件形式實(shí)現(xiàn)的通信接口將橢圓曲線點(diǎn)&和公鑰Pa發(fā)送給用戶B ;用戶B使用的密鑰協(xié)商裝置B從用戶A接收的信息中主要包括對(duì)方公鑰Pa、對(duì)方橢圓曲線點(diǎn)IV對(duì)方用戶信息4,同時(shí)獲取本地用戶信息4、橢圓曲線余因子參數(shù)h、協(xié)商密鑰預(yù)期長(zhǎng)度klen ;用戶B采用本地第二控制模塊11計(jì)算隨機(jī)數(shù)和橢圓曲線點(diǎn),其中,第二控制模塊 11可以通過(guò)硬件方式實(shí)現(xiàn),如,用戶B可以通過(guò)第二控制模塊11內(nèi)的隨機(jī)數(shù)發(fā)生單元生成隨機(jī)數(shù)rB e [1,n-1],接著,通過(guò)第二控制模塊11內(nèi)的ECC運(yùn)算單元可以基于生成的隨機(jī)數(shù)產(chǎn)生橢圓曲線點(diǎn)[rB]G= (x2,y2),同時(shí),第二控制模塊11將本密鑰協(xié)商裝置中密鑰存儲(chǔ)單元內(nèi)保存的參與本次密鑰協(xié)商所用到的私_dB相對(duì)應(yīng)的公鑰取出,并通過(guò)本地以軟件形式實(shí)現(xiàn)的通信接口將橢圓曲線點(diǎn)&和公鑰I3b發(fā)送給用戶A ;接著,用戶B可以采用本地第二控制模塊11內(nèi)以軟件形式實(shí)現(xiàn)的數(shù)據(jù)類型轉(zhuǎn)換單元將獲得的域元素X1和&的數(shù)據(jù)類型轉(zhuǎn)化成整數(shù)數(shù)據(jù)類型,然后,調(diào)用第二控制單元11內(nèi)以軟件形式實(shí)現(xiàn)的I參數(shù)運(yùn)算單元,基于已獲得的參數(shù)W,采用公式7 = 2W+(χ &C2w-;i) 分別計(jì)算出參數(shù)i和g,其中,X1為橢圓曲線點(diǎn)&的橫坐標(biāo),X2為橢圓曲線點(diǎn)&橫坐標(biāo),此處便使用到了采用本發(fā)明實(shí)施例提供的方案生成的參數(shù)W。接著,用戶B通過(guò)密鑰協(xié)商裝置將對(duì)端公鑰Pa、對(duì)端橢圓曲線點(diǎn)I A、本地采用的橢圓曲線余因子參數(shù)h、參數(shù)f、參數(shù)g傳輸至第二控制模塊11內(nèi)的硬件實(shí)現(xiàn)部分,并調(diào)用其
中的大整數(shù)運(yùn)算單元完成G = +iTdmod 運(yùn)算,其中私鑰dB是從第二控制模塊Ii 中以硬件形式實(shí)現(xiàn)的密鑰存儲(chǔ)單元中讀取出的,相關(guān)運(yùn)算主要包括,先采用大整數(shù)模乘運(yùn)算計(jì)算出/ = (。Α)ηκχ1 ,再采用大整數(shù)模加運(yùn)算計(jì)算出、=(dB+l)modn ;用戶B繼續(xù)調(diào)用上述大整數(shù)運(yùn)算單元完成f = [h · tB]運(yùn)算,相關(guān)運(yùn)算主要包括大整數(shù)乘運(yùn)算。然后,用戶B采用第二控制模塊11內(nèi)以硬件形式實(shí)現(xiàn)的ECC運(yùn)算單元完成&是否
滿足橢圓曲線方程的驗(yàn)證,再完成「= /(尺+[^]化)=(而,凡)運(yùn)算,相關(guān)運(yùn)算主要包括通過(guò)ECC點(diǎn)乘運(yùn)算計(jì)算出s = ,通過(guò)ECC點(diǎn)加運(yùn)算計(jì)算出g = PA+s,然后再次通過(guò)ECC點(diǎn)乘運(yùn)算計(jì)算出V = f · g = (xv, yv)。用戶B通過(guò)密鑰協(xié)商裝置中的第二控制模塊11將&是否滿足橢圓曲線方程的驗(yàn)證結(jié)果及橢圓曲線點(diǎn)V= (xv, yv)傳輸至軟件實(shí)現(xiàn)部分,如果&不滿足橢圓曲線方程,或, V = (xv,yv)為橢圓曲線無(wú)窮遠(yuǎn)點(diǎn),則結(jié)束運(yùn)算;否則用戶B通過(guò)第二控制模塊11中以軟件形式實(shí)現(xiàn)的數(shù)據(jù)類型轉(zhuǎn)換單元將橢圓曲線點(diǎn)V= (xv, yv)中橫坐標(biāo)xv和縱坐標(biāo)”的數(shù)據(jù)類型轉(zhuǎn)換為比特串?dāng)?shù)據(jù)類型,用戶B通過(guò)第二控制模塊11中以軟件形式實(shí)現(xiàn)的密鑰派生單元計(jì)算用戶B本地的協(xié)商密鑰Kb = KDF(xv| |yv| Za | ZB,klen),至此,用戶B可以默認(rèn)密鑰協(xié)商成功。當(dāng)然,可選的,用戶B還可以進(jìn)一步通過(guò)第二控制模塊11中通過(guò)軟件形式實(shí)現(xiàn)的數(shù)據(jù)類型轉(zhuǎn)換單元將橢圓曲線點(diǎn)K= (Xl,yi)橫坐標(biāo)X1、縱坐Sy1和橢圓曲線點(diǎn)U2, I2)橫坐標(biāo)&、縱坐標(biāo)72的數(shù)據(jù)類型轉(zhuǎn)換為比特串?dāng)?shù)據(jù)類型,然后,通過(guò)第二控制模塊11中以軟件形式實(shí)現(xiàn)的密碼雜湊計(jì)算單元計(jì)算出如下校驗(yà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將校驗(yàn)信息&通過(guò)以軟件形式的傳輸接口傳輸?shù)接脩鬉。發(fā)起方A所屬密鑰協(xié)商裝置接收用戶B發(fā)送的信息,獲得用戶B的公鑰IV用戶B 橢圓曲線點(diǎn)&、用戶B的用戶信息Zb、以及獲取本地用戶信息Za、橢圓曲線余因子參數(shù)h、協(xié)商密鑰預(yù)期長(zhǎng)度klen,而后采用與用戶B相同的流程計(jì)算出的Ka = KDF (xj yj Za Zb, klen)至此,發(fā)起方A也可以默認(rèn)密鑰協(xié)商成功。進(jìn)一步地,若用戶A接收到用戶B發(fā)送的校驗(yàn)信息&,則也需要采用相同流程計(jì)算出以下驗(yàn)證信息S1 = Hash(0x02 yj Hash(xJ |ZA| Zb X1 yj X2 y2))Sa = Hash(0x03 yj Hash(xJ |ZA| Zb X1 yj X2 y2))然后校驗(yàn)S1是否與&相等,如果相等,則確認(rèn)密鑰協(xié)商成功,若不相等,則確認(rèn)密鑰協(xié)商失敗,并將Sa發(fā)送給用戶B ;用戶B驗(yàn)證Sa是否等于S2,如果相等,則確認(rèn)密鑰協(xié)商成功,如果不相等,則確認(rèn)密鑰協(xié)商失敗。至此,SM2密鑰交換協(xié)議中制定的SM2密鑰協(xié)商流程完全結(jié)束。綜上所述,本發(fā)明實(shí)施例中,協(xié)商雙方均根據(jù)令不等式η < 2X成立的X取值中的最小正整數(shù)值,來(lái)計(jì)算參數(shù)W,并根據(jù)該參數(shù)W與協(xié)商對(duì)端進(jìn)行基于SM2密鑰交換協(xié)議的密鑰協(xié)商。其中,參數(shù)W的計(jì)算過(guò)程,可以在實(shí)際協(xié)商流程啟動(dòng)之前執(zhí)行,或者,在實(shí)際協(xié)商流程啟動(dòng)之后執(zhí)行,均可實(shí)現(xiàn)相同效果。相較于采用先計(jì)算log2(n)對(duì)數(shù)值再向上取整的方式計(jì)算參數(shù)W的方法,有效地減少了計(jì)算量,并且降低了算法的實(shí)現(xiàn)復(fù)雜度,從而在很大程度上提高了基于SM2密鑰交換協(xié)議的密鑰協(xié)商流程的實(shí)現(xiàn)效率,進(jìn)而優(yōu)化了 SM2密鑰交換協(xié)議的工程化實(shí)現(xiàn)。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商方法,其特征在于,包括確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計(jì)算所述階η小于或等于2Χ時(shí),X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值;基于所述參數(shù)W的取值與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商。
2.如權(quán)利要求1所述的方法,其特征在于,計(jì)算所述階η小于或等于2Χ時(shí),X的最小正整數(shù)值,包括獲取所述階η的有效比特?cái)?shù)m ;判斷階η的取值是否大于2"1-1的取值,若是,則直接將m的當(dāng)前取值作為所述X的最小正整數(shù)值;否則,采用設(shè)定步長(zhǎng)值對(duì)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任一項(xiàng)所述的方法,其特征在于,基于所述W的取值與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商,包括接收協(xié)商對(duì)端發(fā)送的對(duì)端公鑰pA、對(duì)端橢圓曲線點(diǎn)&、對(duì)端用戶信息zA,以及獲取本地用戶信息4、本地私鑰dB、本地生成的隨機(jī)數(shù)rB、本地生成的橢圓曲線點(diǎn)&、本地橢圓曲線余因子參數(shù)h和協(xié)商密鑰預(yù)期長(zhǎng)度klen ;基于已獲得的參數(shù)W,分別根據(jù)橢圓曲線點(diǎn)&的橫坐標(biāo)X1和橢圓曲線點(diǎn)&的橫坐標(biāo) &,采用SM2密鑰交換協(xié)議規(guī)定的方式生成相應(yīng)的參數(shù);和根據(jù)本地橢圓曲線余因子參數(shù)h,本地私鑰dB,所述參數(shù);和i、對(duì)端公鑰Pa、對(duì)端橢圓曲線點(diǎn)I A,本地生成隨機(jī)數(shù)rB,采用SM2密鑰交換協(xié)議規(guī)定的方式生成橢圓曲線點(diǎn)V,其坐標(biāo)值為(χν,yv);根據(jù)橢圓曲線點(diǎn)V的橫坐標(biāo)χν和縱坐標(biāo)yv,對(duì)端用戶信息ZA,本地用戶信息ZB,以及協(xié)商密鑰預(yù)期長(zhǎng)度klen,采用SM2密鑰交換協(xié)議規(guī)定的方式生成本地協(xié)商密鑰KB。
6.如權(quán)利要求5的方法,其特征在于,生成本地協(xié)商密鑰Kb后,包括默認(rèn)與協(xié)商對(duì)端的密鑰協(xié)商成功;或者,根據(jù)所述橢圓曲線點(diǎn)的橫坐標(biāo)χν和縱坐標(biāo)yv,橢圓曲線點(diǎn)&的橫坐標(biāo)X1和縱坐標(biāo)y1; 橢圓曲線點(diǎn)&的橫坐標(biāo)&和縱坐標(biāo)y2,對(duì)端用戶信息ZA,本地用戶信息ZB,采用SM2密鑰交換協(xié)議規(guī)定的方式計(jì)算驗(yàn)證信息&和驗(yàn)證信息&,并將驗(yàn)證信息&發(fā)送至協(xié)商對(duì)端,令協(xié)商對(duì)端接收到驗(yàn)證信息&后,采用相同方式生成驗(yàn)證信息\和驗(yàn)證信息S1,并在確認(rèn)&和 S1相等時(shí),確定本地至協(xié)商對(duì)端的密鑰協(xié)商成功,以及接收協(xié)商對(duì)端發(fā)送的驗(yàn)證信息\,并在確認(rèn)\和&相等時(shí),確定協(xié)商對(duì)端至本地的密鑰協(xié)商成功。
7.一種基于SM2密鑰交換協(xié)議的密鑰協(xié)商的裝置,其特征在于,包括第一控制模塊,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值,并計(jì)算所述階η小于或等于2Χ時(shí),X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值;第二控制模塊,用于基于所述參數(shù)W的取值與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商。
8.如權(quán)利要求7所述的裝置,其特征在于,所述第一控制模塊計(jì)算所述階η小于或等于 2Χ時(shí),X的最小正整數(shù)值時(shí),獲取所述階η的有效比特?cái)?shù)m,判斷階η的取值是否大于2"1.1的取值,若是,則直接將m的當(dāng)前取值作為所述X的最小正整數(shù)值;否則,采用設(shè)定步長(zhǎng)值對(duì)m 逐次進(jìn)行減小,每減少一次,將階η的取值與2"1-1的取值進(jìn)行一次比較,直到前者大于后者為止,并將m的最后取值作為所述X的最小正整數(shù)值。
9.如權(quán)利要求8所述的裝置,其特征在于,所述第一控制模塊基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值時(shí),判斷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的取值時(shí),判斷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任一項(xiàng)所述的裝置,其特征在于,所述第二控制模塊基于所述W的取值與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商時(shí),執(zhí)行以下操作接收協(xié)商對(duì)端發(fā)送的對(duì)端公鑰PA、對(duì)端橢圓曲線點(diǎn)I、對(duì)端用戶信息T^,以及獲取本地用戶信息4、本地私鑰dB、本地生成的隨機(jī)數(shù)rB、本地生成的橢圓曲線點(diǎn)&、本地橢圓曲線余因子參數(shù)h和協(xié)商密鑰預(yù)期長(zhǎng)度klen ;基于已獲得的參數(shù)W,分別根據(jù)橢圓曲線點(diǎn)&的橫坐標(biāo)X1和橢圓曲線點(diǎn)&的橫坐標(biāo) &,采用SM2密鑰交換協(xié)議規(guī)定的方式生成相應(yīng)的參數(shù);和根據(jù)本地橢圓曲線余因子參數(shù)h,本地私鑰dB,所述參數(shù);和i、對(duì)端公鑰Pa、對(duì)端橢圓曲線點(diǎn)I A,本地生成的隨機(jī)數(shù)rB,采用SM2密鑰交換協(xié)議規(guī)定的方式生成橢圓曲線點(diǎn)V,其坐標(biāo)值為(xv,yv);根據(jù)橢圓曲線點(diǎn)V的橫坐標(biāo)χν和縱坐標(biāo)yv,對(duì)端用戶信息ZA,本地用戶信息ZB,以及協(xié)商密鑰預(yù)期長(zhǎng)度klen,采用SM2密鑰交換協(xié)議規(guī)定的方式生成本地協(xié)商密鑰KB。
12.如權(quán)利要求11的裝置,其特征在于,所述第一控制模塊生成本地協(xié)商密鑰Kb后,默認(rèn)與協(xié)商對(duì)端的密鑰協(xié)商成功;或者,根據(jù)所述橢圓曲線點(diǎn)的橫坐標(biāo)xv和縱坐標(biāo)yv,橢圓曲線點(diǎn)&的橫坐標(biāo)X1和縱坐標(biāo)yi,橢圓曲線點(diǎn)&的橫坐標(biāo)&和縱坐標(biāo)y2,對(duì)端用戶信息ZA, 本地用戶信息&,采用SM2密鑰交換協(xié)議規(guī)定的方式計(jì)算驗(yàn)證信息&和驗(yàn)證信息&,并將驗(yàn)證信息&發(fā)送至協(xié)商對(duì)端,令協(xié)商對(duì)端接收到驗(yàn)證信息&后,采用相同方式生成驗(yàn)證信息\和驗(yàn)證信息S1,并在確認(rèn)&和S1相等時(shí),確定本地至協(xié)商對(duì)端的密鑰協(xié)商成功,以及接收協(xié)商對(duì)端發(fā)送的驗(yàn)證信息SA,并在確認(rèn)Sa和&相等時(shí),確定協(xié)商對(duì)端至本地的密鑰協(xié)商成功。
13.一種參數(shù)生成裝置,其特征在于,包括確定單元,用于確定本次密鑰協(xié)商所使用的橢圓曲線參數(shù)階η的取值;計(jì)算單元,用于計(jì)算所述階η小于或等于2Χ時(shí),X的最小正整數(shù)值,并基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值。
14.如權(quán)利要求13所述的裝置,其特征在于,所述計(jì)算單元計(jì)算所述階η小于或等于2Χ 時(shí),X的最小正整數(shù)值時(shí),獲取所述階η的有效比特?cái)?shù)m,并判斷階η的取值是否大于2"1.1的取值,若是,則直接將m的當(dāng)前取值作為所述X的最小正整數(shù)值;否則,采用設(shè)定步長(zhǎng)值對(duì)m 逐次進(jìn)行減小,每減少一次,將階η的取值與2"1-1的取值進(jìn)行一次比較,直到前者大于后者為止,并將m的最后取值作為所述X的最小正整數(shù)值。
15.如權(quán)利要求13所述的裝置,其特征在于,所述計(jì)算單元基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值時(shí),判斷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所述的裝置,其特征在于,所述計(jì)算單元基于獲得的X的最小正整數(shù)值獲得參數(shù)W的取值時(shí),判斷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ù)值,來(lái)計(jì)算參數(shù)W,并根據(jù)該參數(shù)W與協(xié)商對(duì)端進(jìn)行密鑰協(xié)商。相較于采用先計(jì)算log2(n)對(duì)數(shù)值再向上取整的方式計(jì)算參數(shù)W的方法,有效地減少了計(jì)算量,并且降低了算法的實(shí)現(xiàn)復(fù)雜度,從而在很大程度上提高了基于SM2密鑰交換協(xié)議的密鑰協(xié)商流程的實(shí)現(xiàn)效率,進(jìn)而優(yōu)化了SM2密鑰交換協(xié)議的工程化實(shí)現(xiàn)。
文檔編號(hào)H04L9/08GK102412971SQ20111039056
公開日2012年4月11日 申請(qǐng)日期2011年11月30日 優(yōu)先權(quán)日2011年11月30日
發(fā)明者李志勇, 顏湘 申請(qǐng)人:西安西電捷通無(wú)線網(wǎng)絡(luò)通信股份有限公司