IPSec—IKE協議介紹

因特網金鑰交換IKE(Internet Key Exchange)協議建立在Internet安全聯盟和金鑰管理協議ISAKMP定義的框架上,是基於UDP(User Datagram Protocol)的應用層協議。它為IPSec提供了自動協商金鑰、建立IPSec安全聯盟的服務,能夠簡化IPSec的配置和維護工作。

IKE與IPSec的關係如下圖所示,對等體之間建立一個IKE SA完成身份驗證和金鑰資訊交換後,在IKE SA的保護下,根據配置的AH/ESP安全協議等引數協商出一對IPSec SA。此後,對等體間的資料將在IPSec隧道中加密傳輸。

IPSec—IKE協議介紹

下面分別對IKE的安全機制和IKEv1和IKEv2的協商安全聯盟的過程進行介紹

IKE安全機制

IKE具有一套自保護機制,可以在網路上安全地認證身份、分發金鑰、建立IPSec SA。

身份認證

身份認證確認通訊雙方的身份(對等體的IP地址或名稱),包括預共享金鑰PSK(pre-shared key)認證、數字證書RSA(rsa-signature)認證和數字信封認證。

預共享金鑰:在預共享金鑰認證中,通訊雙方採用共享的金鑰對報文進行Hash計算,判斷雙方的計算結果是否相同。如果相同,則認證透過;否則認證失敗。

當有1個對等體對應多個對等體時,需要為每個對等體配置預共享的金鑰。該方法在小型網路中容易建立,但安全性較低。

數字證書認證:在數字證書認證中,通訊雙方使用CA證書進行數字證書合法性驗證,雙方各有自己的公鑰(網路上傳輸)和私鑰(自己持有)。傳送方對原始報文進行Hash計算,並用自己的私鑰對報文計算結果進行加密,生成數字簽名。接收方使用傳送方的公鑰對數字簽名進行解密,並對報文進行Hash計算,判斷計算結果與解密後的結果是否相同。如果相同,則認證透過;否則認證失敗。

IPSec—IKE協議介紹

使用數字證書安全性高,但需要CA來頒發數字證書,適合在大型網路中使用。

數字簽名認證:在數字信封認證中,傳送方首先隨機產生一個對稱金鑰,使用接收方的公鑰對此對稱金鑰進行加密(被公鑰加密的對稱金鑰稱為數字信封),傳送方用對稱金鑰加密報文,同時用自己的私鑰生成數字簽名。接收方用自己的私鑰解密數字信封得到對稱金鑰,再用對稱金鑰解密報文,同時根據傳送方的公鑰對數字簽名進行解密,驗證傳送方的數字簽名是否正確。如果正確,則認證透過;否則認證失敗。

IPSec—IKE協議介紹

身份保護

身份資料在金鑰產生之後加密傳送,實現了對身份資料的保護。

DH(Diffie-Hellman)金鑰交換演算法

DH是一種公共金鑰交換方法,它用於產生金鑰材料,並透過ISAKMP訊息在傳送和接收裝置之間進行金鑰材料交換。然後,兩端裝置各自計算出完全相同的對稱金鑰。該對稱金鑰用於計算加密和驗證的金鑰。在任何時候,通訊雙方都不交換真正的金鑰。DH金鑰交換是IKE的精髓所在。

完善的前向安全性PFS

完善的前向安全性PFS(Perfect Forward Secrecy)透過執行一次額外的DH交換,確保即使IKE SA中使用的金鑰被洩露,IPSec SA中使用的金鑰也不會受到損害。

PFS是一種安全特性,指一個金鑰被破解,並不影響其他金鑰的安全性,因為這些金鑰間沒有派生關係。IPSecSA的金鑰是從IKE SA的金鑰匯出的,由於一個IKE SA協商生成一對或多對IPSecSA,當IKE的金鑰被竊取後,攻擊者將可能收集到足夠的資訊來匯出IPSecSA的金鑰,PFS透過執行一次額外的DH交換,保證IPSecSA金鑰的安全。

IKEv1協商安全聯盟的過程

採用IKEv1協商安全聯盟主要分為兩個階段:第一階段,通訊雙方協商和建立IKE協議本身使用的安全通道,即建立一個IKE SA;第二階段,利用第一階段已透過認證和安全保護的安全通道,建立一對用於資料安全傳輸的IPSec安全聯盟。

IKEv1協商階段1

IKEv1協商階段1的目的是建立IKE SA。IKE SA建立後對等體間的所有ISAKMP訊息都將透過加密和驗證,這條安全通道可以保證IKEv1第二階段的協商能夠安全進行。

IKEv1協商階段1支援兩種協商模式:主模式(Main Mode)和野蠻模式(Aggressive Mode)。

IPSec—IKE協議介紹

主模式包含三次雙向交換,用到了六條ISAKMP資訊,協商過程如上圖所示。這三次交換分別是:

訊息①和②用於提議交換

發起方傳送一個或多個IKE安全提議,響應方查詢最先匹配的IKE安全提議,並將這個IKE安全提議迴應給發起方。匹配的原則為協商雙方具有相同的加密演算法、認證演算法、認證方法和Diffie-Hellman組標識。如果沒有匹配的安全提議,響應方將拒絕發起方的安全提議。

訊息③和④用於金鑰資訊交換

雙方交換Diffie-Hellman公共值和nonce值,用於IKE SA的認證和加密金鑰在這個階段產生。

使用DH演算法交換與金鑰相關的資訊,並生成金鑰。由獲得的金鑰資訊推匯出4個金鑰。其中SKEYID為基礎金鑰,透過它可以推匯出SKEYID_a,為ISAKMP訊息完整性驗證金鑰;可以推匯出SKEYID_e,為ISAKMP訊息加密金鑰;可以推匯出SKEYID_d,用於衍生出IPSec報文加密、驗證金鑰。

IPSec—IKE協議介紹

訊息⑤和⑥用於身份和認證資訊交換(雙方使用生成的金鑰傳送資訊),雙方進行身份認證和對整個主模式交換內容的認證。

兩個對等體透過兩條ISAKMP訊息(5、6)交換身份資訊(預共享金鑰方式下為IP地址或名稱,數字證書方式下還需要傳輸證書的內容),身份資訊透過SKEYID_e加密,故可以保證身份資訊的安全性。

兩個對等體使用IKE安全提議中定義的加密演算法、驗證演算法、身份驗證方法和SKEYID_a、SKEYID_e對IKE訊息進行加解密和驗證。

野蠻模式只用到三條資訊,協商過程如上圖所示:

發起方傳送ISAKMP訊息,攜帶建立IKE SA所使用的引數、與金鑰生成相關的資訊和身份驗證資訊。

響應方對收到的第一個資料包進行確認,查詢並返回匹配的引數、金鑰生成資訊和身份驗證資訊。

發起方迴應驗證結果,並建立IKE SA。

與主模式相比,野蠻模式減少了交換資訊的數目,提高了協商的速度,但是沒有對身份資訊進行加密保護。

IKEv1協商階段2

IKEv1協商階段2的目的就是建立用來安全傳輸資料的IPSec SA,併為資料傳輸衍生出金鑰。這一階段採用快速模式(Quick Mode)。該模式使用IKEv1協商階段1中生成的金鑰對ISAKMP訊息的完整性和身份進行驗證,並對ISAKMP訊息進行加密,故保證了交換的安全性。IKEv1協商階段2的協商過程如下圖所示。

IPSec—IKE協議介紹

IKEv1協商階段2透過三條ISAKMP訊息完成雙方IPSec SA的建立:

協商發起方傳送本端的安全引數和身份認證資訊。

說明:

安全引數包括被保護的資料流、安全協議、加密演算法和認證演算法等需要協商的引數。

身份認證資訊包括第一階段計算出的金鑰和第二階段產生的金鑰材料等,可以再次認證對等體。

協商響應方傳送確認的安全引數和身份認證資訊並生成新的金鑰。

說明:

IPSec SA資料傳輸需要的加密、驗證金鑰由第一階段產生的金鑰、SPI、協議等引數衍生得出,以保證每個IPSec SA都有自己獨一無二的金鑰。

如果啟用PFS,則需要再次應用DH演算法計算出一個共享金鑰,然後參與上述計算,因此在引數協商時要為PFS協商DH金鑰組。

傳送方傳送確認資訊,確認與響應方可以通訊,協商結束。

IKEv2協商安全聯盟的過程

採用IKEv2協商安全聯盟比IKEv1協商過程要簡化的多。IKEv2定義了三種交換型別:初始交換(Initial Exchanges)、建立子SA交換(Create_Child_SA Exchange)以及通知交換(Informational Exchange)。IKEv2透過初始交換就可以完成一個IKE SA和第一對IPSecSA的協商建立。如果要求建立的IPSec SA大於一對時,每一對SA值只需要額外增加一次建立子SA交換(IKEv1仍然需要經歷兩個階段)。

初始交換

正常情況下,IKEv2透過初始交換就可以完成第一對IPSec SA的協商建立。IKEv2初始交換對應IKEv1的第一階段,初始交換包含兩次交換四條訊息,如下圖所示。

IPSec—IKE協議介紹

訊息①和②屬於第一次交換(稱為IKE_SA_INIT交換),以明文方式完成IKE SA的引數協商,包括協商加密和驗證演算法,交換臨時隨機數和DH交換。IKE_SA_INIT交換後生成一個共享金鑰材料,透過這個共享金鑰材料可以衍生出IPSec SA的所有金鑰。

訊息③和④屬於第二次交換(稱為IKE_AUTH交換),以加密方式完成身份認證、對前兩條資訊的認證和IPSec SA的引數協商。

建立子SA交換

當一個IKE SA需要建立多對IPSec SA時,需要使用建立子SA交換來協商多於一對的IPSec SA。另外,建立子SA交換還可以用於IKE SA的重協商。

建立子SA交換包含一個交換兩條訊息,對應IKEv1協商階段2,交換的發起者可以是初始交換的協商發起方,也可以是初始交換的協商響應方。建立子SA交換必須在初始交換完成後進行,交換訊息由初始交換協商的金鑰進行保護。

如果啟用PFS,建立子SA交換需要額外進行一次DH交換,生成新的金鑰材料。生成金鑰材料後,子SA的所有金鑰都從這個金鑰材料衍生出來。

通知交換

執行IKE協商的兩端有時會傳遞一些控制資訊,例如錯誤資訊或者通告資訊,這些資訊在IKEv2中是透過通知交換完成的,如下圖所示。

IPSec—IKE協議介紹

通知交換必須在IKE SA保護下進行,也就是說通知交換隻能發生在初始交換之後。控制資訊可能是IKE SA的,那麼通知交換必須由該IKE SA來保護進行;也可能是某子SA的,那麼該通知交換必須由生成該子SA的IKE SA來保護進行。