IKEv2簡介
IKEv2介紹:
- 定義在RFC4306 ,更新與 RFC 5996.
- 不兼容IKEv1,IKEv1不支持認證,IKEv2支持認證,EAP。
- 支持NAT穿越。
- IKEv2支持私密性、完整性、源認證。
- 工作在UDP 的 500 /4500端口。NAT-T用的是UDP4500端口。
IKE的安全機制:
-
身份認證
確認通信算雙方的身份(對等體的IP地址或者名稱),包括:
預共享密鑰PSK(pre-shared key)認證。
數字簽名RSA(rsa-signature)認證。
-
身份保護
-
DH(Diffie-Hellman)密鑰交換算法
-
完善的向前安全性PFS(Perfect Forward Secrecy)
短暫的一次性密鑰系統稱爲“完美向前保密”
在IPSec裏,PFS是通過在IPSec SA協商階段重新進行一個DH交換來實現的。
DH交換算法:
詳解IKEv2主模式的協商過程
採用IKEv2協商安全聯盟比IKEv1協商過程要簡化的多。要建立一對IPSec SA,IKEv1需要經歷兩個階段:“主模式+快速模式”或者“野蠻模式+快速模式”,前者至少需要交換9條消息,後者也至少需要6條消息。而IKEv2正常情況使用2次交換共4條消息就可以完成一對IPSec SA的建立,如果要求建立的IPSec SA大於一對時,每一對IPSec SA只需額外增加1次創建子SA交換,也就是2條消息就可以完成。
IKEv2定義了三種交換:初始交換(Initial Exchanges)、創建子SA交換(Create_Child_SA Exchange)以及通知交換(Informational Exchange)。
在IKEv2中將IKEv1中的主模式和野蠻模式換成了Inital Exchange,將快速模式階段換成了CRATE_CHILD_SA.
初始交換:
正常情況下,IKEv2通過初始交換就可以完成第一對IPSec SA的協商建立。IKEv2初始交換對應IKEv1的第一階段,初始交換包含兩次交換四條消息。
消息①和②屬於第一次交換(稱爲IKE_SA_INIT交換),以明文方式完成IKE SA的參數協商,包括協商加密和驗證算法,交換臨時隨機數和DH交換。IKE_SA_INIT交換後生成一個共享密鑰材料,通過這個共享密鑰材料可以衍生出IPSec SA的所有密鑰。相當於IKEv1的主模式的第1,3個包。
消息③和④屬於第二次交換(稱爲IKE_AUTH交換),以加密方式完成身份認證、對前兩條信息的認證和IPSec SA的參數協商。IKEv2支持RSA簽名認證、預共享密鑰認證以及擴展認證方法EAP(Extensible Authentication Protocol)。EAP認證是作爲附加的IKE_AUTH交換在IKE中實現的,發起者通過在消息3中省去認證載荷來表明需要使用EAP認證。
交換消息
- 2個初始信息
- 2個認證信息
IKEv2報文協商詳細過程:
Initiator Responder
-------------------------------------------------------------------
HDR, SAi1, KEi, Ni -->
<-- HDR, SAr1, KEr, Nr, [CERTREQ]
HDR, SK {IDi, [CERT,] [CERTREQ,]
[IDr,] AUTH, SAi2,
TSi, TSr} -->
<-- HDR, SK {IDr, [CERT,] AUTH, SAr2, TSi, TSr}
字段說明:
AUTH Authentication
CERT Certificate,證書
CERTREQ Certificate Request
CP Configuration
D Delete
EAP Extensible Authentication
HDR IKE header (not a payload),IKE頭部
IDi Identification - Initiator
IDr Identification - Responder
KE Key Exchange,發起方提供的密鑰交換材料、有限使用最高安全級別的DH組
Ni, Nr Nonce,隨機數
N Notify
SA Security Association,安全關聯參數
SK Encrypted and Authenticated
TSi Traffic Selector - Initiator
TSr Traffic Selector - Responder
V Vendor ID
IKEv2中的消息交換都是以IKE_SA_INIT 和 IKE_AUTH開始的。在IKEv1中稱爲階段一。這些初始交換通常是由4個消息組成,在大於一對IPSec SA的建立中,可以增加子SA。
IKEv2的所有通信都是以request/response對組成。
第一對消息(IKE_SA_INIT)進行協商密碼算法、交換nonces,和DH算法。生成SKEYSEED,後續的消息使用密鑰進行加密和驗證。
第二對消息(IKE_AUTH)操作在又IKE_SA_INIT所創建的IKE_SA之上。對前一對消息進行身份驗證,交換身份和整數,並建立第一個CHILD_SA,這些消息的一部分是加密和完整的,使用通過IKE_SA_INIT交換建立的密鑰來包加密。
初始交換之後所有的消息都是加密傳輸的。
IKEv2協商過程的第1個包:
第一個包交換的信息如下:
IKE_SA_INIT: Message 1
發起方提供基本的SA(安全關聯)參數和密鑰交換材料。等同與IKEv1的主模式的第1和第3個包。
Initiator Responder
-------------------------------------------------------------------
HDR, SAi1, KEi, Ni -->
----------------------------------
KEi:發起方提供的密鑰交換材料,優先級使用最高安全級別的DH組
發起方發送:HDR包含安全參數索引(SPIs)、版本號和flags。SAi1有效載荷聲明瞭發起方支持的IKE SA加密算法。KE有效載荷是發送方的DH值,Ni爲發起方的隨機數。
第一個包:Responder SPI的值爲0,Flags位的Initiator的值爲1,標誌位發起方。Message ID的值也爲0,該值和下一個會迴應方的Message ID值相同。用來標即區分一對request/response消息對。
IKEv2協商過程的第2個包:
第2個包的信息交換如下:
IKE_SA_INIT: Message 2
接收方會一個可以接受的參數,並附帶密鑰交換內容和證書請求(可選)。等同於IKEv1的主模式的第2和第4個包。
<-- HDR, SAr1, KEr, Nr, [CERTREQ]
------------------------------------------------
SAri:接收方選擇的密碼學算法
KEr:接收方選擇的密鑰交換材料
Nr:接收方的隨機數
CertReq: 整數請求,可選
迴應方:從發起方提供的SAi1負載中選擇一個可接受的加密組套件,封裝在SAr1中,併發送雙方都支持的DH算法的最高級封裝在KEr負載中,以及發送迴應方的Nr隨機值。
在迴應方的報文中,SPIi爲發起方的SPI,SPIr中填充自己生產的spi。Flags中的Response位置1,表示自己爲迴應方的報文。Message ID的值同第一個報文的Message ID,爲0.
第1個和第2個包交換完成後,每一方都能生成SKEYSEED,所有的密鑰都是從這個密鑰推導出來的。以後的消息除了消息頭都會被加密和完整性保護。加密和完整性保護的密鑰都是來自SKEYSEED,分別稱爲SK_e,用於加密,SK_a,用於認證,做完整性保護。會爲每個方向計算單獨的SK_a和SK_e。
除了密鑰來自DH算法的SK_e和SK_a之外,還會導出另一個兩SK_d,用於生成子SA的密鑰材料。符號SK{…}表示這些有效載荷已加密使用該方向的SK_e和SK_a保護完整性。
SKEYSEED = prf(Ni | Nr, g^ir)
{SK_d | SK_ai | SK_ar | SK_ei | SK_er | SK_pi | SK_pr }
= prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr )
-------------------------------------------------------
IKE SA; SK_ai and SK_ar used as a key to the integrity protection algorithm for authenticating the component messages of subsequent exchanges;
SK_ei and SK_er used for encrypting (and of course decrypting) all subsequent exchanges;
and SK_pi and SK_pr, which are used when generating an AUTH payload.
The lengths of SK_d, SK_pi,
and SK_pr MUST be the preferred key length of the PRF agreed upon.
IKEv2協商過程的第3個包:
第3個包的信息如下:
IKE_AUTH: Message 1
創建child SA相關的認證內容和參數(等於與IKEv1的主模式的第5個包和部分快速模式的包)
HDR, SK {IDi, [CERT,] [CERTREQ,]
[IDr,] AUTH, SAi2,
TSi, TSr} -->
-------------------------------------------
SK :該負載被加密並且完整性保護。
IDi:發起方的身份信息
Cert:發起方的整數,可選
CertReq:發起方的證書請求,可選
IDr:期望的相應方的身份信息,可選
AUTH: 發起方認證數據,沒有EAP就沒有這個字段,可選
SAi2,發起方Child SA轉換集
TSi/TSr: Child SA流量選擇器
符號SK{…}表示這些有效載荷已加密使用該方向的SK_e和SK_a保護完整性。
發起方:除了HDR未加密,其餘都被加密。IDi是發起方的有效身份載荷,用來證明自己的身份和完整性保護。也可以在CERT中發送整數有效載荷記憶在CertReq有效宰割中的信任列表。如果包含任何CERT有效載荷,必須提供第一個證書,包含用於驗證AUTH字段的公鑰。
可選的有效負載IDr使發起者能夠指定哪個響應者。當在有同一個IP地址的機器上可能有多個身份ID。如果響應者不接受發起方提出的IDr,響應者可能會使用其他一些IDr完成交換。如果發起方不接收相應方提供的IDr,發起方可以關閉這個SA協商。
Tsi,Tsr是流量選擇器,可以用來協商雙方的感興趣流。在IKEv2中可以協商,取感興趣流的交集。但是在IKEv1中不能協商,只能雙方互相配置爲鏡像地址。
發起方使用SAi2負載來協商Child SA,SAi2用來描述CREATE_CHILD_SA的交換參數。
第3個報文中的報文頭是明文的,其餘都是密文傳輸。在該報文中的Flags中的Initiator位置1,表示是發起方的報文。Message ID區別於上一對消息,爲1。下一個迴應的報文的Message ID和這個值相同。其餘消息被封裝到了Encrypted and Authenticated載荷中。
IEKv2協商過程的第4個包:
第4個包信息如下:
IKE_AUTH: Message 2
創建於child SA相關的認證內容和參數。等同於IKEv1主模式的第6個包和部分快速模式的包。
<-- HDR, SK {IDr, [CERT,] AUTH,
SAr2, TSi, TSr}
----------------------------------------------------------
SK: 負載被加密和完整性保護
IDr:相應方的身份信息
Cert:相應方的證書,可選
AUTH:相應方的認證數據,沒有EAP就沒有這個字段,可選
SAr2:相應方選擇的Child SA轉換集
TSi/TSr: Child SA流量選擇器,感興趣流
響應方:使用IDr有效載荷聲明其身份,可選發送一個或多個證書(同樣這個證書需要有用於驗證AUTH的公鑰),AUTH:驗證第二消息的身份和完整性保護。SAr2字段用於發送創建CREATE_CHILD_SA的提議材料。
創建子SA交換:
當一個IKE SA需要創建多對IPSec SA時,需要使用創建子SA交換來協商多於一對的IPSec SA。另外,創建子SA交換還可以用於IKE SA的重協商。
創建子SA交換包含一個交換兩條消息,對應IKEv1協商階段2,交換的發起者可以是初始交換的協商發起方,也可以是初始交換的協商響應方。創建子SA交換必須在初始交換完成後進行,交換消息由初始交換協商的密鑰進行保護。
類似於IKEv1,如果啓用PFS,創建子SA交換需要額外進行一次DH交換,生成新的密鑰材料。生成密鑰材料後,子SA的所有密鑰都從這個密鑰材料衍生出來。
通知交換:
運行IKE協商的兩端有時會傳遞一些控制信息,例如錯誤信息或者通告信息,這些信息在IKEv2中是通過通知交換完成的。如下圖
通知交換必須在IKE SA保護下進行,也就是說通知交換隻能發生在初始交換之後。控制信息可能是IKE SA的,那麼通知交換必須由該IKE SA來保護進行;也可能是某子SA的,那麼該通知交換必須由生成該子SA的IKE SA來保護進行。
IKEv1和IKEv2的區別
IKEv1與IKEv2的區別:
可比較的角度:
-
IPsec建立過程,報文角度
階段比較,IKEv1有兩個階段,IKEv2沒有階段。
-
IKEv1
IKEv1協商安全聯盟主要分爲兩個階段。
IKEv1階段1的目的是建立IKE SA,它支持兩種協商模式:主模式和野蠻模式。主模式用6條ISAKMP消息完成協商。野蠻模式用3條ISAKMP消息完成協商。野蠻模式的優點是建立IKE SA的速度較快。但是由於野蠻模式密鑰交換與身份認證一起進行無法提供身份保護。
IKEv1階段2的目的就是建立用來傳輸數據的IPSec SA,通過快速交換模式(3條ISAKMP消息)完成協商。
-
IKEv2
IKEv2簡化了安全聯盟的協商過程。IKEv2正常情況使用2次交換共4條消息就可以完成一個IKE SA和一對IPSec SA,如果要求建立的IPSec SA大於一對時,每一對SA只需額外增加1次交換,也就是2條消息就可以完成。
-
-
載荷角度
AUTH,TSi,TSr,EAP
-
認證方法
IKEv2支持EAP身份認證。IKEv2可以藉助認證服務器對遠程接入的PC、手機等進行身份認證、分配私網IP地址。IKEv1無法提供此功能,必須藉助L2TP來分配私網地址。
-
支持遠程接入
L2TP OVER IPSEC---------IKEV1解決方案
-
其他功能
NAT -T DPD
IKE SA的完整性算法支持情況不同。
IKE SA的完整性算法僅IKEv2支持,IKEv1不支持。
-
配置不同
-
DPD中超時重傳實現不同。
retry-interval參數僅IKEv1支持。表示發送DPD報文後,如果超過此時間間隔未收到正確的應答報文,DPD記錄失敗事件1次。當失敗事件達到5次時,刪除IKE SA和相應的IPSec SA。直到隧道中有流量時,兩端重新協商建立IKE SA。
對於IKEv2方式的IPSec SA,超時重傳時間間隔從1到64以指數增長的方式增加。在8次嘗試後還未收到對端發過來的報文,則認爲對端已經下線,刪除IKE SA和相應的IPSec SA。
-
IKE SA超時時間手工調整功能支持不同。
IKEv2的IKE SA軟超時爲硬超時的9/10±一個隨機數,所以IKEv2一般不存在兩端同時發起重協商的情況,故IKEv2不需要配置軟超時時間。
IKEv1與IKEv2的對比:
區別:
- IKEv2:支持DPD,EAP認證方式,NAT-T,支持消息的確認(一端刪除sa信息,另一端也會刪除),支持自動協商感興趣流,針對DOS的攻擊防護,支持遠程用戶接入,最少4個包協商速度更快。
- IKEv1:遠程用戶接入必須結合L2TP、主模式9個包,野蠻模式6個包。不能協商感興趣流,得互相配置爲鏡像。
總結:
IKEv1的主要問題:
- 不支持遠程用戶接入
- 協商建立IPSec SA的時間太長
IKEv2的改進:
- IKEv1是一個混合型協議,其自身的複雜性不可避免地帶來一些安全及性能上的缺陷,已經成爲目前實現IPSec系統的瓶頸。
- IKEv2協議保留了IKEv1的基本功能,並針對IKEv1研究過程中發現的問題進行修訂,同時兼顧簡潔性、高效性、安全性和見健壯性的需要,整合了IKEv1的相關文檔,由RFC4306單個文檔替代。通過核心功能最小化規定,新協議極大提高了不同IPSec VPN系統的互操作性。
IKEv2與IKEv1相比有以下優點:
-
簡化了安全聯盟的協商過程,提高了協商效率。
IKEv1使用兩個階段爲IPSec進行密鑰協商並建立IPSec SA:第一階段,通信雙方協商和建立IKE本身使用的安全通道,建立一個IKE SA;第二階段,利用這個已通過了認證和安全保護的安全通道,建立一對IPSec SA。IKEv2則簡化了協商過程,在一次協商中可直接生成IPSec的密鑰並建立IPSec SA。
-
修復了多處公認的密碼學方面的安全漏洞,提高了安全性能。
-
加入對EAP(Extensible Authentication Protocol)身份認證方式的支持,提高了認證方式的靈活性和可擴展性。
EAP是一種支持多種認證方法的認證協議,可擴展性是其最大的優點,即若想加入新的認證方式,可以像組件一樣加入,而不用變動原來的認證體系。當前EAP認證已經廣泛應用於撥號接入網絡中。
-
通過EAP協議解決了遠程接入用戶的認證問題,徹底擺脫了L2TP的牽制。目前IKEv2已經廣泛應用於遠程接入網絡中了。
參考文檔:RFC 5996