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

 

 

12-6 IPSec AH 認證欄位

內容:

12-6-1 產生完整性檢查值

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

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

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

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

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

12-6-2 IPv4 易變更的欄位

以下列出 IPv4 封包標頭較容易變更的欄位:

  • 服務類別(Type of Service, TOS):此欄位是說明該封包所要求的服務等級,此服務等級是由延遲時間、效能或可靠度的要求程度來分級。一般 IP 網路都將此欄位視為不易變更的,但是 IPSec 網路還是將它視為易變更欄位,因為還是有一些路由器會去更改它的內容。

  • 旗號(Flags):IP 封包標頭有三個位元的旗號,分別是DFMF 和另一個未使用的位元(0DM)。如 DFDon’t Fragment)旗號被設定(DF=1),則表示此封包是禁止被分段的;如 MFMore Fragment)旗號被設定(MF=1)的話,則表示該封包還有其他分段會緊接著送過來;如 MF=0,則表示本封包是最後的分段封包(或未分段封包)。基本上 IPSec AH 是不允許 IP 封包再被分段,因此此欄位的值必須都是零。

  • 存活時間(Time To Live, TTL):此欄位是用來限制封包的存活時間,以避免封包在網路無窮的環繞。傳送中的封包每經過一個路由器,該路由器自動將 TTL 值減一,再存回欄位上,如果該欄位的值等於零,則拋棄封包。因此,TTL 的值隨時會改變,多半不適合納入計算 ICV 的範圍。

  • 分段偏移位址(Fragment Offset):此欄位(13 位元)是說明本封包是原來 IP 封包經由分段後的位址。基本上 IPSec AH 是不允許 IP 封包再被分段,因此此欄位的值必須都是零。

  • 標頭檢查碼(Header Checksum):此欄位是計算 IP 封包標頭的檢查值。如果封包在傳送當中,有任何欄位被修改時,則此欄位的值將會隨之改變,因此計算 ICV 值時,都將此欄位設定為零。

  • 選項(Options):此欄位是不定長度,也許會攜帶某些選擇性的訊息,但目前路由器大多忽略該欄位上的訊息,所以大部份的 IPSec 也都不會將該欄位加入 ICV 計算。

12-6-3 IPv4 不易變更的欄位

IPv4 封包標頭在傳輸當中,不容易被變更欄位有:

  • 版本(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 時都會被設定為零。

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

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

主講人:粘添壽博士

 

資訊與網路安全技術