当前位置:网站首页>IPSec传输模式下ESP报文的装包与拆包过程

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

2022-06-23 12:01:00 梦飞

先上图

装包过程

  1. 在原IP报文中的payload(可能承载了是TCP报文)后面添加ESP trailer信息。
  • ESP trailer包括三部分:Padding, Pad length, Next header。由于所选加密算法可能是块加密,所以可能需要进行填充(Padding);附上的填充长度(Pad length)方便在解包时移除填充的数据;Next Head用来表明原IP报文的payload的协议类型,如6表示TCP。
  1. 将原IP报文中的payload与ESP trailer作为整体进行加密,加密的算法与密钥由SA(Security Association)给出。
  2. 为第2步得到的加密数据添加ESP header,加密数据与ESP header 合称为“Enchilada”,对“Enchilada”做一个摘要,得到一个完整性度量值(ESP Message Authentication Data),并添加到最后面,完整性度量算法包括需 要的认证密钥由SA 给出。
  • ESP header包括两部分:SPI (Security Parameter Index),Sequence number。 SPI用于与SA进行关联,从SAD中获得关于该IPSec包的协议算法和密钥等信息;Sequence number初始建立时为0,每发送一个数据包自增1,用于抵抗重发攻击。
  1. 把原IP头的protocol字段改为50(表示上层协议为ESP),并加到ESP header前面,完成装包。

拆包过程

  1. 接收方收到IP 报文后,发现协议类型是50,表明这是一个ESP 包。首先查看ESP header,通过SPI 决定数据报文所对应的SA ,获得对应的模式(tunnel/transport mode) 以及安全规范。
  2. 计算“enchilada” 部分的摘要,与附在末尾的Authentication Data做对比,验证数据完整性检查顺序号,保证数据是“新鲜”的,防止回放攻击。
  3. 根据SA 所提供的加密算法和密钥,解密被加密过的数据,得到原IP报文的payload与ESP trailer。
  4. 根据ESP trailer的Next Header判断ESP所封装的报文协议类型(如TCP),并根据Padding Length填充长度信息,找出填充字段的长度,删去后得到原来的IP报文的payload。
  5. 将IP头和原IP报文的payload组合,便得到完整的原IP报文。

经典图示

注:payload(载荷数据)是相对的,对于IP协议报文而言,payload是TCP header + TCP payload,所以要注意区分以上文字和图片中出现的payload描述。

原网站

版权声明
本文为[梦飞]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/2028381