網路安全協議之IPsec

LightningStar發表於2021-11-21

宣告

本文僅發表在部落格園,作者LightningStar。

簡介[1]

IPSec(Internet 協議安全)是一個工業標準網路安全協議,工作在OSI模型的第三層,即網路層,為IP網路通訊提供透明的安全服務,可使TCP/IP通訊免遭竊聽和篡改,可以有效抵禦網路攻擊,同時保持易用性。IPSec是一種端到端的安全模式,通訊資料由傳送方加密,接收方解密,網路中其他的節點和主機無需支援IPSec。

IPSec工作網路層,使其在單獨使用時適於保護基於TCP或UDP的協議(如安全套接子層(SSL)就不能保護UDP層的通訊流)。這就意味著,與傳輸層或更高層的協議相比,IPsec協議必須處理可靠性和分片的問題,這同時也增加了它的複雜性和處理開銷。相對而言,SSL/TLS依靠更高層的TCP(OSI的第四層)來管理可靠性和分片。[2]

IPSec兩個基本目標:

  • 保護IP資料包的安全性
  • 為抵禦網路攻擊,提供透明的安全服務

IPSec提供了兩種安全機制:

  • 認證
    認證機制使得IP通訊的資料接收方能夠確認資料傳送方的身份,檢測資料在傳輸過程中是否經過了篡改。
  • 加密
    通過對資料加密保證資料的機密性,防止資料被竊聽。

後文中介紹的AH協議定義了認證的應用方法,提供資料來源認證和完整性保障;ESP協議定義了加密的應用方法,提供資料來源加密和可選認證的應用方法,提供了可靠性保障。在實際進行IP通訊時,可以根據需要同時使用兩種或者選擇使用其中的一種。

協議組

IPSec不是一個單獨的協議,它包括:

  • 網路認證協議(AH, Authentication Header)
    認證頭,為IP資料包提供無連線資料完整性、訊息認證以及防重放攻擊保護
  • 封裝安全載荷(ESP, Encapsulating Security Payload)
    提供機密性、資料來源認證、無連線完整性、放重放和有限的傳輸流(traffic-flow)機密性
  • 網路金鑰交換(IKE, Internet Key Exchange)
    為AH、ESP操作所需的安全關聯(Security Association, SA)提供演算法、資料包和金鑰引數
  • 以及一些用於網路認證和加密的演算法。

報文格式

IPSec協議有兩種封裝模式:[3]

  • 傳輸模式(Transport Mode)
    AH或ESP被插入到IP頭之後,但在所有傳輸層協議之前,或所有其他IPSec協議之前。用於兩臺主機之間的通訊,或者是一臺主機和一個安全閘道器之間的通訊。在傳輸模式下,對報文進行加密和解密的兩臺裝置本身必須是報文的原始傳送者和最終接收者。

  • 隧道模式(Tunnel Mode)
    AH或ESP被插入到IP頭之前,並另外生成一個新的IP頭放到AH或ESP之前。通常,在兩個安全閘道器(路由器)之間的資料流量,絕大部分都不是安全閘道器本身的通訊量,因此在安全閘道器之間一般不使用傳輸模式,而總是使用隧道模式。在一個安全閘道器被加密的報文,只有另一個安全閘道器能夠解密。因此必須對IP報文進行隧道封裝,即增加一個新的IP頭,進行隧道封裝後的IP報文被髮送到另一個安全閘道器,才能夠被解密。

協議型別 報文格式,圖源[3:1]
AH協議 image_121
ESP協議 image_122
AH和ESP協議 image_123

認證頭 AH[4]

認證頭(Authentication Header,AH)被用來保證被傳輸分組的完整性和可靠性。此外,它還保護不受重放攻擊。

image_125
圖源文獻[4:1]

  • 下一個頭 next header:標識被傳送資料所屬的協議。
  • 載荷長度:AH的長度,單位為32bit。
  • 保留:為將來的應用保留(目前都置為0)。
  • 安全引數索引:與IP地址一同用來標識SA。
  • 序列號
    單調嚴格增加的序列號(對於傳送的每個資料包遞增1)以防止重放攻擊。啟用重放檢測時,序列號永遠不會重複使用,因為必須在嘗試將序列號遞增到其最大值之外重新識別新的SA。
  • Integrity Check Value 認證資料
    該欄位可能會被padding,以適應IPV6中的8位元組對齊或者IPV4中的4位元組對齊。

封裝安全載荷 ESP[4:2]

封裝安全載荷(Encapsulating Security Payload,ESP)協議對分組提供了源可靠性、完整性和保密性的支援。與AH頭不同的是,IP分組頭部不被包括在內。

image_126
圖源文獻[4:3]

  • 安全引數索引
    用於標識具有相同IP地址和相同安全協議的不同SA。由SA的建立者定義。
  • 序列號
    單調遞增的數值,用來防止重放攻擊。
  • 載荷資料(variable)
    如果沒使用ESP的加密功能,則載荷資料域的內容是“下一個頭”所指示的資料;如果使用了ESP的加密功能,則使用加密載荷資料和ESP尾部資料所得的密文作為payload data.
    The protected contents of the original IP packet, including any data used to protect the contents (e.g. an Initialisation Vector for the cryptographic algorithm). The type of content that was protected is indicated by the Next Header field.
  • 填充
    某些塊加密演算法用此將資料填充至塊的長度。
  • 填充長度
    以位為單位的填充資料的長度。
  • 下一個頭
    標識載荷中封裝的資料所屬的協議。Type of the next header. The value is taken from the list of IP protocol numbers.
  • 認證資料
    又叫做完整性校驗值(ICV)。包含了認證當前包所必須的資料。

網路金鑰交換 Internet Key Exchange(IKE)[5]

IKE是在IPSec協議組中用於建立Security Association(SA)[6]的協議。IKE首先要進行身份認證,然後再進行Diffie-Hellman金鑰交換(Diffie-Hellman key exchange[7]),建立起共享祕密(shared secret)[8],並通過共享祕密派生金鑰。

通道建立過程[9]

IPsec通道建立過程分為兩部分:

  • IKE階段1
    這一階段,會建立ISAKMP(Internet Security Association and Key Management Protocol)會話。在這個階段,二者會協商加密方法、認證方法以及其他的一些安全引數。這些安全引數的集合就是SA(Security Association)。

  • IKE階段2
    在這一階段,使用者就可以使用AH或者ESP協議來傳輸資料。這一階段根據傳輸模式可以分為兩種:Transport Mode和Tunnel Mode。現在又回到了文章最開始的報文格式的內容。

擴充閱讀

網路安全之IPsec詳解

參考文獻


  1. 石瑞生. 大資料安全與隱私保護[M]. 北京郵電大學出版社, 2019. ↩︎

  2. IPSec-wiki ↩︎

  3. IPsec 網際網路安全協議 W3C school ↩︎ ↩︎

  4. IPSec-en-wiki ↩︎ ↩︎ ↩︎ ↩︎

  5. Internet Key Exchange en-wiki ↩︎

  6. Security Association en-wiki ↩︎

  7. Diffie–Hellman key exchange ↩︎

  8. Shared secret en-wiki ↩︎

  9. IPsec (Internet Protocol Security) ↩︎

相關文章