摘要:IKE協(xié)議作為IPSec體系中動態(tài)密鑰協(xié)商機制,極大地增強了IPSec體系的安全性。而IEKv2作為IKE的替代者,對原有的IKE協(xié)議進行了諸多方面的改進。本文首先簡單介紹了IKE協(xié)議,然后重點分析了IKEv2具體協(xié)商過程,最后闡述了IKEv2的發(fā)展趨勢。
關(guān)鍵詞:IP安全(IPSec);Internet動態(tài)密鑰交換(IKE);IKE第二版本(IKEv2);動態(tài)密鑰協(xié)商
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)14-3657-02
Research and Analysis about the New Generation Dynamic Key Negotiation Protocol IKEv2
ZHOU Yao-peng1,2, LI Zhi-hua1
(1.Jiangnan University, School of Information Technology, Wuxi 214122, China; 2.Wuxi Professional College of Science and Technology, Wuxi 214028, China)
Abstract: As the dynamic key negotiation mechanism in the IPSec system,IKE improves the safety of the IPSec system greatly. Being a substitute,IKEv2 makes IKE be improved in many aspects.This paper introduces the IKE protocol in brief, and emphatically analyzes the concrete negotiation process of IKEv2,finally elaborates the IKEv2 trend of development.
Key words: IP Security(IPSec); Internet Key Exchange(IKE); version 2 of Internet Key Exchange(IKEv2); dynamic key negotiation
1 引言
目前網(wǎng)絡(luò)安全的重要性日益突出,IKE協(xié)議作為IPSec體系的組成部分,極大地增強了網(wǎng)絡(luò)通訊的安全性。但是IKE協(xié)議具有很多缺陷,為此新的IKEv2協(xié)議在IKE的基礎(chǔ)之上進行了大量的改進,從而進一步增強IPSec體系的安全性,為上層網(wǎng)絡(luò)的安全性提供了保障。
2 IKE簡介
IKE協(xié)議屬于整個IPSec體系結(jié)構(gòu)中的動態(tài)密鑰協(xié)商部分,它是多種動態(tài)密鑰交換機制之一,也是目前事實上的工業(yè)標準。IKE協(xié)議主要用于進行虛擬專用網(wǎng)VPN的認證與SA會話密鑰的協(xié)商。它可以動態(tài)地建立安全關(guān)聯(lián),為通信雙方提供IPSec安全通信所需的相關(guān)信息,例如加密算法、會話密鑰、通信雙方身份認證等。
IKE機制協(xié)商的目的是產(chǎn)生一個通過驗證的密鑰和提供雙方同意的安全服務(wù),即最終提供IPSec 安全關(guān)聯(lián)(IPSec SA),使進行通訊的IPSec VPN之間能夠建立安全的數(shù)據(jù)通訊隧道。IKE主要通過兩個階段的協(xié)商過程來建立IPSec安全關(guān)聯(lián)(IPSec SA)。第一階段建立ISAKMP SA,第二階段利用第一階段得到的ISAKMP SA進一步協(xié)商從而建立IPSec SA。
IKE是一種混合型協(xié)議,其復雜性一直受到業(yè)界廣泛的批評。另外,IKE還存在很多問題。
3 IKEv2簡介
為了解決原有IKE的諸多缺點,IKE的第二版本IKEv2主要對IKE進行了以下改進:1)克服了原先IKE協(xié)議分散在各個文檔的缺點,例如原有的RFC2407(IPSec DOI)、RFC2408(ISAKMP)、RFC2409(IKE)以及隨后補充的關(guān)于NAT穿透、擴展認證和獲取遠程訪問地址等分散的文檔。采用了統(tǒng)一的文檔定義了IKEv2;2)IKEv2采用了4條消息交換取代了原有的9條消息,提高了協(xié)商效率;3)IKEv2刪除了原有IKE協(xié)議中功能不強且難以理解、容易混淆的數(shù)據(jù)結(jié)構(gòu);4)修復了多處公認的安全缺陷和漏洞;5)定義了新的通訊量選擇載荷,增加了協(xié)議靈活性。
IKEv2主要協(xié)商過程主要分為初始交換、協(xié)商子SA交換、信息交換三部分。
3.1 初始交換
IKEv2將初始階段的IKE_SA_INIT和IKE_AUTH兩個消息交換取代原有IKE第一階段的3次消息交換。IKE_SA_INIT交換中的消息沒有進行加密處理,它協(xié)商了IKE_SA中包含的各種安全參數(shù),其中包括密碼學相關(guān)算法,并且進行Nonce值以及Diffle-Hellman交換,最后建立IKE_SA。
IKE_SA_INIT交換過程如圖1所示。第一條消息中的HDR表示IKEv2消息頭,SAi1包含了發(fā)起者針對IKE_SA的提案建議,提案中包括加密算法、認證算法、DH組等內(nèi)容。KEi包含了發(fā)起者的Diffle-Hellman公開值,Ni則表示發(fā)起者的Nonce值。由此可以看出,IKEv2將IKE第一階段前兩次交互過程精簡為一次IKE_SA_INIT交換,從而提高了協(xié)商的效率。
協(xié)商響應(yīng)者接收到發(fā)起者發(fā)送的消息后在SAi1中選擇某種提案形成反饋提案SAr1,并且將KEr和Nr分別作為響應(yīng)者的Diffle-Hellman公開值以及Nonce值反饋給發(fā)起者。在響應(yīng)消息中,響應(yīng)者還可以發(fā)送可選的證書請求載荷CERTREQ。
IKE_SA_INIT交換過程完成之后,協(xié)商雙方可以計算種子密鑰SKEYSEED以得到其他7個秘密:SK_d、SK_ai、SK_ar、SK_ei、SK_er、SK_pi和SK_pr。
1)SK_d是建立在該IKE_SA基礎(chǔ)上的各個CHILD_SA派生新的密鑰材料。
2)SK_ai和SK_ar分別應(yīng)用于發(fā)起者和響應(yīng)者方向的認證算法。
3)SK_ei和SK_er分別用于發(fā)起者和響應(yīng)者方向后繼消息的加密。
4)SK_pi和SK_pr分別用于發(fā)起者和響應(yīng)者方向認證載荷的計算。
以上密鑰材料的計算公式如下:
SKEYSEED = prf(Ni | Nr,gir)
SK_d = prf(SKEYSEED ,Ni | Nr | SPIi | SPIr | 0x01)
SK_ai = prf(SKEYSEED ,SK_d | Ni | Nr | SPIi | SPIr | 0x02)
SK_ar = prf(SKEYSEED ,SK_ai | Ni | Nr | SPIi | SPIr | 0x03)
SK_ei = prf(SKEYSEED ,SK_ar | Ni | Nr | SPIi | SPIr | 0x04)
SK_er = prf(SKEYSEED ,SK_ei | Ni | Nr | SPIi | SPIr | 0x05)
SK_pi = prf(SKEYSEED ,SK_er | Ni | Nr | SPIi | SPIr | 0x06)
SK_pr = prf(SKEYSEED ,SK_pi | Ni | Nr | SPIi | SPIr | 0x07)
其中prf表示偽隨機函數(shù),gir可由Diffle-Hellman交換得到,Ni和Nr分別表示發(fā)起者和響應(yīng)者的Nonce值,SPIi和SPIr分別代表發(fā)起者和響應(yīng)者的安全關(guān)聯(lián)索引值。
IKE_SA_INIT交換過程最終協(xié)商得到IKE_SA。這個IKE_SA是一種安全關(guān)聯(lián),它包含了一些安全參數(shù)用于保護隨后進行的IKE_AUTH交換過程。IKE_AUTH交換過程在協(xié)商過程中使用認證載荷對已經(jīng)結(jié)束的IKE_SA_INIT交換過程進行認證,并且最終協(xié)商得到第一個CHILD_SA,即IPSec SA。如圖2所示,IKE_AUTH交換過程中的2條消息是由IKEv2消息頭HDR和一個加密載荷組成,在這個加密載荷中包含了身份載荷(ID)、可選的證書載荷(CERT)以及證書請求載荷(CERTREQ)、認證載荷(AUTH)、安全關(guān)聯(lián)載荷(SA)、流量選擇載荷(TS)等。SK{}表示被包含的載荷均被相應(yīng)方向的SK_e和SK_a加密和認證保護。
3.2 協(xié)商子SA交換
初始交換結(jié)束之后,協(xié)商雙方可以開始協(xié)商子SA交換過程,即CREATE_CHILD_SA交換階段。CREATE_CHILD_SA交換過程對應(yīng)原有IKE的第二階段,它由初始階段建立的安全關(guān)聯(lián)保護,最終建立起CHILD_SA,即IPSec SA。
這一交換過程作為有額外的IPSec SA或完美向前保密(PFS)需求時的一種交換類型,可由任一協(xié)商方在初始交換完成之后發(fā)起。如圖3所示,該交換過程包含了兩條消息,第一條消息由協(xié)商發(fā)起方向協(xié)商對方發(fā)送SA提案或者建議,并且交換Nonce和流量選擇符TSi和TSr。第二條消息是協(xié)商響應(yīng)方對SA提案和流量選擇符進行選擇并且反饋,同時交換Nonce值,另外可以根據(jù)PFS的需要可選地進行Diffie-Hellman交換。
生成CHILD_SA的密鑰材料的計算方法有以下兩種情況:
1)如果交換過程中進行了Diffle-Hellman交換,則CHILD_SA的密鑰材料計算方法如下:
KEYMAT = prf+(SK_d, gir(new) | Ni | Nr )
其中g(shù)ir(new)是從臨時Diffle-Hellman交換中獲得的共享秘密。
2)如果交換過程中沒有進行Diffle-Hellman交換,那么交換消息中不需要密鑰載荷(KE),則CHILD_SA的密鑰材料計算方法如下:
KEYMAT = prf+(SK_d, Ni|Nr)
其中prf+含義如下:
prf+(K,S) = T1|T2|T3|T4|...
T1 = prf(K, S|0x01)
T2 = prf(K, T1|S|0x02)
T3 = prf(K, T2|S|0x03)
T4 = prf(K, T3|S|0x04)
一次CHILD_SA協(xié)商可以得到多個安全關(guān)聯(lián),而ESP和AH安全關(guān)聯(lián)是成對出現(xiàn)的,而且每個方向都有一個,所以一次CHILD_SA協(xié)商可以得到4個安全關(guān)聯(lián),即進入ESP SA、進入AH SA、外出ESP SA、外出AH SA。
3.3 信息交換
在IKEv2交換過程中,經(jīng)常需要在協(xié)商雙方之間交換一些控制消息,例如發(fā)送一些錯誤或者通知事件的信息。為此,在IKEv2中專門定義了消息交換來滿足這種需求。這種交換過程一定要在IKE_SA_INIT消息交換結(jié)束后進行,交換過程同樣受到前面協(xié)商得到的安全關(guān)聯(lián)的保護。如圖4所示,信息交換消息中可以包含零個或者多個通知載荷、刪除載荷和配置載荷。協(xié)商雙方可以在消息中攜帶可選的通知載荷(N)、刪除載荷(D)、配置載荷(CP)等攜帶控制信息的載荷數(shù)據(jù)達到交換控制消息的目的。消息的接收者在收到消息之后必須給發(fā)送者發(fā)送反饋消息,否則發(fā)送者將認為消息丟失而將消息再次發(fā)送。在消息交換中,請求消息和反饋消息可以不包含任何載荷,這樣可以確認對方是否當前是否活動。
4 結(jié)束語
本文首先簡單介紹了IKE協(xié)議,針對IKE的各種缺陷詳細闡述了IKEv2的三個主要協(xié)商交換過程。目前,針對IKEv2的各種擴展方案正在陸續(xù)提出,例如針對移動地址的IKEv2協(xié)商等等。我們有理由相信,在不久的將來IKEv2將應(yīng)用于越來越多的場合。
參考文獻:
[1] Microsoft,C. Kaufman, Ed. RFC4306 Internet Key Exchange(IKEv2) Protocol[S],2005
[2] 陳卓,張正文.Internet密鑰交換協(xié)議IKEv2研究[J].計算機應(yīng)用與軟件,2008,25(2):269-270.
[3] 韓旭東,湯雋,郭玉東.新一代IPSec密鑰交換規(guī)范IKEv2的研究[J].計算機工程與設(shè)計,2007,28(11):2549-2552.
[4] 杜春燕,周曉東,陸建德.一種基于IKEv2的IPsec遠程訪問實現(xiàn)方案[J].電腦與電信,2007(9):4-6.
[5] 武濤,鄭雪蜂,姚宣霞,等.基于預共享密鑰認證的IKE協(xié)議分析與改進[J].計算機工程,2008,34(8):147-149.
[6] 陳卓,張正文.Internet密鑰交換協(xié)議IKEv2研究[J].計算機應(yīng)用與軟件,2008,25(2):269-270.