ESP传输模式拆解包流程

时间:2024-05-21 18:11:32

一、      ESP简介

       ESP,封装安全载荷协议(Encapsulating SecurityPayloads),是一种Ipsec协议,用于对IP协议在传输过程中进行数据完整性度量、来源认证、加密以及防回放攻击。可以单独使用,也可以和AH一起使用。在ESP头部之前的IPV4、IPV6或者拓展头部,应该在Protocol(IPV4)或者Next Header(IPV6、拓展头部)部分中包含50,表示引入了ESP协议。

 

二、      ESP传输模式数据包结构

ESP的数据包结构如下:

ESP传输模式拆解包流程

ESP头部:

(1) 安全参数索引SPI(32位):用来确定唯一的安全联盟

(2) ***SequenceNumber(32位):用于保护接收端免受重复操作攻击


ESP尾部:

(1) 填充Padding:字段长范围为0-255,用于将明文扩充到需要加密的长度,同时隐藏载荷数据的真实长度。

(2) 填充长度PadLength(8位):表示填充的字节数

(3) 下一头部NextHeader (8位):标志下一头部的类型(被加密的数据类型)。


ESP验证尾部:

(1)   鉴别数据Integrity Check Value-ICV(变长):在ESP数据包其他字段基础上计算出的完整性校验值。

 

       对数据的完整性验证需要计算SPI、***、载荷数据以及ESP尾部。

       对数据的保密性验证需要计算载荷数据以及ESP尾部。

 

三、      ESP传输模式装拆包流程

      ESP有两种模式:隧道模式和传输模式。隧道模式将发送的整个数据报文作为一个数据整体来处理,在整段数据前加上新的IP进行传输,不修改原报文。

对于传输模式而言,需要拆解报文,对原报文的数据部分进行处理,加上ESP头部后,再装上原报文的IP部分。

      对IPV4报文的处理过程示意图如下:

ESP传输模式拆解包流程

 

     对IPV6报文的处理过程示意图如下:

ESP传输模式拆解包流程

装包过程(以IPV4协议为例):

1、  将原IP报文的IP头和数据报文部分分离,在数据报文部分的尾部添加ESP尾部。ESP尾部包含:选择的加密算法需要对明文进行填充的数据Padding、填充长度Padding Length、下一头部Next Header标注被加密的数据报文类型。

ESP传输模式拆解包流程    

2、  对第一步得到的整体信息(原数据报文和ESP尾部)进行加密。具体的加密算法以及**由SA给出。

ESP传输模式拆解包流程

3、对第二步得到的已经加密的信息添加ESP头部(SPI和***),组装成Enchilada。

ESP传输模式拆解包流程

4、对第三步得到的Enchilada做摘要,得到完整性度量结果(ICV),附加在Enchilada尾部

ESP传输模式拆解包流程

5、在第四步得到的数据前加上原IP头,将原IP头中的Protocol中的值改成50,代表ESP

ESP传输模式拆解包流程


更清晰的转换对比图如下(以IPV4\TCP为例):

ESP传输模式拆解包流程


拆包过程:

1、数据接收方收到数据后,看到协议类型为50,知道这是一个ESP协议,查看ESP头,通过SPI决定数据对应的SA.
2、计算Enchilada部分的ICV,与数据包尾部的ESP ICV进行比较,确定数据的完整性。
3、检查Seq***,决定是否需要该数据信息。
4、根据SA提供的加密算法和**,解密被加密的Enchilada数据,得到原数据报文和ESP尾部
5、根据ESP尾部的填充长度信息,找出填充字段的长度,删去后得到原数据报文。
6、根据原IP头的目的地址进行转发。