(1.空軍航空大學(xué) 訓(xùn)練部,長春 130022; 2.吉林大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 長春 130012; 3.中國科學(xué)院 長春光學(xué)精密儀器機械與物理研究所 應(yīng)用光學(xué)國家重點實驗室, 長春 130033)
摘 要:為充分利用公共網(wǎng)絡(luò)資源來進行高強度保密通信,提出了一種面向嵌入式應(yīng)用的VPN安全隧道建立方案。方案中采用隨機數(shù)應(yīng)答反饋方法來防止重放攻擊;采用了一種具有懲罰力度動態(tài)調(diào)節(jié)的黑名單來對抗DoS攻擊。由于ECC具有安全、密鑰短、軟/硬件實現(xiàn)節(jié)省資源等諸多優(yōu)點,并考慮到嵌入式應(yīng)用在計算資源和存儲資源方面的局限性,選擇了ECC算法來設(shè)計和實現(xiàn)方案中的三向身份鑒別機制和工作密鑰生成機制。方案經(jīng)驗證達到了預(yù)期的結(jié)果。
關(guān)鍵詞:虛擬專用網(wǎng); 身份認證; 橢圓曲線密碼體制; 密鑰交換
中圖分類號:TP393.08 文獻標(biāo)志碼:A
文章編號:10013695(2009)03109503
Method of establishing VPN security tunnel based on ECC
YU Xiao1, LI Yunxing1, WANG Xin2, SUI Yongxin3
(1.Training Ministry, Aviation University of Air Force, Changchun 130022, China; 2. College of Computer Science Technology, Jilin University, Changchun130012, China; 3. State Key Laboratory of Applied Optics, Changchun Institute of Optics, Fine Mechanics Physics, Chinese Academy of Sciences, Changchun 130033, China)
Abstract:In order to provide highly secure communications service in public network, this paper proposed a scheme of establishing VPN security tunnel for an embedded application. The scheme introduced a method of using random number in reply and feedback for preventing attack of replace, and introduced a kind of blacklist with dynamical adjustability for punishment values for preventing attack of DoS. The advantages of ECC were more secure, shorter of key and more saving for software hardware resources, so ECC was adopted implementing for tridirection identity authentication and work key exchange in this embedded application. Experiments results show that this scheme achieved expect purpose.
Key words:VPN(virtual private networks); identity authentication; ECC; key exchange
計算機網(wǎng)絡(luò)的飛速發(fā)展給人們帶來了諸多便利,同時網(wǎng)絡(luò)安全問題日益突出,正在加劇降低對互聯(lián)網(wǎng)這一巨大的公共網(wǎng)絡(luò)資源的充分利用。那么如何安全地利用這種網(wǎng)絡(luò)資源呢?虛擬專用網(wǎng)技術(shù)(VPN)便是一種較好的方法,其核心思想是利用安全協(xié)議在不安全的網(wǎng)絡(luò)中建立一個安全的虛擬網(wǎng)絡(luò)。如圖1所示,虛擬網(wǎng)絡(luò)中相互通信的信道可看做是穿過混亂的公共網(wǎng)絡(luò)的一條安全、穩(wěn)定的隧道[1]。因而,安全隧道的建立是構(gòu)建VPN的關(guān)鍵,這正是本文研究的內(nèi)容。
針對目前VPN技術(shù)存在的問題,筆者曾提出了一種新型的高安全VPN實現(xiàn)方法[1~3],其特色是將VPN的安全協(xié)議脫離開操作系統(tǒng),嵌入到網(wǎng)絡(luò)設(shè)備之中,以此來提高VPN的安全性和抵抗主動攻擊的能力。在此基礎(chǔ)上,本文研究了適合運行在嵌入式網(wǎng)絡(luò)設(shè)備中的一種VPN安全隧道建立方案,介紹了方案中對抗DoS攻擊的黑名單機制。
1 隧道的建立與黑名單
1)VPN安全隧道建立方案
該方案的基本流程如圖2所示。隧道的建立過程主要由四個階段組成,即呼叫階段、證書交換階段、身份鑒別階段和工作密鑰生成階段。
呼叫階段首先確立了隧道兩端的主從關(guān)系:呼叫的發(fā)起者稱為主叫,被呼叫的一方稱為被叫。主叫與被叫在隧道建立過程中的操作是有一定區(qū)別的。通信雙方在確定與對方進行隧道建立之前會首先檢查其是否在本地黑名單中,如果對方在黑名單中榜上有名則立即中斷通信。在呼叫階段還采用了一種簡單有效的方法來防止重放攻擊,方法如圖2所示:被叫方在應(yīng)答時產(chǎn)生512 bit的隨機數(shù)并搭載在應(yīng)答報文中,主叫方收到后再將隨機數(shù)反饋回來,如果反饋回來的數(shù)與原始數(shù)據(jù)不符則認為是重放報文,立即與對方中斷通信。
證書交換階段的第一步是將各自的證書發(fā)送給對方。這里證書有兩個基本的作用:搭載公鑰;檢測所搭載的公鑰的合法性,即證書的有效性驗證。身份鑒別階段的目的是只有合法用戶才能在VPN中與他人進行實質(zhì)上的數(shù)據(jù)通信。未通過鑒別的一方將被記入黑名單中,后面還會對方案中的身份鑒別方法和黑名單機制進行進一步的討論。通信雙方在工作密鑰生成階段進行密鑰協(xié)商,進而生成在安全隧道中進行保密通信過程所使用的工作密鑰。需要說明的是:只有通過身份鑒別的雙方才能生成相同的工作密鑰。方案中采用ECC[4]來實現(xiàn)DiffieHellman密鑰協(xié)商,后面會對其進行進一步的討論。
2)對抗DoS攻擊的黑名單
所謂拒絕服務(wù)(DoS)攻擊是指通過消耗目標(biāo)的資源,從而阻止合法用戶正常的使用服務(wù)。這種攻擊尤其對于VPN安全隧道的建立階段具有較強的危害,因為該階段要包含多個計算密集型的公開密碼加1解密過程。本文采用一種具有懲罰機制的黑名單機制來對抗這種攻擊。
方法是設(shè)立非法用戶黑名單,表1給出了黑名單的基本結(jié)構(gòu)。如果某網(wǎng)絡(luò)用戶采取了異常舉動,則記入黑名單中加以懲罰。懲罰的方法是限定一段時間不予通信,懲罰期間將拋棄該用戶傳送來的所有數(shù)據(jù)包,懲罰結(jié)束后將該用戶從黑名單中注銷。另外對懲罰的力度進行動態(tài)調(diào)整,例如,某用戶在被記入黑名單實施懲罰期間仍然出現(xiàn)異常舉動,此時將增加懲罰力度,即不予其通信的時限增加(如加倍),同時懲罰計時器清零。
黑名單的基本維護方法如下:
a)黑名單初始化。清空黑名單中的所有記錄,復(fù)位黑名單專用時鐘。
b)產(chǎn)生新記錄。首先動態(tài)申請一個記錄空間,然后將非法用戶ID(這里是其IP地址)填入相應(yīng)字段;不予通信時間等于21 s,已懲罰時間為0 s,異常次數(shù)為1。
c)黑名單的查詢。遍歷黑名單的所有記錄,如果所查詢的用戶存在且該用戶有新的異常行為,則不予通信時間字段乘2,已懲罰時間清零,異常次數(shù)加1。
d)黑名單的自動更新。黑名單定時器每過1 s將更新每個記錄:已懲罰時間加1,然后判斷懲罰時間是否到期,如果到期將注銷該記錄,釋放對應(yīng)的內(nèi)存資源。
2 基于ECC的身份鑒別和密鑰協(xié)商
自1985年Neal Kobitz和Victor Miller分別提出橢圓曲線密碼體制(elliptic curves cryptography, ECC)以來,ECC在密碼學(xué)的應(yīng)用方面起著越來越重要的作用,其安全性基于橢圓曲線離散對數(shù)問題(ECDLP)的難解性[5,6]。在ECC中采用較小的數(shù)就可達到與使用更大的有限域同樣的安全性。例如,為達到對稱密鑰128 bit的安全水平, 需要使用3 072 bit的RSA密鑰,而對于ECC,256 bit就可達到同等安全水平,而簽名和解密速度也比RSA快很多。由于密鑰長度短、數(shù)字簽名快、計算數(shù)據(jù)量小,尤其適合計算資源和存儲資源受限的嵌入式設(shè)備。
定義1 有限域Fq上的橢圓曲線E(Fq)是定義在仿射平面上的三次方程y2=x3+ax2+b的所有解與無窮遠點O的并集,記為
E(Fq)={(x,y)|y2=x3+ax2+b,(x,y)∈Fq}{O}(1)
其中:q為素數(shù);Fq的特征值char(Fq)≠2,3;a,b∈Fq,且4a2+27b2≠0(否則曲線會退化,導(dǎo)致某些點的逆元不存在)。
E(Fq)中的點數(shù)稱為橢圓曲線的階數(shù), 記為#E(Fq),且q+1-2q≤#E(Fq)≤q+1+2q。橢圓曲線E(Fq)上的點集對點的加法構(gòu)成阿貝爾群G,橢圓曲線上的點滿足封閉性、結(jié)合律,存在單位元和逆元。橢圓曲線上的運算包括:
a)點的加法。令P,Q∈E(Fq),P=(x1,y1),Q=(x2,y2),則P+Q=(x3,y3)∈E(Fq)。其中:
x3=μ2-x1-x2
y3=μ(x1-x3)-y1 μ=(y2-y1)/(x2-x1) P1≠P2
(3x12+a)/2y1 P1≠P2 (2)
b)點的倍乘。令P∈E(Fq),P=(x1,y1),P≠-P,則2P=(x3,y3)∈E(Fq)。其中:
x3=[(3x12+a)/2y1]2-2x1
y3=(3x12+a)/2y1×(x1-x2)-y1(3)
點P的階數(shù)n是滿足nP=0的最小整數(shù)。在橢圓曲線密碼體制中,一般在E(Fq)上選取P=(x,y)作為公共基點,要求這個公共基點的階n為一個素數(shù)階,并使n足夠大,P為生成元,阿貝爾群〈P〉={P,2P,3P,…,nP}E(Fq)是由點P生成的n階循環(huán)子群,以〈P〉來構(gòu)建密碼體制。給定橢圓曲線E(Fq),點P∈E(Fq),P的階數(shù)為n。對于給定點R∈〈P〉,求整數(shù)x∈[0,n-1],使得xP = R,這就是ECDL P,是一個NP問題。
1)基于ECC的身份鑒別[6,7]
方案中采用了基于X.509證書的身份鑒別機制。X.509提供了三種強鑒別過程,即單向鑒別、雙向鑒別和三向鑒別。單向鑒別只保護消息的完整性和原創(chuàng)性。當(dāng)有人使用用戶簽名(私鑰)簽署了時間戳、現(xiàn)時值和目標(biāo)身份時,就實行單向鑒別。接收者可以通過使用發(fā)送者的公鑰來逆向簽署信息,從而驗證信息的真實性,可以從證書列表獲得發(fā)送者的公鑰。由于只對目標(biāo)進行鑒別,所以稱為單向鑒別。雙向鑒別允許發(fā)送者或發(fā)送者對接收者或目標(biāo)進行驗證。除了進行單向鑒別以外,目標(biāo)會發(fā)送給發(fā)送者一個回復(fù),回復(fù)中包括新的時間戳、原始的現(xiàn)時和新的現(xiàn)時。該回復(fù)使用發(fā)送者的公鑰進行簽名。在公鑰密碼學(xué)中,只有相對應(yīng)的私鑰或發(fā)送者的私鑰才能解密這個回復(fù);而且現(xiàn)時必須是原始的現(xiàn)時,否則這個消息就不可信。當(dāng)目標(biāo)和發(fā)送者沒有同步的時鐘或不希望信任時鐘時,則采用三向鑒別。除了進行雙向鑒別以外,發(fā)送者將對目標(biāo)的回復(fù)再發(fā)送一個回復(fù),包括在原有回復(fù)中的新現(xiàn)時。這里只需要驗證相匹配的現(xiàn)時值,不再需要驗證時間戳。
由于VPN的網(wǎng)絡(luò)平臺是基于TCP/IP協(xié)議棧的IP網(wǎng)絡(luò),IP路由的不確定性使得時鐘的同步實現(xiàn)困難,因而本文采用三向認證方法實現(xiàn)身份的鑒別。具體實現(xiàn)步驟如圖3所示。
a)A生成一個非重復(fù)的隨機數(shù)rA用來抗重放攻擊,接著向B放送簽名消息A{tA,rA,B}。其中tA可省略。
b)B收到消息后執(zhí)行以下動作:獲取A的X.509證書,并驗證證書的有效性,接著從A證書中提取A的公開密鑰,驗證A的身份是否屬實,同時檢驗消息的完整性;檢查B自己是否是消息的接收者;不必驗證時間戳tA;最后B生成一個非重復(fù)的隨機數(shù)rB,作用與rA相同,并向A發(fā)送簽名消息B{tB,rB,A,rA}。tB可省略。
c)A收到消息后執(zhí)行以下動作:獲取B的X.509證書,并驗證證書的有效性,接著從B證書中提取B的公開密鑰,驗證B的身份是否屬實,同時檢驗消息的完整性;檢查A自己是否是消息的接收者;不必驗證時間戳tB;檢查接收到的rA是否與發(fā)送的rA相等;最后A向B發(fā)送簽名消息A{rA,B}。
d)B收到消息后執(zhí)行以下操作:驗證A的身份,同時檢驗消息的完整性,檢查收到的rB是否與B發(fā)送的rB相等。
圖3中的“{ }”表示數(shù)字簽名過程,例如A{I}表示用戶A對信息I進行數(shù)字簽名。這里涉及利用非對稱密碼算法實現(xiàn)數(shù)字簽名。下面給出方案所采用的ECC實現(xiàn)ElGammal數(shù)字簽名的算法。
一個橢圓曲線密碼由下面的六元組所描述:T=〈p,a,b,G,n,h〉。其中:p為大于3的素數(shù),p確定了有限域GF(p);元素a,b∈GF(p),a和b確定了橢圓曲線;G為循環(huán)子群E1的生成元,n為素數(shù)且為生成元G的階,G和n確定了循環(huán)子群E1;d為用戶的私鑰。用戶的公開鑰為Q點,Q=dG,m為消息,hash(m)是m的摘要。
(1)產(chǎn)生簽名
* 選擇一個隨機數(shù)k,k∈{0,1,2,…,n-1};
* 計算點R(xR,yR)=kG,并記r=xR;
* 利用保密的解密鑰d計算數(shù)s=(hash(m)-dr)k-1mod n;
* 以〈r,s〉作為消息m的簽名,并以〈m,r,s〉的形式傳輸和存儲。
(2)驗證簽名
* 計算s-1mod n;
* 利用公開的加密鑰Q計算U(xU,yU)=s-1(hash(m)G-rQ);
* 如果xU=r,那么〈r,s〉是用戶A對m的簽名。
因為s = (hash(m)-dr)k-1mod n,所以s-1 =(hash(m)-dr)k mod n,所以
U(xU,yU)=(hash(m)-dr)-1k[hash(m)G-rQ]=
(hash(m)-dr)-1R[hash(m)-dr]=R(4)
2)基于ECC的密鑰協(xié)商[9]
方案采用ECC DiffieHellman密鑰交換方法。首先,挑選一個大整數(shù)q以及式(1)中的橢圓曲線參數(shù)a和b,這里q為素數(shù)p。由此可定義出點的橢圓群Ep(a,b);其次在Ep(a,b)中挑選基點G=(x1,y1),G的階為一個非常大的數(shù)n。橢圓曲線上的點G的階n是使nG=O成立的最小正整數(shù)。Ep(a,b)和 G是該密碼體制中通信各方均已知的參數(shù)。
用戶A與B之間完成密鑰交換過程如圖4所示。
a)A選擇一個小于n的整數(shù)nA作為其私鑰,然后產(chǎn)生其公鑰PA = nA×G;該公鑰是Ep(a,b)中的一個點。
b)B可類似地選擇私鑰nB并計算公鑰PB。
c)A產(chǎn)生秘密鑰K = nA×PB;B產(chǎn)生秘密鑰K = nB×PA。
其中K的兩種計算結(jié)果是相同的,因為
nA×PB = nA×(nB×G) = nB×(nA×G) = nB×PA(5)
要破譯這種體制,攻擊者必須由G和KG計算K,這被認為是非常難的。
方案的實驗驗證在專門設(shè)計的網(wǎng)絡(luò)設(shè)備硬件平臺——USB接口的安全網(wǎng)卡[2]上完成,如圖5所示。
圖6顯示了用戶通過客戶端界面軟件來控制安全網(wǎng)卡內(nèi)部的隧道建立過程。客戶端軟件與安全網(wǎng)卡之間使用專用通信協(xié)議交互信息。(a)中通信協(xié)議將根證書、本地證書和私鑰、口令等下載到安全網(wǎng)卡中,然后觸發(fā)安全網(wǎng)卡內(nèi)部的隧道管理模塊開始建立與網(wǎng)絡(luò)用戶221.8.12.134間的安全隧道。(b)中與用戶221.8.12.134間的安全隧道成功建立起來。
3 結(jié)束語
本文提出了適合運行在嵌入式網(wǎng)絡(luò)設(shè)備中的一種VPN安全隧道建立方案,方案中使用三向鑒別方法實現(xiàn)身份的合法性驗證,并采用了一種具有懲罰機制的黑名單來對抗DoS攻擊。由于ECC具有加/解密速度快、節(jié)省帶寬和節(jié)省存儲空間等諸多優(yōu)點,并考慮到嵌入式應(yīng)用在計算資源和存儲資源方面的局限性,選擇了ECC算法來設(shè)計和實現(xiàn)方案中的身份鑒別和DiffieHellman工作密鑰生成機制。實驗測試了方案的可行性,經(jīng)驗證達到了預(yù)期的結(jié)果。
參考文獻:
[1]于曉.一種內(nèi)嵌安全機制的安全以太網(wǎng)卡實現(xiàn)技術(shù)研究[D].北京:中國科學(xué)院研究生院, 2006.
[2]于曉.高安全機制VPN組網(wǎng)關(guān)鍵技術(shù)研究[R].北京:中國科學(xué)院, 2008.
[3]于曉, 王欣, 閆豐,等. 電暈探測系統(tǒng)中JPEG截圖文件系統(tǒng)的設(shè)計[J]. 光學(xué)精密工程, 2005, 13(6): 721726.