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

ESP和传输模式简介

ESP(Encapsulating Security Payloads),封装安全载荷协议,IPsec 所支持的两类协议中的一种。该协议能够在数据的传输过程中对数据进行完整性度量,来源认证以及加密,也可防止回放攻击。

ESP在传输模式时,不会生成新的IP头,而是采用原来的IP头,保护的也仅仅是真正传输的数据部分,而不是整个IP报文。处理的时候,原来的IP报文会先被拆开,在数据部分部分前后分别加上新的ESP头和ESP尾,再在末尾加上对组装过的数据部分的完整性认证信息,最后再装回原来的IP头,即原来的IP包被修改过再传输。

原IP包vs传输模式下的ESP包

装包前后图形化对比:
图形化对比

装包前后数据结构对比:
结构

传输模式下的ESP装包和拆包过程

装包过程

注意分清加密(红色)和认证(黄色)的数据区域
流程

  1. 在原 IP报文末尾添加ESP尾部信息。
    ESP trailer包含三部分:
    Padding(所选加密算法可能是块加密,因此当最后一块长度不够时就需要进行填充)
    Pad length(说明填充的长度,方便解包时删除用来填充的那一段数据)
    Next header(用来标明被加密的原部分的协议类型,例如TCP)

  2. 将原 IP 报文的数据部分与第1步得到的ESP尾部作为整体(上面流程图的红框)进⾏加密,加密算法与密钥由SA给出。

  3. 为第2步得到的加密数据添加ESP头部信息,对这两者组合体做一个摘要,得到一个完整性度量值(ESPMessage Authentication Data),并添加到该组合体尾部。
    ESP头包含两部分:
    SPI (Security Parameter Index安全参数索引,用于将收到的 IPsec 数据包与其对应的SA进行关联,从SAD中获得关于该IPsec包一些信息如协议所有的算法和密钥)
    顺序号(Sequence number占32比特,SA 初次建立时置0,每发送一个数据包加1,用于抵抗重放攻击)

  4. 把原IP头加到ESP头前面,这样基于ESP协议的传输模式下装包便完成了。

拆包过程

  1. 除开IP头以及末尾的Authentication Data部分,对中间部分计算摘要,与附在末尾的Authentication Data做对比,如果一样的话说明数据是完整的,否则可以断定所收到的报文已经不是原来的报文了。

  2. 查看ESP头,通过⾥面的 SPI 得到数据报⽂所对应的SA,以便在SAD获取加密所有算法和密钥;检查顺序号,保证数据是“新鲜的”而不是回放攻击。

  3. 根据SA所提供的加密算法和密钥,解密被加密过的数据,得到原IP报文的数据部分与ESP尾。

  4. 根据ESP尾里的Padding填充长度信息,我们可以找出填充字段,删去后就得到原IP报文的数据部分。

  5. 将 IP头和IP数据部分组合即得到完整的原IP报文。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值