IPSec之IKEv2協議詳解

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交換算法:

在這裏插入圖片描述

圖: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認證。


在這裏插入圖片描述

圖:IKEv2協商過程抓包,總共四個包

交換消息

  • 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個包:

在這裏插入圖片描述

在這裏插入圖片描述

圖:IKEv2協商過程的第一個包抓包示例

第一個包交換的信息如下:

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個包:

在這裏插入圖片描述

圖: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個包:

在這裏插入圖片描述

圖: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個包:

在這裏插入圖片描述

圖:IKEv2協商過程的第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的區別:

可比較的角度:

  1. 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條消息就可以完成。

  2. 載荷角度

    AUTH,TSi,TSr,EAP

  3. 認證方法

    IKEv2支持EAP身份認證。IKEv2可以藉助認證服務器對遠程接入的PC、手機等進行身份認證、分配私網IP地址。IKEv1無法提供此功能,必須藉助L2TP來分配私網地址。

  4. 支持遠程接入

    L2TP OVER IPSEC---------IKEV1解決方案

  5. 其他功能

    NAT -T DPD

    IKE SA的完整性算法支持情況不同。

    IKE SA的完整性算法僅IKEv2支持,IKEv1不支持。

  6. 配置不同

  • 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的對比:

在這裏插入圖片描述

在這裏插入圖片描述

圖:IKEv1和IKEv2區別

區別:

  • IKEv2:支持DPD,EAP認證方式,NAT-T,支持消息的確認(一端刪除sa信息,另一端也會刪除),支持自動協商感興趣流,針對DOS的攻擊防護,支持遠程用戶接入,最少4個包協商速度更快。
  • IKEv1:遠程用戶接入必須結合L2TP、主模式9個包,野蠻模式6個包。不能協商感興趣流,得互相配置爲鏡像。

在這裏插入圖片描述

圖:IKEv1和IKEv2載荷對比

總結:

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章