網路規劃與管理技術第 十章 VPN 網路規劃與管理 上一頁    下一頁

10-5 ISAKMP協定

內容:

10-5-1 ISAKMP 協定簡介

『網際網路安全關聯金鑰管理協定』(Internet Security Association Key Management Protocol, ISAKMP是美國 NSANational Security Agency)所制定的標準規範,並詳列於 RFC 2408ISAKMP IPSec 協定(VPN 裝置)中相當重要的協定,主要功能是建立、修改與刪除『安全關聯』(Security Association, SA。其中包含協議雙方的加密金鑰、認證金鑰、以及各種演算法,也就是說,IPSec 協定所欲採用的安全措施皆是利用 ISAKMP 協定建立而成。為了因應 Internet 網路的成長,以及不同應用環境需求,雖然 ISAKMP 只提供一個安全性的基礎架構,有關較詳細的金鑰交換協定,則由另一個協定標準來規劃(IKE 協定,RFC 2409)。

ISAKMP 必須利用 UDP 協定傳輸,且由 IANA 指定在第 500 埠口(500/udp),此外,在 ISAKMP 協定上所承載訊息的編碼,全部規範於 RFC 2407,稱之為IPSec 解譯領域』(IP Security Domain of Interpretation, IPSec DOI,所以各廠商在實作 IPSec 裝置時,必須依照 IPSec DOI 上的編碼格式。

配合前一章的敘述,我們可以瞭解建構 VPN 網路需包含 IP Sec AHIPSec ESPISAKMPIKE IPSec DOI 等五個主要通訊協定,的確讓人眼花撩亂。讀者可以先參考圖 10-16 的說明,或許對瞭解這些協定之間的關係,比較容易進入狀況。說明如下:

²  倘若工作站 A 欲透過安全連線與工作站 B 通訊,兩工作站同屬一個 VPN 網路之內,但地理位置不相同,通訊連線必須經由公眾網路連接。

²  工作站 A 將封包傳送給該區域網路的安全閘門(SA_A),SG_A 判斷必須建立 IPSec 安全連線後,接著查詢本身是否有描述相關安全機制的 SA,如果有則發出 IPSec 封包(ESP AH 協定);如果沒有或SA 過期的話,則啟動 ISAKMP 協定。

²  SG_A 啟動 ISAKMP 協定與 SG_B 建立連線(500/udp),雙方協議建立 SA。其中包含協議安全套件(加密與認證系統)、安全協定(AH ESP)、加密金鑰與認證金鑰等等。其實,ISAKMP 協定只提供基本架構,至於如何協議安全機制是由另一個 IKE 協定來完成。

²  IKE 協定並無法獨立運作,也沒有專屬通訊的傳輸埠口,而是被嵌入於 ISAKMP 協定上,因此IKE 協定是在 ISAKMP 的基本架構上實現,主要的功能是協議相關的安全措施。

²  建立 SA 時,必須先確認對方的身份。在安全套件裡可以指明欲利用數位憑證(PKI Kerberos 系統)或帳戶/密碼(Kerberos 系統)方式,所以ISAKMP 協定還必須實作認證機制。

²  當雙方利用 ISAKMP 協定通訊時,各種協議事項都是利用 IPSec ODI 規範來編碼,只要各家廠商製造安全閘門時,都是利用 IPSec ODI 編碼各種訊息(或安全參數),則他們之間通訊就不會發生不一致的現象

 

10-16 IPSec 相關安全協定

簡而言之,ISAKMP 主要提供 SA 訊息的管理,也就是如何將 SA 記錄登錄於『安全關聯資料庫』(SA Database, SAD內,其中包含刪除、更新或增加 SA 記錄,並協議欲採用的安全套件。對於初學者而言,ISAKMP IKE 協定很容易搞混,不易分辨兩者之間運作程序的關聯性。作者建議在研習 ISAKMP 協定時,先假設所有協議事項都是由 ISAKMP 協定所完成,暫時不要去考慮 IKE協定;等到研習 IKE 協定時,再去考慮如何將它嵌入 ISAKMP 協定即可。

10-5-2 ISAKMP 協定功能

接下來,介紹幾點 ISAKMP 協定特性,這對我們了解 ISAKMP 協定非常有幫助。

A)協議事項

ISAKMP 協議 SA 所需的:安全協定(AH ESP)、操作模式(傳輸或通道)、SA 壽命、認證金鑰、加密金鑰、以及各種編碼演算法,協議後的訊息將登錄於 SAD 資料庫內,作為 IPSec 通訊時引用的 SA 安全參數。ISAKMP並不規範鑰匙交換的運作程序,僅提出一個基本架構,此架構允許各種金鑰交換協定嵌入,譬如 IKE 協定。

B)建立與管理 SA

若一個 SA 描述兩個或兩個以上的實體之間的安全政策,這個關係是由一組訊息來表示兩個實體之間的連接,且這些訊息必須允許實體之間的所有連線所共享。由此可見,建立 SA 完全著重於訊息的安全機制,並非僅是兩個實際連接的硬體介面。所以建立一個安全關聯是表示一個序列的安全參數,可以用一個『安全參數索引』(Security Parameter Index, SPI來代表。當安全閘門(或安全主機)欲發出安全連線時,再搜尋適合的安全關聯來引用。

SA 不存在時(或過時失效),安全閘門(或安全主機)則需啟動 ISAKMP 協定來建立新的 SA。在 ISAKMP 協商過程中或許會啟動到其他通訊協定,如IKE 協定,因此可能需要多個協定共同來完成。為了實現多個協定的運作,ISAKMP 協定制定一個起始協定交換』(Initial Protocol Exchange, IPE的運作程序(或稱為第一階段協商,Phase 1 Negotiation。當雙方開始協議時,發起者發送 IPE 訊息給對方,其中包含一些較常用的安全套件,如果對方同意接受的話,則緊接著啟動其他協定(如 IKE)來協議該套件的安全參數;即使對方不同意,仍必須回答可以接受的安全套件。至於其他安全協定(如 IKE)可被嵌入 ISAKMP 協定之中。

C)認證機制

為了確認建立 SA 的對方身份,ISAKMP 必須實作身份認證機制。隨著 VPN 網路的應用範圍,使用者身份認證方式也有所不同,基本上存在下列兩種方式,而且 ISAKMP 必須同時提供這兩種認證機制:

²  憑證授權(Certificate Authorities, CA:使用者或組織單位由認證中心(CA Center)發給予『數位憑證』(Digital Certificate),通訊雙方就利用此憑證彼此認證對方身份。採用數位憑證需涉及認證公開金鑰問題,這方面請參考第九章的 PKI 系統。

²  金鑰分配中心(Key Distribution Center, KDCKDC 發給一個秘密金鑰或數位憑證給使用者(或組織單位),通訊雙方就利用它來認證彼此身份,如 Kerberos 系統。KDC 系統較適合於企業內網路運作,也是目前許多 VPN 網路皆採用的機制。

D)隱密性機制

為了達到建立 SA 的隱密性,ISAKMP 協定除了提供公鑰認證機制之外,還需利用公鑰系統來交換鑰匙材料,並建立通訊所需的會議金鑰(Session Key);在通訊當中,雙方係利用秘密金鑰系統(使用會議金鑰)達到隱密性的功能。然而 ISAKMP 協定沒有定義金鑰交換協定與會議金鑰所產生的機制,這方面可透過其它協定來完成(如 IKE 協定)。

10-5-3 ISAKMP 協定堆疊

(A) 協定堆疊

10-17 ISAKMP 協定在 Internet 網路上的協定堆疊,其中只是希望在不影響原來應用程式的架構下,將原來不可靠的 IP 協定轉換成可靠的 IPSec,換句話說,將 IP 協定轉換成 IPSec 協定的同時,對原來 TCP UDP 層次並不影響,所以原來架設在 TCP/UDP 上的應用程式,無需任何的修改也能利用 IPSec 協定來提高其安全性。其做法是先利用 ISAKMP 協定來協商(或建立 SA),再決定何種應用程式需將 IP 協定轉換成 IPSec 協定。然而 ISAKMP 協商連線與其它應用程式一樣,都是透過 Socket 端點連線來建立,至於 ISAKMP 通訊若需要保護,可能會建立 ISAKMP SA 的安全機制,也可能透過 IPSec 協定來傳送,這完全依照雙方協商的『保護套件』(Protection Suite而定。

 

10-17 IPSec 相關安全協定

(B) ISAKMP 封包標頭

ISAKMP 封包是利用 UDP協定來傳送,並且 IANA ISAKMP 固定於埠口 500500/udp)。圖 10-18 IP ISAKMP 封包包裝,它除了一個封包標頭外,還包含若干筆 ISAKMP 承載(ISAKMP Payload),其中每一筆 ISAKMP 承載都由承載標頭(Payload Header)記錄所承載的訊息型態與承載資料(Payload Data)所組成。

 

10-18 IP ISAKMP 封包包裝

 

10-19 ISAKMP 封包標頭格式

10-19 ISAKMP 封包標頭的格式,各欄位功能如下:

²  發起者 CookieInitiator Cookie:此欄位為 64 位元長度,是一個序號計數。表示建立 SA、通知 SA、或是刪除 SA 的發起者,以序號表示是為了防止重複攻擊及阻斷攻擊(容後說明)。

²  回應者 CookieResponder Cookie:此欄位為 64 位元長度,用來表示針對哪一個發起者 Cookie 所做的回應,存放的值就是所欲回應發起者 Cookie 的值。

²  下一個承載(Next Payload):此欄位為 8 位元長度,用來表示緊接著在標頭後面的第一個承載的型態。表 16-1 ISAKMP 目前所指定的承載型態,與其相對應的數值。

10-1 ISAKMP 承載封包的類型

                承載型態

表示值

未用(None

0

安全關聯承載(Security Association, SA

1

提案承載(Proposal, P

2

轉換承載(Transform, T

3

金鑰交換承載(Key Exchange, KE

4

身份標示承載(Identification, ID

5

認證承載(Certification, CERT

6

認證要求承載(Certification Request, CR

7

雜湊值承載(Hash, HASH

8

簽章承載(Signature, SIG

9

臨時亂數承載(Nonce

10

通知承載(Notification, N

11

刪除承載(Delete, D

12

製造商標示承載(Vender ID, VID

13

保留未用

14 - 127

私人使用承載(Private USE

128 - 255

²  主要版本(Master Version):此欄位為 4位元長度,表示該 ISAKMP 封包的版本。在 ISAKMP 規範中規定,ISAKMP 裝置並不接受比自己版本較高的封包。

²  次要版本(Minor Version:此欄位為 4位元長度,表示該 ISAKMP 封包的次要版本。

²  交換種類(Exchange Type):此欄位為 8位元長度,表示此封包訊息的交換型態。表 10-2 ISAKMP 協定所定義的交換型態:

10-2 交換類別

交換型態

表示值

未使用(None

0

基本交換(Base Exchange

1

身份保護交換(Identity Protection Exchange

2

僅認證交換(Authentication Only Exchange

3

積極交換(Aggressive Exchange

4

訊息交換(Information Exchange

5

ISAKMP 未來使用

6-31

DOI 描述使用

32-239

私人使用

240-255

²  旗標(Flag):此欄位為 8位元長度,目前只用到 3 個位元,其他位元都先設定為 0。旗標位元表示封包的狀態,說明如下:

1.         編碼位元(Encryption bit, E):此位元被設定時,表示標頭之後的承載都已被 ISAKMP 所指定的加密演算法編碼,否則表示承載資料都是明文。

2.         承諾位元(Commit bit, C):此位元是使用於單一鑰匙交換同步,以確保在 SA 建立完成之前不會收到任何加密的資料。此位元設定為 1 乃表示雙方已協議出秘密金鑰,若其中一方設定為 1 時,就必須等到另一方同樣設定為 1,方可認定雙方都已確定秘密金鑰,始可傳送已加密的訊息。

3.         僅供認證位元(Authentication Only Bit, A):此位元設定為 1 時,表示此封包僅採用 SA 所指定的認證演算法進行完整性檢查,但不採用加密方法來保護訊息。

²  訊息標示(Message ID):此欄位為 4 個位元長度,包含由發起者在第二階段協議中所產生的隨機數字。如果有兩個以上的 SA 建立連線傳送訊息(如碰撞現象),此訊息標示可以顯示出之間的不同,而被用來識別第二階段連線的唯一表示值。

²  長度(length:此為 4 個位元長度的欄位,記錄整個封包的長度,其中包含封包標頭與承載資料,以位元組為計算單位。

cookie是一個 ISAKMP SA 通訊連線的標示,其功能和 IPSec 協定(AH ESP)封包標頭上的序號(Sequence Number)欄位非常相似,除了當作連線識別之外,還必須具有防止反重播攻擊與阻斷攻擊。為了預防攻擊者猜測出,某一個 ISAKMP SA 連線是屬於那一個安全閘門所建立的,cookie 大多是利用雜湊演算法,計算出產生者(發起者或回應者)所欲協調安全機制的 IP 位址與傳輸埠口,並加入日期與時間戳記。

翻轉工作室:粘添壽

 

網路規劃與管理技術:

 

 

翻轉電子書系列: