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

关于IPSec的简单介绍,请见我的另一篇文章IPSec协议介绍
下面这张图是IP报文与ESP报文的对照示意图,传输模式下,原报文结构被拆解:
在这里插入图片描述

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

(1)首先,如上图所示,将原IP头与原IP报文数据段进行拆解,IP头暂不做考虑,后者为最终ESP数据报的数据来源。
(2)在拆解得到的数据报文末尾添加ESP trailer(尾部/挂载)信息。ESP trailer包含三部分:

  • 填充(Padding)
  • 填充长度(Padding Length)
  • 原报文协议类型(Next Header)
    在这里插入图片描述
    由于所选加密算法可能是块加密,当最后一块长度不足时就需要填充(Padding),附上填充长度(Pad ding Length)方便解包时顺利找出用来填充的那一段数据。Next header用来标明被封装的原报文的协议类型,4=IP。
    (3)将原IP数据报文以及第2步得到的ESP trailer作为一个整体进行加密封装。具体的加密算法与密钥由SA给出。
    在这里插入图片描述
    (4)为第3步得到的加密数据添加ESP header。ESP header由SPI和Seq#两部分组成。
    在这里插入图片描述
    加密数据与ESP header合称为“Enchilada”,构成认证部分。注意到被封装的原IP数据报文的协议类型收到保护,有加密的ESP trailer的Next header表明,而不出现在未加密的ESP header中。
    在这里插入图片描述
    (5)附加完整性度量结果(ICV,Integrity check value)。对第4步得到 的“enchilada” 部分做认证,得到一个32位整数倍的完整性度量值(MAC),并附在ESP 报文的尾部。完整性度量算法包括需要的认证密钥由SA 给出。在这里插入图片描述
    (6)将原IP头添加到步骤5得到的数据的头部,组成ESP数据报。
    在这里插入图片描述
    在该步骤中,将原IP头的协议类型修改为50,说明它封装的是一个ESP报文。

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

(1)接收方收到IP 报文后,发现协议类型是50,表明这是一个ESP数据报。首先查看ESP header,通过SPI 决定数据报文所对应的SA (可获得加密算法,解密密钥,度量算法和认证密钥等),获得对应的模式(tunnel/transport mode) 以及安全规范。
(2)拆分报文的IP header和IP报文数据段,计算“enchilada” 部分的摘要,与附在末尾的ICV 做对比,验证数据完整性。
(3)检查Seq# 里的顺序号,保证数据是“新鲜”的,此步骤防止数据回放攻击。
(4)根据SA 所提供的加密算法和密钥,解密被加密过的数据,得到原IP报文与ESP trailer。
(5)根据ESP trailer 的Padding Length信息,找出填充字段的长度,删去后得到原来的IP报文数据段。 根据ESP trailer的Next Header修改IP header。
(6)将IP header与原来的IP报文数据段合并,得到最初的IP报文,之后根据IP报文的目的地址进行转发。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值