橢圓曲線加密算法在智能密碼鑰匙中的應(yīng)用
作為新一代的公鑰加密體制,相對(duì)其他加密技術(shù)而言,橢圓曲線加密算法在技術(shù)上具有安全性高、生成公私鑰方便、處理速度快和存儲(chǔ)空間小等方面的優(yōu)勢(shì),這些優(yōu)點(diǎn)使得它成為保證智能密碼鑰匙高效的安全機(jī)制的主要算法之一。
一、 安全橢圓曲線的生成
在進(jìn)行數(shù)據(jù)加解密、數(shù)字簽名以及身份驗(yàn)證之前,首先必須確立橢圓曲線。橢圓曲線域參數(shù)(domain_parameters)為一個(gè)七元組T=(m,f(x),a,b,G,n,h)。域參數(shù)的具體描述如下:m指明二次域上的擴(kuò)展指數(shù);f(x)為次數(shù)為m、系數(shù)為0或1的不可約多項(xiàng)式;a、b定義了一個(gè)非超奇異橢圓曲線E(F2m),E(F2m)是由方程y2+xy_=x3+ax2+b(a,b∈F2m,b≠0)的解集合(x,y)連同“無(wú)窮遠(yuǎn)點(diǎn)”O(jiān)組成的點(diǎn)集合;G表示橢圓曲線上的基點(diǎn);n是G的階,且要求為大素?cái)?shù);h是n關(guān)于#E(F2m)的協(xié)因子即h=#E(F2m)/n[2]。
二元域F2m上的安全橢圓曲線的生成要利用到Weil定理,橢圓曲線產(chǎn)生的步驟如下:
Step1:選擇二元域F2m的小擴(kuò)域Fq1(q1=2d),其中d是一個(gè)小整數(shù)并且m能被它整除;
Step2:選擇域Fq1上的一條非超奇異橢圓曲線,因?yàn)閝1很小,所以很容易確定所有可能的橢圓曲線及其上的點(diǎn)數(shù)#E(F2d);
Step3:再計(jì)算域Fq1上的任一擴(kuò)域F2dk上的橢圓曲線的點(diǎn)數(shù)#E(F2dk),這里要求k是素?cái)?shù),dk≥160,這是安全橢圓曲線所要求的位數(shù);
Step4:因?yàn)?E(F2dk)一定包含小因子#E(F2d),計(jì)算橢圓曲線的階為#E(F2dk)/#E(F2d);
Step5:令m=dk,再判斷橢圓曲線的階是否為素?cái)?shù),如果階是素?cái)?shù)且該橢圓能避免MOV攻擊,則該橢圓曲線即是所求。
二、橢圓曲線密碼算法在智能密碼鑰匙中數(shù)據(jù)加解密的應(yīng)用
橢圓曲線密碼算法采用如下流程對(duì)數(shù)據(jù)進(jìn)行加解密:數(shù)據(jù)發(fā)送方先是對(duì)二進(jìn)制明文進(jìn)行編碼,使之對(duì)應(yīng)于橢圓曲線上的明文點(diǎn),再利用加密密鑰對(duì)其進(jìn)行加密,使之對(duì)應(yīng)于橢圓曲線上的密文點(diǎn),之后就可以傳輸了;數(shù)據(jù)接收方收到數(shù)據(jù)后,將其理解為橢圓曲線上的密文點(diǎn),用對(duì)應(yīng)的解密密鑰進(jìn)行解密,得到的數(shù)據(jù)對(duì)應(yīng)于橢圓曲線上的明文點(diǎn),再經(jīng)過(guò)解碼接收方就能得到希望得到的二進(jìn)制明文。加解密流程圖如圖1所示。

下面描述的橢圓曲線加解密過(guò)程是基于橢圓曲線ElGamal公鑰加密算法(Elliptic Curve ElGamal, ECElGamal)的。
1、密鑰生成過(guò)程
在對(duì)傳輸數(shù)據(jù)進(jìn)行加解密前系統(tǒng)要產(chǎn)生相應(yīng)的密鑰對(duì),密鑰對(duì)的生成過(guò)程步驟如下:
(1)在區(qū)間[1,n-1]中隨機(jī)選取一個(gè)整數(shù)KB;
(2)計(jì)算點(diǎn)PB=KBG,其中G(x,y)是F2m上橢圓曲線的基點(diǎn),x,y∈F2m;
(3)公開(kāi)終端B的公鑰PB;
(4)私鑰為整數(shù)KB。
2、加密過(guò)程
假定發(fā)送方A將消息m發(fā)送給接受方B。接受方B有公鑰,且B保留自己的私鑰PB。A對(duì)消息m進(jìn)行加密操作如下:
(1)在區(qū)間[1,n-1]內(nèi)選取一個(gè)隨機(jī)數(shù)k,計(jì)算R=kG的值;
(2)用編碼函數(shù)將明文m嵌入到橢圓曲線上,記作Pm=ENC(m),這是明文編碼過(guò)程;
(3)查找B的公鑰PB,計(jì)算C=Pm+kPB;
(4)傳送加密數(shù)據(jù)(R,C)給B。
3、 解密過(guò)程
接受方B接收到加密數(shù)據(jù)后,執(zhí)行如下解密操作:
(1)根據(jù)等式C-KBR=Pm,從而得到Pm;
(2)用解碼函數(shù)將Pm恢復(fù)而得到消息m,這是明文的解碼過(guò)程。
三、橢圓曲線加密算法在智能密碼鑰匙中數(shù)字簽名的應(yīng)用
數(shù)字簽名方案是由簽名算法和驗(yàn)證簽名算法組成,簽名過(guò)程通常是對(duì)消息摘要進(jìn)行簽名,接受者收到簽名結(jié)果和消息摘要后進(jìn)行驗(yàn)證?;跈E圓曲線算法數(shù)字簽名過(guò)程主要分為密鑰對(duì)的產(chǎn)生、生成簽名和簽名驗(yàn)證3個(gè)部分。在簽名方A和驗(yàn)證方B之間,簽名方A以認(rèn)證方式發(fā)送明文m,驗(yàn)證方B收到后能驗(yàn)證出確實(shí)是A發(fā)送的?;跈E圓曲線加密算法的智能密碼鑰匙的數(shù)字簽名和驗(yàn)證簽名的流程如圖2和圖3所示。

1、密鑰生成過(guò)程
在橢圓曲線數(shù)字簽名過(guò)程中,密鑰對(duì)的產(chǎn)生過(guò)程與前面加解密的密鑰產(chǎn)生過(guò)程一樣。
2、 數(shù)字簽名運(yùn)算過(guò)程
(1)在區(qū)間[1,n-1]內(nèi)選取一個(gè)隨機(jī)數(shù)k;
(2)計(jì)算kG=(x,y),將結(jié)果坐標(biāo)的x值轉(zhuǎn)化為整數(shù),然后求r=xmodn;
(3)計(jì)算k-1modn;
(4)計(jì)算e=SHA-1(m);
(5)將r視作字節(jié)串,計(jì)算s=k-1(e+KAr)modn;
(6)A發(fā)出(r,s)作為消息m的數(shù)字簽名給B。
3、驗(yàn)證簽名運(yùn)算過(guò)程
(1)B收到A發(fā)出的報(bào)文m及其簽名(r,s)后,驗(yàn)證r和s是[1,n-1]上的整數(shù),否則丟棄改簽名;
(2)計(jì)算e=SHA-1(m);
(3)計(jì)算w=s-1modn,n1=ewmodn,n2=rwmodn;
(4)查找獲得用戶A的公鑰PA,計(jì)算(x,y)=n1G+n2PA;
(5)計(jì)算v=xmodn;
(6)B驗(yàn)證是否有v=r,若成立,則接受(r,s)作為A對(duì)報(bào)文m的簽名;否則拒絕。
四、橢圓曲線加密算法在智能密碼鑰匙中身份認(rèn)證的應(yīng)用
橢圓曲線加密算法是采用以下流程來(lái)完成對(duì)用戶PIN碼進(jìn)行驗(yàn)證的,如圖4所示。

(1)用戶輸入PIN碼,USB Key產(chǎn)生隨機(jī)數(shù)N,將PIN碼與N進(jìn)行異或運(yùn)算;
(2)在USB Key中運(yùn)用加密函數(shù),計(jì)算M=f(N⊕PIN,AK),其中AK為密鑰;
(3)提交結(jié)果,將M、AK作為參數(shù)提交給解密函數(shù);
(4)運(yùn)用解密函數(shù)進(jìn)行解密運(yùn)算,計(jì)算N'=f'(M,AK);
(5)將N與PIN進(jìn)行異或運(yùn)算,將異或結(jié)果與N'進(jìn)行比較,若相同則說(shuō)明用戶為合法用戶,否則為非法用戶。
在這個(gè)驗(yàn)證過(guò)程中,USB Key把PIN碼的比較過(guò)程放在USB Key內(nèi)部完成,減少了PIN碼暴露的可能性;并且在信息的傳輸過(guò)程中采用橢圓曲線加密算法,節(jié)省存儲(chǔ)空間和帶寬并且提高了處理速度,從而縮短了USB Key與應(yīng)用程序間傳送數(shù)據(jù)的時(shí)間,很好的滿足了系統(tǒng)安全性能要求。
小知識(shí)之智能密碼鑰匙
智能密碼鑰匙是基于智能卡和USB技術(shù)的數(shù)據(jù)安全產(chǎn)品。該系列產(chǎn)品在Windows2000以上的操作系統(tǒng)中均無(wú)需要安裝驅(qū)動(dòng)操作,可安全有效地儲(chǔ)存數(shù)字證書和密鑰,保護(hù)用戶的身份識(shí)別信息,保證網(wǎng)絡(luò)認(rèn)證雙方身份的真實(shí)性。該產(chǎn)品已廣泛應(yīng)用于網(wǎng)上銀行、網(wǎng)上整卷、電子商務(wù)、電子政務(wù)等領(lǐng)域。










