参考教材:TCP-IP Guide
IPSec核心协议是AH和ESP,本文主要介绍下AH协议的数据封装与传输
AH(Authentication Header)
这个协议主要是用来提供数据完整性校验和源校验,即只提供校验功能,并没有提供加密功能,我们知道对于这种虚拟的私有网络,实际上是公网上虚拟出来的隧道,核心在于要对对应协议的数据包进行IP层的封装,让其仍然变成IP包,然后在公网上传输,所以先看下AH协议不同模式下封装的数据
可以看到下图,传输模式下IPv4的AH协议封装的数据包,原始的数据包是一个IP header 紧接着一个TCP header,然后就是data,AH协议封装的数据包,会在IP Header 和TCP Header之间增加一个AH header,IP header的协议变成51 AH协议,AH header下一个header协议为 6 TCP header
隧道模式下的AH 数据包封装,这种模式把整个数据包都进行封装,然后再源的IP header之前增加AH header,然后再增加一个新的IPV4 header完成封装
AH的头
1. Next Header : AH header的下一个头部的协议号
2. Payload Length:AH header的长度
3. Reserverd: 保留
4. SPI : 安全的参数,目的地址和安全协议类型的组合,用于识别对这个包进行验证的安全联盟
5. Sequence Number: 单调增加的32位无符号整数,利用该域抵抗重发攻击(Replay Attack)
6. Authentication Data: 是一个长度可变的域,长度为32比特的整数倍。具体格式因认证算法而异 。该认证数据也被称为数据报的完整性校验值(ICV)
数据流程认证流程,从图中可以看出是对整个数据包进行认证,使用一个密钥通过单项散列函数输出认证后的数据,这些认证后的数据都会放到AH的header
中。下图是传出模式
隧道模式下认证,同样也是对整个数据包进行认证。
输出处理
输入处理
2. 使用IP分组头中的SPI、目的IP地址以及IPSec协议在进入的SA数据库中查找SA,如果查找失败,则抛弃该分组,并记录事件。