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

装包过程:

1.在原IP报文末尾添加尾部(ESP trailer)信息。尾部包含三部分。由于所选的加密算法可能是块加密,按摩当最后一块长度不够时,需要进行填充(padding),附上填充长度(padding lenght)方便解包时顺利找出用来填充的那一段数据。Next header用来表明被加密的数据报文类型,如TCP

IPSec 传输模式下 ESP 报文的装包与拆包过程_第1张图片

 2.将原IP报文以及第1步得到的ESP尾部作为一个整体进行加密。具体的加密算法与密钥由SA给出。

IPSec 传输模式下 ESP 报文的装包与拆包过程_第2张图片

3.为第2步得到的加密数据添加ESP头部。ESP头由两部分组成,SPI和序列号(Sequence number)。加密数据与ESP头合称为 ”enchilada“

IPSec 传输模式下 ESP 报文的装包与拆包过程_第3张图片

4.附加完整性度量结果(ICV,Integrity check value)。对第3步得到的 ”enchilada“ 做摘要,得到一个完整性度量值,附在ESP报文的尾部

IPSec 传输模式下 ESP 报文的装包与拆包过程_第4张图片

5.将原本的IP头附在头部,修改协议类型为 50,装包完成


拆包过程:

1. 接收方收到数据报文后,发现协议类型是 50,知道这是一个IPsec包。首先查看ESP头,通过里面的SPI决定数据报文所对应的SA。

2.计算 “enchilada” 部分的摘要,与附在结尾的ICV对比,如果一样,说明数据是完整的。否则可以断定收到的报文已经不是原来的报文。

3.检查Seq里的序列号,保证数据是”新鲜“的。

4.根据SA提供的加密算法和密钥,加密被加密过的数据,即 ”enchilada“ 。得到原IP报文与ESP尾部(trailer)。

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

6.最后根据得到的原IP包的目的地址进行转发。

IPSec 传输模式下 ESP 报文的装包与拆包过程_第5张图片


原博客地址:http://www.cnblogs.com/2014-cjs/p/4068923.html

你可能感兴趣的:(WEB安全)