資訊與網路安全技術 第 十二章 虛擬私有網路 - IPSec 上一頁  下一頁

 

12-4 IPSec AH協定

內容:

 12-4-1 IPSec AH 協定簡介

『認證標頭』(Authentication Header, AH IPSec 最基本的安全協定,它是針對 IP 封包標頭做安全認證,提供有『非連接導向的完整性』、『資料來源認證』、以及『反重播』等保護服務(12-6-1 節介紹)。另外 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)裡所制定,在此暫時不去討論它如何產生。

12-4-2 AH 標頭格式

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

12-7 認證標頭格式

  • 下一個標頭(Next Header, NH8 位元欄位。標示 AH 標頭後面緊接著的封包格式。各種通訊協定的編號是由 IANAInternet Assigned Numbers Authority)所制定(RFC 1700),譬如,TCP 封包為 6IP 包裝的 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)來查詢相關安全參數。也就是說,由 SPI、目的位址、與安全協定等三個欄位值,作為索引並查詢相關的安全參數(12-6-4 節介紹),安全參數有協定操作模式(傳輸或通道模式)、加密演算法、加密鑰匙、以及使用期限等等。目前 1 ~ 255 SPI 值由 IANA 保留未來使用,0 為特殊用途,256 ~ 232-1 可以任意使用。

  • 序號(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 演算法。

接下來,我們來討論 AH 協定如何利用『序號』防止重播攻擊。它是利用『滑動視窗』(Sliding Window的運作方式,當 SA 被建立時,傳送者與接收者的序號計數器都必須清除為 0 開始,傳送者每發送一筆封包出去便將序號計數器加一(不一定是給某一個固定接收者);接收者再利用滑動視窗法檢視哪一個序號的封包已經接收過,將所收到的封包號碼以環狀佇列排放,進入的封包序號依序填入佇列的前方(由前端指標指引),而佇列的後端表示已經回應過的序號(由後端指標指引)。在正常的情況下,接收端不斷接收與回應封包,前端指標與後端指標將會不停的滑動,因此稱之為滑動視窗法。當防止封包重播攻擊的功能啟動時,接收端收到封包後,將檢測封包序號是否小於後端指標所指引的數值,如果較小的話,表示該封包已回應過,可不予理會,如此便能避免重播攻擊。

主講人:粘添壽博士

 

資訊與網路安全技術