摘 要: 將RSA密碼體制和橢圓曲線密碼體制作了比較,提出了在SET協(xié)議中使用基于橢圓曲線密碼體制的認(rèn)證、數(shù)字簽名和數(shù)字信封方案。
關(guān)鍵詞: 橢圓曲線密碼體制 SET協(xié)議 數(shù)字簽名 數(shù)字信封
隨著Internet的蓬勃發(fā)展,電子商務(wù)交易的安全性正逐漸引起人們的重視。兩大信用卡公司Visa和Mastercard聯(lián)合推出了基于信用卡的網(wǎng)上安全電子交易協(xié)議SET(Secure Electronic Transaction)。為了保證交易的安全,SET協(xié)議主要使用對稱和非對稱加密算法來實(shí)現(xiàn)交易各方的身份認(rèn)證、信息的數(shù)字簽名和加密,其中的非對稱加密是通過RSA算法實(shí)現(xiàn)的。但是,隨著橢圓曲線密碼在密鑰長度、加密強(qiáng)度和速度上的種種優(yōu)越性越來越明顯,橢圓曲線密碼受到了更多的關(guān)注。
1 橢圓曲線密碼體制
1.1 橢圓曲線密碼體制的加密原理
橢圓曲線可以定義在任意的有限域上,主要在有限域Zp(p為素?cái)?shù))和特征為2的有限域F2m(m≥1)上。橢圓曲線密碼體制的加密原理基于有限域上橢圓曲線離散對數(shù)問題(ECDLP)的困難性。下面以定義在奇特征域上的橢圓曲線為例,說明橢圓曲線密碼體制的加密原理。
設(shè)GF(p)是一個(gè)p≠2,3的奇特征有限域,定義在GF(p)上的橢圓曲線是指滿足Weierstrass方程:y2=x3+ax+b(a,b∈GF(p),且滿足4a3+27b2≠0)的所有解,(x,y)∈GF(p)*GF(p)與無窮遠(yuǎn)點(diǎn)O構(gòu)成的非空集合。設(shè)P是橢圓曲線E(a,b)(GF(p))上的一個(gè)點(diǎn),則E上關(guān)于P的橢圓曲線離散對數(shù)問題為:給定一點(diǎn)Q∈E(a,b)(GF(p)),求解整數(shù)x(x∈GF(p)),使xP=Q。如果這樣的數(shù)x存在,就是橢圓曲線離散對數(shù)。也就是說選取該橢圓曲線上的一個(gè)點(diǎn)P作為基點(diǎn),給定一個(gè)整數(shù)x,求解xP=Q是容易的。但是要從Q點(diǎn)和P點(diǎn)推導(dǎo)出整數(shù)x,則是非常困難的。
1.2 安全參數(shù)的選取和密鑰的生成
基于橢圓曲線的密碼體制操作都包含由一些橢圓曲線域參數(shù)所確定的有限域上橢圓曲線的算術(shù)運(yùn)算。通常,將有限域上橢圓曲線域參數(shù)T定義為一個(gè)六元組:T=(p,a,b,G,n,h)。其中p,a,b的意義同上;G(xG,yG)是橢圓曲線上的一個(gè)基點(diǎn),G≠O,使nG=O的最小正整數(shù)n稱為點(diǎn)G的階,記為n=ord(G);整數(shù)h是余因子,h=#E(GF(p))/n。由以上參數(shù)可以惟一地確定一個(gè)橢圓曲線。在[1,n-1]之間隨機(jī)地確定一個(gè)整數(shù)d,計(jì)算Q=dG,由此就確定了密鑰對(d,Q),其中:d是私鑰,需要保密,Q是公鑰,可以公開。而六元組T也要完全公開。
2 RSA算法在SET協(xié)議中的應(yīng)用及與橢圓曲線密碼算法的比較
2.1 SET協(xié)議中的核心技術(shù)
為了保證消費(fèi)者個(gè)人信息的機(jī)密性,SET協(xié)議采用了雙重簽名技術(shù),它是基于數(shù)字簽名的新應(yīng)用,也是整個(gè)協(xié)議的核心技術(shù)。當(dāng)客戶要購買商家的商品時(shí),客戶要發(fā)給商家購買訂單及信用卡信息。但是客戶不希望銀行看到個(gè)人的消費(fèi)信息,也不想讓商家獲得個(gè)人的信用卡賬號信息。要達(dá)到這個(gè)要求,就需要使用雙重簽名技術(shù)。假設(shè)S為持卡人(Sender,發(fā)送者),A為商家(Accepter,接收者)?,F(xiàn)在S決定購買A的商品,需要向A發(fā)送一份訂單信息和一份支付信息。S首先要將訂單信息(OI)和信用卡信息(PI)分別做消息摘要,把二條摘要連接起來生成一個(gè)新的消息摘要,并用S自己的簽名私鑰SSPV進(jìn)行數(shù)字簽名,這就形成了雙重簽名。雙重簽名的實(shí)現(xiàn)如圖1所示。

2.2 RSA算法在SET協(xié)議中的應(yīng)用
SET協(xié)議中傳輸?shù)男畔⒍歼M(jìn)行了加密處理,它使用公鑰加密算法RSA和對稱密鑰算法DES對信息進(jìn)行加密。其中,RSA算法在協(xié)議中扮演了極其重要的角色,協(xié)議中使用到RSA算法的地方有:數(shù)字簽名的生成和校驗(yàn)、數(shù)字信封的加密和解密。下面接著上文說明RSA在整個(gè)協(xié)議中的應(yīng)用。S將訂單信息、雙重簽名、信用卡信息摘要和S的簽名數(shù)字證書放在一起,用隨機(jī)生成的對稱密鑰K加密,形成加密信息;從A發(fā)來的交換數(shù)字證書中提取A的交換公鑰AEPU,用它對K加密,形成數(shù)字信封;把加密信息和數(shù)字證書放在一起,組成了S要發(fā)送給A的信息包,如圖2所示。

當(dāng)A接到S發(fā)來的信息包時(shí),A首先用自己的交換私鑰AEPV解密數(shù)字信封,得到對稱密鑰K;然后,用K解密發(fā)來的加密信息,獲得訂單信息、雙重簽名、信用卡信息摘要和S的簽名數(shù)字證書。為了驗(yàn)證S的身份和信息的真?zhèn)?,A先驗(yàn)證S的數(shù)字證書的真假。如果證書是真的,再從證書中提取S的簽名公鑰SSPU,用它解密雙重簽名,得到原始的雙摘要。A對訂單信息進(jìn)行Hash,得到訂單信息的摘要,把它和信用卡信息摘要連在一起,生成一個(gè)新的雙摘要。比較二個(gè)雙摘要,如果它們是一致的,就說明發(fā)送的信息是真實(shí)的,中途沒有被篡改。其過程如圖3所示。

2.3 橢圓曲線與RSA的比較
橢圓曲線密碼算法相對于RSA系統(tǒng)而言,其離散對數(shù)的困難性在計(jì)算復(fù)雜度上達(dá)到了全級指數(shù)。而RSA所基于的大整數(shù)因子分解問題只是亞指數(shù)級,因此對于橢圓曲線密碼算法來說,只需要180位左右的密鑰就可以達(dá)到1 024位RSA算法提供的安全等級。因此,在SET協(xié)議中使用橢圓曲線密碼的加密和簽名算法代替RSA算法,在相同等級的安全條件下,將使網(wǎng)絡(luò)交易的性能和速度獲得顯著的提高。
3 基于橢圓曲線密碼體制的認(rèn)證、簽名和加密的方案
選取有限域GF(p)上的一條橢圓曲線E,在E(a,b)(GF(p))上選取一點(diǎn)G,G的階數(shù)為n,確定參數(shù)T(p,a,b,G,n,h),選取安全的Hash函數(shù)H,T、H公開。
3.1 數(shù)字證書的生成與認(rèn)證
在應(yīng)用橢圓曲線的SET協(xié)議中,CA(認(rèn)證中心)生成的橢圓曲線證書應(yīng)包含密鑰Q和對應(yīng)的橢圓曲線參數(shù)T,而RSA算法的證書僅僅需要包含公鑰即可。d是CA的簽名私鑰,Q=dG是簽名公鑰。
(1)數(shù)字證書的生成
?、儆脩鬝向CA提交個(gè)人身份資料ID和公鑰KSP;
②CA選取隨機(jī)數(shù)k,且k∈{1,2,……,n-1},計(jì)算kG=(x,y),r′=x(mod n);如果r′=0,則重新選取k;
?、塾?jì)算e=H(ID+KSP),得到信息的摘要;
?、苡?jì)算r=r′e(mod n),s=k+rd(mod n),如果r=0或s=0,則返回到②;
(r,s)就是CA生成的簽名,(ID,KSP,(r,s))為CA向S頒發(fā)的數(shù)字證書,記為CAS。S以后可以用CAs來證明自己的身份。
(2)數(shù)字證書的認(rèn)證
當(dāng)用戶S和用戶A進(jìn)行交易時(shí),S要把自己的證書CAS發(fā)給A。而接收方A可以通過CA對證書CAS進(jìn)行驗(yàn)證,判斷證書的真?zhèn)?。?yàn)證的過程如下:
①驗(yàn)證r、s是否為[1,n-1]中的整數(shù);
②計(jì)算e=H(ID+KSP);
③計(jì)算X=sG-rQ=(x,y),如果X=0,則簽名無效;否則,計(jì)算Y=xe(mod n),只有當(dāng)Y=r時(shí)才能證明簽名是有效的。
3.2 數(shù)字簽名的生成和信封的加密
設(shè)S為持卡人,它的簽名證書為CAS,簽名密鑰對為(SSPU,SSPV);A為商家,它的交換證書為CAA,交換密鑰對為(AEPU,AEPV)。仍以上面的信息流和圖2來描述橢圓曲線的應(yīng)用,包括數(shù)字簽名的生成和信封的加密。
?、賁通過CA中心對A的證書CAA進(jìn)行驗(yàn)證,如果無效,則交易中止;否則,從證書中提取A的交換公鑰AEPU。
②生成雙摘要,e=H(H(OI)+H(PI))。
③S根據(jù)簽名證書中橢圓曲線參數(shù)T生成一對隨機(jī)的密鑰對(k,X)。其中X=(x,y),然后使得r=xe(mod n),s=k+rSSPV(mod n),S=(r,s)就是采用橢圓曲線算法的數(shù)字簽名。
④根據(jù)DES算法生成隨機(jī)的對稱密鑰K。把OI、H(PI)、S和CAS連接到一起,用K加密,得到加密信息D。
⑤S根據(jù)A的交換證書中的橢圓曲線參數(shù)生成一對隨機(jī)的密鑰對(k′,X′),計(jì)算i=k′AEPU,X′=(x′,y′)=k′G,j=x′K,則E=(i,j)就是數(shù)字信封。
⑥將(E,D)發(fā)送給接收者A。
3.3 數(shù)字簽名的校驗(yàn)和信封的解密
①A接到S發(fā)送的信息,首先用自己的交換私鑰AEPV解密信封E,根據(jù)GAEPV=AEPU,計(jì)算AEPV-1i=k′AEPUAEPV-1=k′G,求出(x′,y′);
?、谟蒵=x′K,可導(dǎo)出K=jx′-1,得到對稱密鑰K;
?、塾肒解密信息D,得到OI、H(PI)、S和CAS;
?、蹵通過CA中心對S的證書CAS進(jìn)行驗(yàn)證,如果無效,則交易中止;否則,從證書中提取S的簽名公鑰SSPU。
?、蒡?yàn)證數(shù)字簽名S=(r,s)。判斷r、s是否屬于{1,2,……,n-1},如果不屬于,則簽名無效。
?、奚呻p摘要,e=H(H(OI)+H(PI))。
?、哂?jì)算X=sG-rSSPU=(x,y),如果X=0,則簽名無效;否則,計(jì)算xe(mod n)。只有當(dāng)r=xe(mod n)時(shí)才能證明簽名是有效的。
4 結(jié)束語
隨著電子商務(wù)的發(fā)展,SET協(xié)議也在不斷完善之中?,F(xiàn)階段制約其發(fā)展的主要因素是交易的安全性和速度。利用ECC實(shí)現(xiàn)的認(rèn)證、數(shù)字簽名和數(shù)字信封在運(yùn)算速度、密鑰長度和每比特位強(qiáng)度上都比其他公鑰算法有著很大的優(yōu)勢。因而,橢圓曲線密碼體制在SET協(xié)議中的應(yīng)用具有非常廣闊的前景。
參考文獻(xiàn)
1 陳慶鋒,白碩.SET協(xié)議中問題的分析及解決方案.計(jì)算機(jī)學(xué)報(bào),2000;(2)
2 Hancock B.Elliptical curve cryptography and standards for efficient cryptography.In:Pro.Crypto′82,Spinger-Verlag,1994
3 ANSI X9.62.Public Key Cryptography for the Financial Services Industry:The Elliptic Curve Digital Signature Algorithm(ECDSA).1999
