« Back
in 安全 VPN 思科 read.

VPN理论6

ESP数据包的进入处理

1.检查处理这个包的SA是否存在

2.检查序列号是否有效

3.对数据包进行完整性和来源进行验证

4.对数据包进行解密 (为什么先验证,再解密,因为验证过程对CPU消耗比较少,解密过程对CPU消耗大,以防路由器做无用功;在出项处理时,先对数据包加密,然后做验证)

5.对数据包进行初步的有效性校验

验证模式是否匹配

transport mode:上层协议头与IP头是同步的,ESP头的下一个头字段被复制到IP头的协议字段中, 并计算出一个新的IP校验和。

tunnel mode:就抛开外部IP头和ESP头----我们需要的是这个解开封装的包。这时,必须进行另一个有效性校验。如果这个包和所要求的地址 和/或 端口,和/或 协议(SA表明的)不相符,必须将它丢弃。

会使用ACL对数据包进行反向检查,如果相符,通过;不相符,丢弃。

6. transport mode:就会转送到一个高一级的协议层----比如TCP或UDP----由它们对这个包进行处理。

tunnel mode:重新插入到IP处理流中,继续转发到它的最终目的地 (也许在同一个主机上,也就是加密点=通信点)

 

ESP对分片包的处理

先分段,后加密

传输模式(transport):验证,解密,收集分片包,送给上层协议

通道模式(tunnel):验证,解密,路由

 

先加密,后分段

收集完分片包后,才能验证,解密

 

AH包格式 RFC 2402定义

不提供加密

Tunnel mode AH

VPN6-1

 

VPN6-2

 

Transport mode AH

VPN6-3

 

VPN6-4

 

AH处理--输出处理

1.检查外出数据包,是否与一个SPD条目匹配,然后SADB查看是否存在一个合适的SA。如果没有,使用IKE动态的建立一个。如果有,就将AH应用到这个与之相符的数据包,该数据包在SPD条目指定的那个模式中。

2.SPI字段分配的值是取自SA的SPI,下一个头字段分配的是跟在AH头之后的数据类型值。身份验证数据字段设成0。

3.AH将安全保护扩展到外部IP头的原有的或预计有的字段。因此,将“完整性校验值(ICV)”之前的不定字段调成0是必要的。

4.根据身份验证器的要求,或出于排列方面的原因,可能需要进行适当的填充。

5.利用密钥对整个IP包进行ICV计算。由于不定字段已设为0,它们就不会包括在ICV计算中。接下来,ICV值被复制到AH的“身份验证数据”字段中,IP头中的不定字段就可以根据IP处理的不同得以填充。

6.输出数据包。

 

AH处理--输入处理

1.找出用来保护这个包的SA。然后用IP头的目的地址、特定协议(这里是51)和取自AH头的SPI这个三者再对SA进行识别。如果没有找到合适的SA,这个包就会被丢弃。

2.找到SA之后,进行序列号检查。如果检查失败,这个包就被丢弃。

3.检查ICV。首先,将AH头的“验证数据”字段中的ICV值保存下来,然后将那个字段清0。IP中的所有不定字段也被清0。取决于身份验证器算法以及载荷长度,可能还要进行隐式填充,使验证数据的长度符合算法的要求。(隐式填充包含的值必须全为0)。随后,对整个数据包应用“身份验证器”算法,并将获得的摘要同保存下来的ICV值进行比较。如相符,IP包就通过了身份验证;如不符,便丢弃该包。

4.ICV一经验证,滑动接收窗口的序列号就可能递增。

5.transport mode:把数据包交给上层协议

tunnel mode:路由数据包