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

10-3 IPSec AH 安全協定

內容:

10-3-1 IPSec AH協定簡介

『認證標頭』(Authentication Header, AH IPSec 最基本的安全協定,它是針對 IP 封包標頭做安全認證,提供有『非連接導向的完整性』、『資料來源認證』、以及『反重播』等保護服務。另外 AH 並未對所承載的資料作任何保護,基本上,IP 封包在 Internet 網路上,乃經由路由器(或網路閘門)層層轉送才會到達目的地,每經過一個路由器轉送時,路由器便拆解該封包的標頭,根據標頭上所標示的目的位址,繼續往下一個路徑傳送;當然每一路由器都會重新包裝該封包,並製作新的封包標頭,所以有心人士非常容易去竄改封包標頭,或從事重播攻擊的行為。AH 的功能是對 IP 封包提供認證,確保遭受竄改的封包可以被偵測出來。

AH 使用密碼學的『訊息認證碼』(Message Authentication Code, MAC來認證 IP 封包標頭。簡單的說,傳送端將 IP 封包標頭經過雜湊演算法得到一個訊息摘要(Message Digest, MD),再將此訊息摘要經過秘密金鑰加密,得到一個 MAC 碼,最後將此 MAC 碼(製作 AH 標頭)與 IP 封包一併傳送給接收端;接收端收到此封包後,以同樣的演算法與秘密金鑰產生另一個 MAC 碼。如果兩者 MAC 碼相同的話,表示封包未遭受竄改或偽造;否則需拋棄此封包。目前最常用的 MAC 演算法是 HMACHash Message Authentication Code,主要原因是,它可以配合不同的雜湊演算法,譬如,MD5SHA-1RIPEMD-160 Tiger 等雜湊函數。另外加密時所需的秘密金鑰是在安全關聯(SA)裡所制定,在此暫時不去討論它如何產生。

(A) AH 標頭格式

認證標頭(AH)是 IPSec AH 協定所產生的一個新認證標頭,主要功能是認證原封包標頭是否遭受竄改,並將它置放於原封包標頭的後面。AH 標頭包含五個固定長度的欄位和一個不定長度的認證資料欄位,如圖 10-10 所示,各欄位功能如下:

 

10-10 認證標頭格式

²  下一個標頭(Next Header, NH8 位元欄位。標示 AH 標頭後面緊接著的封包格式。譬如,TCP 封包為 6IP 包裝的 IP 封包是 4。如果後面緊接著 ESP 標頭,則為 50,而 AH 的編號是 51

²  承載長度(Payload Length8 位元欄位。表示整個 AH 標頭欄位的長度,計算方式是以 32 位元字組為單位,再除以 2,因為IPv6 封包標頭是以 64 位元字組為單位。

²  保留(Reserved16 位元保留欄位。目前皆設定為 0,還未指定使用方式。

²  安全參數索引(Security Parameter Index, SPI32 位元欄位。SPI 是通訊雙方事先協議完成的安全關聯(SA)索引值,它必須配合目的位址和安全協定(AH ESP)來查詢相關安全參數。

²  序號(Sequence Number32 位元的無號整數值,是一個計數器的數值,主要防止重播攻擊(Replay Attack),容後再介紹。

²  認證資料(Authentication Data:不定長度的欄位。此欄位所存放的便是原來 IP 封包標頭的『完整性檢查值』(Integrity Check Value, ICV),即 IP 封包標頭經過 HMAC 運算後的值。如果是 IPv4 封包,則 ICV 的長度必須是 32 的整數倍,而 IPv6 必須是 64 的整數倍。AH 協定規定 IPSec 裝置至少必須提供 HMAC-MD5 HMAC-SHA-1 等兩個以上的 HMAC 演算法。

(B) AH 認證欄位

AH 認證欄位是傳送端選擇原來 IP 封包標頭上某些欄位的值,並將這些值經過 MAC 演算法計算,產生一個『完整性檢查值』(Integrity Check Value, ICV),再將此 ICV 值存放於 AH 標頭的認證資料欄位(如圖 10-10 所示)上;接收端收到 IPSec AH 封包後,選擇同樣欄位計算出 ICV,如果該 ICV AH 標頭上 ICV 相同的話,則表示該封包是正確的,但必須滿足下列三個需求:

1.      必須協調出針對 ICV 加密的秘密金鑰

2.      必須協調出採用何種認證演算法(如 HMAC-SHA-1);

3.      必須協調出選擇哪些欄位來計算 ICV 的值

基本上,這三個需求都必須在通訊之前,透過 SA 連線協議而成。但就第三個需求而言,除了雙方可協議出採用哪些欄位外,我們同時必須了解選擇欄位的原因。有些欄位的內容會隨時改變,並不適合做 AH 認證使用,否則會發生許多無謂的困擾。如以 TTL Header Checksum 欄位為例,IP 封包每經過一個路徑(或路由器),則 TTL 的值便會被減一,之後路由器會再重新計算標頭檢查值(Header Checksum),因此這兩個欄位隨時會遭受修改其內容。如果傳送端將隨時變更欄位的值加入計算的話,接收端在做認證檢查時,將很困難去辨別是正常變更或是遭受破壞。因此,我們必須先了解 IP 封包標頭上有哪些欄位容易變更、以及哪些欄位較不容易變更。在協調雙方通訊參數時(SA 連線),便可參照這些訊息來決定哪些欄位可加入認證範圍。當然,加入愈多的欄位則認證的安全性愈高,但這必須視通訊雙方的需要而定。

吾人將 IPv4 封包標頭較容易變更的欄有位:服務類別(Type of Service, TOS)、旗號(Flags)、存活時間(Time To Live, TTL)、分段偏移位址(Fragment Offset)、標頭檢查碼(Header Checksum)、選項(Options)。

不容易被變更欄位並可以選擇 ICV 計算欄位:

²  版本(Version):IP 封包版本,應該為 4

²  Internet 標頭長度(Internet Header Length, IHL):封包標頭的長度(包含 Options Padding 欄位)

²  總長度(Total Length):封包的總長度,其中包含封包標頭與承載資料(Data 欄位)。

²  識別(Identification):如果所承載的資料(如 TCP 封包)有經過分段後,再分別由不同的 IP 封包承載,則此欄位登錄該資料的分段號碼。

²  通訊協定(Protocol):表示封包所承載資料是屬於何種通訊協定,譬如 TCPUDP、或 ICMP 等等。

²  來源位址(Source Address):封包的來源位址。

²  目的位址(Destination Address):封包的目的位址。

基本上,選擇那些欄位計算 ICV,是由雙方協議的 SA 來決定,我們將 IPv4 的封包標頭顯示於圖 12-12,其中有底色的欄位表示有可能被選取的機會。如果沒有被選取的欄位,在計算 ICV 時都會被設定為零。

 

10-10-1  IPv4 標頭可參與計算 ICV欄位(有陰影部份)

我們用兩個簡單的範例,說明選擇那些欄位計算 ICV,可能會對 AH 認證能力產生影響。一者將總長度欄位加入計算,倘若傳輸當中封包所承載資料遭受替換,雖然攻擊者也可以修改總長度欄位的內容,來蒙騙接收者;但接收端還是可以由 ICV 計算出認證封包長度是否被變更,如此一來,表示 IPSec AH 不但可以保護封包標頭,也可認證整個 IP 封包,此即稱為『非連接導向的完整性』功能。另一者,倘若將來源位址加入 ICV 計算,則可以避免中間人攻擊,其原因是中間人將封包接收後,再發送新的封包給接收端,則新的封包的來源位址勢必遭受變更,接收端便可依此驗證出該封包的正確性,此即稱為『資料來源認證』功能。

10-3-2 IPSec AH操作模式

IPSec AH 協定有:傳輸模式與通道模式等兩種操作,說明如下:

AAH 傳輸模式

AH 傳輸模式是將認證標頭放置於 IP 封包標頭與傳輸層協定(TCPUDP 或其他協定)的標頭之間,有 IPv4 IPv6 兩種不同封包格式。 10-11 (a) 為原 IPv4 封包,經過 AH 傳輸模式包裝後的格式如圖 10-11 (b)所示,IP 標頭的長度可以由 20 Bytes 60 Bytes 之間,之所以不定長度是因為有可能在標頭後面加入選項(Options)資料,如果沒有選項資料,則 IP 標頭長度為 20 Bytes

 

10-11  IPv4 AH 傳輸模式包裝

基本上,原來 IPv4 封包標頭是不用修改的,只要將 AH 標頭加入即可,但因原 IP 封包所承載的協定已變成 AH 協定,而非原來的協定,因此還是需要將 IP 標頭內的『協定』(Protocol)欄位內容設定為 51AH 協定),並將原來的值置於 AH 標頭的『Next Header』欄位上。譬如,原來 IP 封包所承載的是 TCP 協定(Protocol=5), 經過 AH 傳輸模式包裝後,IP 標頭上的 Protocol 欄位便成為 51AH 協定),而 AH 標頭上的 Next Header 欄位則需設定為 5TCP 協定,如圖 10-8 (b) 所示)。

BAH 通道模式

所謂『通道模式』(Tunnel Mode,即是隱藏原來的 IP 標頭,而另外製作一個新的封包標頭,並且利用 AH 標頭保護原來的 IP 標頭。圖 10-12 IPv4 IPv6 AH 通道模式的封包包裝,新的封包標頭稱之為『外部標頭』(Outer Header;而原來封包標頭稱之為『內部標頭』(Inner Header。基本上,外部標頭的封裝格式與原 IP 標頭一樣,但它的目的位址與來源位址,可能和內部標頭不同,不相同的原因是該 AH 通道所扮演的角色有所不同(連接主機或安全閘門,容後介紹)。外部標頭的內容也可以被所經過的路由器修改,譬如 TTL 或標頭檢查碼等欄位。

 

10-12 IPv4 IPv6 AH 通道模式的封裝格式

 

翻轉工作室:粘添壽

 

網路規劃與管理技術:

 

 

翻轉電子書系列: