IPsec傳輸模式下ESP報文的裝包和拆包過程


原創文章,拒絕轉載

裝包過程

總體流程圖

overview

過程描述

  1. 在原IP報文中找到TCP報文部分,在其后添加相應的ESP trailer信息。
  • ESP trailer 包含三部分:Padding,Pad length 和 Next header。Padding 即使用塊加密時,最后一個數據塊長度不足時所做的填充。Pad length 指填充的長度,方便拆包時找到用來填充的數據段。Next header 標明被封裝的原報文的協議類型,例如 6 = TCP。
  1. 將原 TCP 報文和第1步得到的 ESP trailer 作為一個整體進行加密封裝。具體的加密算法和密鑰由SA給出。
  2. 為第2步得到的密文添加 ESP 頭。ESP 頭由 SPI (Security Parameter Index) 和 Seq # 兩部分組成。密文和 ESP頭合起來稱為"enchilada",構成認證部分。
  3. 附加完整性度量結果(ICV)。對第3步生成的"enchilada"認證部分做摘要(ESP Authentication Data),得到一個32位整數倍的 ICV,附在"enchilada"之后。ICV 生成算法和驗證密鑰由 SA 給出。
  4. 將原始的 IP 報文頭中的協議號改為50(代表 ESP),然后將 IP 報文頭加到第4步的結果之前構成 IPsec 報文。

裝包前后示意圖

encapsulation

拆包過程

過程描述

  1. 接收方收到 IP 報文后,發現協議類型是50,標明這是一個 ESP 包。首先查看 ESP 頭,通過安全參數索引號 SPI 決定數據報文所對應的 SA,獲得對應的模式(隧道或傳輸模式)以及安全規范。
  2. 根據 SA 指定的摘要算法和驗證密鑰計算"enchilada"的摘要值,與附在 IP 報文最后的 ICV 進行對比,二者相同則數據完整性未被破壞。
  3. 檢查 ESP 頭中的 Seq # 里的序列號,保證數據是新的,避免重放攻擊。
  4. 根據 SA 所指定的加密算法和密鑰,解密密文段,得到原來的 TCP 報文和 ESP trailer。
  5. 根據 ESP trailer 的填充長度信息,找出填充字段的長度,刪除填充字段得到原來的 TCP 報文。
  6. 根據 TCP 報文頭信息將報文交付給傳輸層。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM