IPSec 传输模式下 ESP 报文的装包与拆包过程

IPSec 传输模式下 ESP 报文的装包与拆包过程

IP Header 的结构:

在这里插入图片描述

ESP 协议有隧道模式和传输模式,隧道模式会加密所有的IP packet并添加新的header;

传输模式则仅加密传输的数据,不加密IP Header;

装包过程

隧道模式

(1) 在原 IP 报文末尾添加 ESP trailer 信息,其中ESP trailer 包含三部分:Padding ,Pad length, Next header。Padding 和 Pad length用于块加密,Next header 用来标明被封装的原报文的协议类型,如:Next header = 4,则为IP类型

在这里插入图片描述

(2) 将步骤(1)得到的报文整体进行加密,得到密文M0,加密算法由SA给出

(3) 在M0 前面添加 ESP header得到M1 构成认证部分,其中ESP header由 SPI 和Seq# 两部分组成。

在这里插入图片描述

(4) 对M1 进行完整性认证,得到一个32bit的完整性度量值(MAC),将MAC附在ESP报文的尾部

在这里插入图片描述

(5)构造新的IP Header附在ESP报文前面组成新的IP报文。个新的 IP header
的 IP 地址由路由器和安全网关解释,可以和原报文不同。

在这里插入图片描述

下图中,左,右分别为原IP报文和IPSec报文,新IP header 的 proto = 50,即为ESP 报文

在这里插入图片描述

在这里插入图片描述

传输模式

传输模式加密除IP Header的所有内容且不添加新的IP Header,其他过程与隧道模式一致

(1) 将除IP header 外的所有数据进行加密,得到密文 M0

(2) 将ESP Header 附加到 M0 头部,得到 M1

(3)对M1 进行完整性认证,得到一个32bit的完整性度量值(MAC),将MAC附在ESP报文的尾部,得到 M2

(4) 修改IP header 的proto 值 为 50,附加到 M2 头部,生成IPSec 包进行传输

在这里插入图片描述

拆包过程

隧道模式

(1) 接收方收到 IP 报文后,发现协议类型是50,表明这是一个 ESP包。首先查看 ESP header,通过 SPI 决定数据报文所对应的 SA,获得对应的模式 (tunnel/transport mode) 以及安全规范。

(2) 计算M1 部分,与末尾的MAC比较以验证数据完整性

(3) 检查 Seq# 里的顺序号,保证数据是最新的,防止重放攻击

(4)根据 SA 所提供的加密算法和密钥,解密被加密过的数据,得到
原 IP 报文与 ESP trailer。

  1. 根据 ESP trailer 的填充长度信息,找出填充字段的长度,删去
    后得到原来的 IP 报文。

(6) 根据得到的原 IP 报文的目的地址进行转发。

传输模式

(1) 接收方收到 IP 报文后,发现协议类型是50,表明这是一个 ESP包。查看 ESP header,通过 SPI 决定数据报文所对应的 SA,获得对应的模式 (tunnel/transport mode) 以及安全规范。

(2) 计算M1 部分,与末尾的MAC比较以验证数据完整性

(3) 检查 Seq# 里的顺序号,保证数据是最新的,防止重放攻击

(4)根据 SA 所提供的加密算法和密钥,解密被加密过的数据,得到
原 IP 数据报文与 ESP trailer。

  1. 根据 ESP trailer 的填充长度信息,找出填充字段的长度,删去
    后得到原来的 IP数据 报文。

(6) 根据IP 报文的目的地址进行转发。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章