閭立新 高振棟
[摘 要]IKEv2密鑰協(xié)商過(guò)程能夠增強(qiáng)IPSec VPN網(wǎng)關(guān)之間隧道建立過(guò)程的安全性。Diffie-Hellman算法作為IKEv2協(xié)商過(guò)程中的重要組成部分,它的安全可靠性就顯得非常重要。本文針對(duì)Diffie-Hellman算法存在的若干缺陷,提出一種與預(yù)共享密鑰、密鑰共享等思路結(jié)合的改進(jìn)方案,從而進(jìn)一步提高該算法的安全性,最終確保整個(gè)IKEv2和VPN的可靠性。
[關(guān)鍵詞]IPSecIKEv2Diffie-Hellman算法
[中圖分類號(hào)]TP393 [文獻(xiàn)標(biāo)識(shí)碼]A [文章編號(hào)]1007-9416(2009)11-0097-02
網(wǎng)絡(luò)安全是目前比較熱門的話題,在眾多安全技術(shù)中,IPSec VPN為不在同一個(gè)物理地址的通訊雙方建立了安全可靠的通訊隧道,而IKEv2作為IKE的替代者極大地增強(qiáng)了IPSec VPN網(wǎng)關(guān)之間隧道建立過(guò)程的安全性。
IKEv2是IPSec體系中的重要的密鑰協(xié)商協(xié)議,它可以有選擇地使用Diffie-Hellman算法、預(yù)共享密鑰算法、RSA數(shù)字簽名算法等方法提高密鑰協(xié)商過(guò)程的安全性。本文針對(duì)Diffie-Hellman算法理論上的缺陷,提出了一種Diffie-Hellman改進(jìn)算法,從而可以進(jìn)一步提高IKEv2協(xié)商過(guò)程的安全性。
1 IKEv2協(xié)商過(guò)程簡(jiǎn)介
整個(gè)IKEv2存在兩個(gè)協(xié)商階段,它們分別是初始交換階段和協(xié)商子SA交換階段,主要用于協(xié)商IKE_SA和協(xié)商CHILD_SA(即IPSec SA)。另外,還可以使用信息交換階段用來(lái)在IKEv2協(xié)商雙方之間通知一些出錯(cuò)、配置、刪除等信息。
在第一階段初始交換階段中協(xié)商雙方先后進(jìn)行IKE_SA_INIT交換和IKE_AUTH交換兩個(gè)
過(guò)程。初始交換階段協(xié)商得到IKE_SA,并以此保護(hù)后面的IKE_AUTH交換過(guò)程以便協(xié)商得到IPSec SA。
IKE_SA_INIT交換過(guò)程如下所示。
I->R:HDR,SAi1,KEi,Ni
I<-R:HDR,SAr1,KEr,Nr,[CERTREQ]
IKE_AUTH交換過(guò)程如下所示。
I->R:HDR,SK{IDi,[CERT,][CERTREQ,][IDr,]AUTH,SAi2,TSi,TSr}
I<-R:HDR,SK{IDr,[CERT,]AUTH,SAr2,TSi,TSr}
協(xié)商子SA交換過(guò)程如下所示。
I->R:HDR,SK{[N],SA,Ni,[KEi],[TSi,TSr]}
I<-R:HDR,SK{SA,Nr,[KEr],[TSi,TSr]}
信息交換交換過(guò)程如圖1所示。
I->R:HDR,SK{[N,][D,][CP]}
I<-R:HDR,SK{[N,][D,][CP]}
由于篇幅所限,在此不詳細(xì)闡述每一個(gè)交換過(guò)程的詳細(xì)過(guò)程,這里重點(diǎn)介紹一下包含Diffie-Hellman算法的交換過(guò)程。
IKE_SA_INIT交換過(guò)程的第一條消息中的HDR表示IKEv2消息頭,SAi1包含了發(fā)起者針對(duì)IKE_SA的提案建議,提案中包括加密算法、認(rèn)證算法、DH組等內(nèi)容,KEi包含了發(fā)起者的Diffle-Hellman公開(kāi)值,Ni則表示發(fā)起者的Nonce值。
響應(yīng)者接收到發(fā)起者發(fā)送的消息后在SAi1中選擇某種提案形成SAr1,并且將KEr和Nr分別作為響應(yīng)者的Diffle-Hellman公開(kāi)值以及Nonce值發(fā)送給發(fā)起者。在響應(yīng)消息中,響應(yīng)者還可以包含可選的證書(shū)請(qǐng)求載荷發(fā)送給發(fā)起者。
2 Diffie-Hellman算法的改進(jìn)
2.1 Diffie-Hellman算法簡(jiǎn)介
Diffie-Hellman密鑰交換算法可以使交換雙方在不安全的網(wǎng)絡(luò)環(huán)境中安全地交換計(jì)算密鑰的材料,從而使交換雙方可以各自安全地計(jì)算出密鑰。IKEv2在動(dòng)態(tài)密鑰協(xié)商過(guò)程中的IKE_SA_INIT交換過(guò)程和協(xié)商子SA交換過(guò)程中可以使用Diffie-Hellman密鑰交換算法。
假設(shè)交換雙方Alice和Bob使用Diffie-Hellman算法交換密鑰,那么交換步驟如下:
(1)首先定義一個(gè)素?cái)?shù)p和底數(shù)g,p和g是公開(kāi)的。
(2)Alice秘密選取隨機(jī)數(shù)字a,Bob也秘密選取隨機(jī)數(shù)字b。
(3)Alice進(jìn)行以下計(jì)算得到A:
A = ga mod p
而B(niǎo)ob也可以進(jìn)行計(jì)算得到B:
B = gb mod p
我們稱A和B為Diffie-Hellman公開(kāi)值,它們是可以公開(kāi)的。
(4)Alice將A傳送給Bob,Bob也將B傳送給Alice。
(5)Alice計(jì)算Key(Alice)得到密鑰:
Key(Alice) = Ba mod p
(6)Bob計(jì)算Key(Bob)得到密鑰:
Key(Bob) = Ab mod p
經(jīng)過(guò)簡(jiǎn)單證明可以得知:Key(Alice)= Key(Bob)。
2.2 現(xiàn)有算法的缺陷
從以上Diffie-Hellman算法的具體過(guò)程可以看出該算法存在以下幾個(gè)缺陷:
(1)在Diffie-Hellman算法中,Diffie-Hellman公開(kāi)值A(chǔ)和B、素?cái)?shù)p和底數(shù)g都是公開(kāi)的,所以理論上攻擊者可能截獲Diffie-Hellman公開(kāi)值A(chǔ)和B,從而計(jì)算出Alice的秘密a和Bob的秘密b。在Diffie-Hellman算法中,算法的安全性取決于與p有相同長(zhǎng)度的數(shù)的因子分解的難度。一旦p選擇不合適,算法安全性就受到極大威脅。
(2)Diffie-Hellman密鑰交換機(jī)制容易遭受“中間人攻擊”。如圖1所示,入侵者截獲并且修改了Alice和Bob交換的Diffie-Hellman公開(kāi)值,并且分別用A代替了A,B代替了B,而Alice和Bob卻不能有效地發(fā)現(xiàn)這種情況的發(fā)生(見(jiàn)圖1)。
2.3 改進(jìn)思路
為了進(jìn)一步提高Diffie-Hellman算法的安全性,本文提出以下改進(jìn)思路。
針對(duì)交換雙方的秘密a和b可能被攻擊者計(jì)算得出的情況,可以采用結(jié)合預(yù)共享密鑰認(rèn)證算法、密鑰共享的思路將原有秘密a和b分別拆分成a1、a2、a3和b1、b2、b3六個(gè)秘密。a1和b1還是參加Diffie-Hellman公開(kāi)值A(chǔ)和B的計(jì)算,而a2和b2是預(yù)先共享的密鑰,用于認(rèn)證交換雙方的身份。而a3和b3不參加計(jì)算和交換過(guò)程,它們是預(yù)先協(xié)商或者共享的秘密,所以a3和b3可以相同,即a3=b3。具體算法過(guò)程如下所示。
(1)首先定義一個(gè)素?cái)?shù)p和底數(shù)g,p和g是公開(kāi)的。
(2)Alice秘密選取隨機(jī)數(shù)字a1,Bob也秘密選取隨機(jī)數(shù)字b1。同時(shí),Alice和Bob預(yù)先共享同一個(gè)秘密a2和b2,a2=b2。
(3)Alice進(jìn)行以下計(jì)算得到A:
A = ga1 mod p
而B(niǎo)ob也可以進(jìn)行計(jì)算得到B:
B = gb1 mod p
(4)Alice使用預(yù)共享密鑰a2對(duì)A進(jìn)行認(rèn)證,計(jì)算得到Ap。Bob使用預(yù)共享密鑰b2對(duì)B進(jìn)行認(rèn)證,計(jì)算得到Bp。
Ap = f(A,a2)
Bp = f(B,b2)
Alice將Ap傳送給Bob,Bob也將Bp傳送給Alice。
(5)Alice計(jì)算Key(Alice)得到密鑰:
Key(Alice) = Bpa1 mod p | a3
(6)Bob計(jì)算Key(Bob)得到密鑰:
Key(Bob) = Apb1 mod p | b3
改進(jìn)方案優(yōu)勢(shì)分析如下:
(1)采用以上改進(jìn)方案,即使Alice和Bob選取了不合適的p和g,攻擊者計(jì)算得出a1和b1也不會(huì)威脅算法的安全性。因?yàn)閍3和b3沒(méi)有參與交換傳輸,不存在被攻擊者截獲并且計(jì)算得到的可能性。
(2)由于原有的秘密a和b分別拆分成a1、a2、a3和b1、b2、b3六個(gè)秘密,所以分散了秘密被攻擊者破解的可能性和風(fēng)險(xiǎn)。攻擊者只有得到必要的所有計(jì)算材料才能最終破解Diffie-Hellman算法,這符合密鑰共享的基本思想,即將單一的秘密進(jìn)行拆分成若干份,只有得到必要的若干份秘密才能還原被拆分前的秘密。
(3)以上改進(jìn)方案可以有效抵御“中間人攻擊”。在圖1中,攻擊者即使截獲了A和B,由于在改進(jìn)方案中使用了a2和b2這一對(duì)預(yù)共享密鑰對(duì)交換的內(nèi)容進(jìn)行了認(rèn)證,攻擊者無(wú)法進(jìn)行冒充交換雙方,交換雙方Alice和Bob很容易能夠識(shí)別被替換的Diffie-Hellman公開(kāi)值A(chǔ)和B。
3 結(jié)語(yǔ)
本文針對(duì)Diffie-Hellman算法的若干缺陷提出一種改進(jìn)方案,從而進(jìn)一步提高了IKEv2協(xié)商過(guò)程的安全性,最終確保了VPN通訊隧道的可靠性。
[參考文獻(xiàn)]
[1] 陳卓,張正文.Internet密鑰交換協(xié)議IKEv2研究[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25(2):269-270.
[2] 韓旭東,湯雋,郭玉東.新一代IPSec密鑰交換規(guī)范IKEv2的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(11):2549-2552.
[3] 杜春燕,周曉東,陸建德.一種基于IKEv2的IPsec遠(yuǎn)程訪問(wèn)實(shí)現(xiàn)方案[J].電腦與電信,2007(9):4-6.
[4] Iso-Anttila Lari,Ylinen Jorma,Loula Pekka.A Proposal to Improve IKEv2 negotiation [C].Emerging Security Information,Systems,and Technologies, 2007 International Conference on;Valencia,Spain,2007:169-174.
[基金項(xiàng)目]
江蘇省自然科學(xué)基金項(xiàng)目(BK2004039)