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 演算法是 HMAC(Hash Message Authentication Code),主要原因是,它可以配合不同的雜湊演算法,譬如,MD5、SHA-1、RIPEMD-160 或 Tiger 等雜湊函數。另外加密時所需的秘密金鑰是在安全關聯(SA)裡所制定,在此暫時不去討論它如何產生。 (A) AH 標頭格式 認證標頭(AH)是 IPSec AH 協定所產生的一個新認證標頭,主要功能是認證原封包標頭是否遭受竄改,並將它置放於原封包標頭的後面。AH 標頭包含五個固定長度的欄位和一個不定長度的認證資料欄位,如圖 10-10 所示,各欄位功能如下:
圖 10-10 認證標頭格式 ² 下一個標頭(Next Header, NH):8 位元欄位。標示 AH 標頭後面緊接著的封包格式。譬如,TCP 封包為 6;IP 包裝的 IP 封包是 4。如果後面緊接著 ESP 標頭,則為 50,而 AH 的編號是 51。 ² 承載長度(Payload Length):8 位元欄位。表示整個 AH 標頭欄位的長度,計算方式是以 32 位元字組為單位,再除以 2,因為IPv6 封包標頭是以 64 位元字組為單位。 ² 保留(Reserved):16 位元保留欄位。目前皆設定為 0,還未指定使用方式。 ² 安全參數索引(Security Parameter Index, SPI):32 位元欄位。SPI 是通訊雙方事先協議完成的安全關聯(SA)索引值,它必須配合目的位址和安全協定(AH 或 ESP)來查詢相關安全參數。 ² 序號(Sequence Number):32 位元的無號整數值,是一個計數器的數值,主要防止重播攻擊(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):表示封包所承載資料是屬於何種通訊協定,譬如 TCP、UDP、或 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 協定有:傳輸模式與通道模式等兩種操作,說明如下: (A)AH 傳輸模式 AH 傳輸模式是將認證標頭放置於 IP 封包標頭與傳輸層協定(TCP、UDP 或其他協定)的標頭之間,有 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)欄位內容設定為 51(AH 協定),並將原來的值置於 AH 標頭的『Next Header』欄位上。譬如,原來 IP 封包所承載的是 TCP 協定(Protocol=5), 經過 AH 傳輸模式包裝後,IP 標頭上的 Protocol 欄位便成為 51(AH 協定),而 AH 標頭上的 Next Header 欄位則需設定為 5(TCP 協定,如圖 10-8 (b) 所示)。 (B)AH 通道模式 所謂『通道模式』(Tunnel Mode),即是隱藏原來的 IP 標頭,而另外製作一個新的封包標頭,並且利用 AH 標頭保護原來的 IP 標頭。圖 10-12 為 IPv4 與 IPv6 AH 通道模式的封包包裝,新的封包標頭稱之為『外部標頭』(Outer Header);而原來封包標頭稱之為『內部標頭』(Inner Header)。基本上,外部標頭的封裝格式與原 IP 標頭一樣,但它的目的位址與來源位址,可能和內部標頭不同,不相同的原因是該 AH 通道所扮演的角色有所不同(連接主機或安全閘門,容後介紹)。外部標頭的內容也可以被所經過的路由器修改,譬如 TTL 或標頭檢查碼等欄位。
圖 10-12 IPv4 與 IPv6 AH 通道模式的封裝格式
|
翻轉工作室:粘添壽
網路規劃與管理技術:
翻轉電子書系列:
|