之前的文章讲述了IPSec VPN的工作模式,提到了IPSEC报文的AH和ESP封装方式,下面我们通过协议层面详细学习一下这两种封装方式:1、 ESP封装

ESP(Encapsulation Security Payload)叫做加密安全负载,协议号为50。

知识扩展:常用协议号,ICMP为1,TCP为6,UDP为17,GRE为47,ESP为50,AH为51。

ESP的包结构:

如下图所示,ESP在原始数据包中添加了三个部分,一个部分为ESP头部,一部分为ESP尾部,还有一个ESP校验位。

请求报文和响应报文_报文是什么意思_航空气象报文nsc啥意思

ESP封装报文格式

下图为ESP纵向报文格式图:

航空气象报文nsc啥意思_报文是什么意思_请求报文和响应报文

ESP报文头部格式

请求报文和响应报文_航空气象报文nsc啥意思_报文是什么意思

下面进行每部分的详细分析:

1.1 ESP头部报文分析

ESP头部包含两个字段,SPI和序列号,长度各为32位

1.1.1 SPI安全参数索引

航空气象报文nsc啥意思_报文是什么意思_请求报文和响应报文

ESP报文头部内容

SPI是个32位长度的字段,是一个安全关联(SA)的ID。

首先解释一下什么是安全关联SA,如下图所示,路由器R1与路由器R2和R3建立的IPSec VPN,在配置IPSec VPN时会让用户输入使用的哪种加密协议的哪种算法?哪种校验方式?工作模式,密钥交换方式,密钥有效期等参数。这些参数建立了一组记录,记录了每两台路由器之间使用的协商参数,这个记录就是一个SA,SA存放在路由器的SADB里,也就是安全关联数据库,如下图,R1分别与R2和R3建立了IPSec VPN,也就会产生两组SA存放在SADB里,如何区分哪个SA是和R2协商的?哪个是和R3协商的?这就需要一个标识来区分,这个标识就是SPI。SPI是由双方加密点的IP地址计算出来的,当路由器收到一个加密报文后,通过源目IP地址就可计算出后面的数据可以使用哪个SPI的记录来解密。

请求报文和响应报文_航空气象报文nsc啥意思_报文是什么意思

ESP封装报文头部中SPI字段的作用

1.1.2 序列号

序列号的作用与TCP中的序列号相似,由于IPSec的ESP封装方式将IP报文头部后的所有数据都进行的加密,TCP报文头部也在其中,所以需要在ESP封装的IPSec报文头部中加入一个与TCP序列号类似的序列号字段,用来防止数据的重放。

知识扩展:数据防重放攻击防御一般有两种方式:基于序列号方式和基于时间的方式。

基于序列号的方式是每发送一个字节的加密数据包序列号就会增加1,例如发送的第一个数据包中的序列号为10,数据内容大小为109字节。第二个发送的数据包序列号就为119。如果接收端收到不是为119序列号的数据报文则丢弃。

基于时间的防重放是接收端收到一个个数据报文后设置一个时间节点,在这个时间节点范围中再次收到的数据即为可信数据,如果落到时间节点以外的就丢弃。

如果数据报文头部部分已经加密,不能解密,则可以通过记录加密后的数据,如果重复收到相同的加密数据到达一定的阈值,则定义为重放攻击。

注:ESP报文头部会在序列号字段后后随机添加8字节的IV变量,之前我们在VPN专题-1-加密学理论知识(第一部分)讲述过IV变量是用于做DES或3DES中的加密块链接。

在介绍ESP报文尾部前,先提一下在ESP报文首部与ESP报文尾部之间的数据部分,可能会在数据部分中加入垫片字段,这是因为使用ESP使用的是DES、3DES等数据块加密算法,加密的数据是以数据块的方式存在(在之前的VPN专题-1-加密学理论知识(第一部分)中DES加密部分讲述过),例如使用的是DES,56位的加密算法,每64位(8字节)的数据作为一个数据块进行加密,所以如果发送的数据不能被8整除,则需要对数据部分通过垫片数据进行增加,以整除8,将所有数据进行加密。根据使用算法的不同,加密所使用的数据块大小也不相同。垫片字段报文一般为0-255字节范围。

1.2 ESP尾部报文分析

ESP尾部包含两个字段,垫片长度和NEXT Hander。

垫片长度字段为8位用来记录数据部分进行了多少长度的垫片数据。

NEXT Hander下一个报文头字段,用来表述有效负载中的数据类型报文是什么意思,例如ESP在隧道模式下使用,则该值为4。字段长度也为8位。

1.3 ESP校验位

ESP校验是对加密后的数据报文进行散列函数运算得到散列值。

如下图所示,将ESP头至ESP尾部所有数据进行HMAC的MD5、SHA等散列函数计算后的散列值存放于数据报文最后的校验和位处。正常的MD5散列值为128位,SHA-1的散列值为160位,但该字段为12字节,96比特位,所以ESP强制实现HMAC-MD5-96和HMAC-SHA-1-96,即不管使用哪种散列函数算法,都只取散列值的前96位放入该字段(因为散列值会有雪崩效应报文是什么意思,一旦数据被篡改,前96位也一定不相同)。

航空气象报文nsc啥意思_报文是什么意思_请求报文和响应报文

ESP封装校验和如何进行校验

2、 AH封装

AH认证头部协议,协议号51。AH校验是对添加IPSec报文AH封装(此时无AH校验和)后的数据报文进行散列函数运算得到散列值。并将散列值重新封装到AH报文内部。

现在IPSec基本使用ESP进行封装,不使用AH进行封装。第一个原因在于不对数据进行加密。第二个原因在于AH封装无论在传输模式还是隧道模式均校验原始IP头部报文,导致的直接后果就是无法穿越NAT。现在IPv4网络IP地址已经枯竭,所以网络中基本无法离开NAT。

航空气象报文nsc啥意思_请求报文和响应报文_报文是什么意思

AH封装格式

航空气象报文nsc啥意思_请求报文和响应报文_报文是什么意思

AH头部报文分析:

如下图,AH报文相对于ESP报文少了用于加密的IV变量以及垫片字段及垫片长度字段,SPI、序列号等字段与ESP功能基本相同。

航空气象报文nsc啥意思_报文是什么意思_请求报文和响应报文

AH封装报文头部内容

知识扩展:AH校验传输模式”IP头部”的部分字段以及所有数据校验部分,校验隧道模式”新IP头部”的部分字段及剩下的所有数据。

其中IP头部不进行校验的字段如下图灰色部分:

报文是什么意思_航空气象报文nsc啥意思_请求报文和响应报文

AH封装校验IP头部中的哪些内容?

以上内容均为本人对所掌握知识的总结归纳所创作的原创文章,希望能给大家的学习过程带来帮助,如有技术理解错误希望能够及时得到大家的指正,大家共同学习,共同进步。

欢迎关注我的头条号,私信交流,学习更多网络技术!

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,加站长微信免费获取积分,会员只需38元,全站资源免费下载 点击查看详情
站 长 微 信: thumbxmw