基于openswan klips的IPsec VPN兑现分析(三)安全协议
基于openswan klips的IPsec VPN实现分析(三)安全协议
基于openswan klips的IPsec VPN实现分析(三)安全协议 参考rfc2402,rfc2406 转载请注明出处:http://blog.****.net/rosetta 博客格式显示有问题,只能将就了。 AH(Authentication Header)认证头和ESP(Encapsulating Security Payload)封装安全载荷是IPsec主要安全协议,当然IKE也是IPec安全协议,只不过 IKE用于秘钥协商建立IKE SA和IPsec SA,而AH和ESP用于数据传输时对隧道内数据的保护。 AH用于认证和校验;ESP主要用于加密、认证和检验,是IPsec最常用的安全协议。IPsec封装有两种模式:传输模式和隧道模式,传输模式主要用于主机到主机通信,隧道模式用于网络到网络间通信,传输模式不常用。ESP使用到的加密算法为对称加密算法,比如:AES,3DES等;校验算法为哈希算法,比如:MD5,SHA1等。 一、AH格式 协议头(IPv4、IPv6、或者扩展)紧靠AH头之前,协议号51。 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 下一个头 | 载荷长度 | 保留 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 安全参数索引(SPI) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 序列号字段 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + 认证数据(变长的) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 下一个头(Next Header) 8位字段,其指定了认证头后面的下一个载荷的类型。其值可参考rfc2408 3.1节 载荷长度(Payload Length) 8位字段,其长度以4字节为单位。 保留(Reserved) 16比特字段保留给将来使用。它必须(MUST)被设置成“零”。 安全参数索引(Security Parameters Index (SPI)) SPI是一个任意的32比特值,它与目的IP地址和安全协议(ESP)结合,就唯一 地标识了这个数据报的安全关联。 序列号(Sequence Number) 为无符号的32比特字段,包含一个单调递增的计数器值(序列号)。 认证数据(Authentication Data) 这是一个变长的字段,其包含这个报文的完整性校验值(Integrity Check Value (ICV))。这个字段的长度必须是32比特的整数倍。 二、AH数据封装格式 传输模式中,AH插在IP头之后,且在一个上层协议之前,例如TCP、UDP、ICMP 等。或者在其它任何已经插入的IPsec头之前 应用AH之前 ---------------------------- IPv4 | 原IP头 | | | | (所有选项)| TCP | Data | ---------------------------- 应用AH之后 --------------------------------- IPv4 | 原IP头 | | | | | (所有选项)| AH | TCP | Data | --------------------------------- |<--------- 认证范围 ---------->| 除了可变的字段 AH IPV4传输模式 在IPv6环境中,AH被看作是一个端到端的载荷,出现在逐跳(hop-by-hop)、路由(routing)和分片扩展头(fragmentation extension headers)之后。目的选项扩展头(destination options extension header)既可以出现在AH头之前,也可以在AH头之后。下面的图表说明了一个IPv6报文的AH传输模式布局。 应用AH之前 --------------------------------------- IPv6 | | 扩展头 | | | | 原IP头 |(如果存在)| TCP | Data | --------------------------------------- 应用AH之后 ------------------------ IPv6 | | 逐跳、目的选项*、| | 目的 | | | | 原IP头 | 路由、分片。 | AH | 选项*| TCP | Data | ------------------------ |<------------ 认证范围,除了可变的字段 ------------------>| * = 表示如果存在,可以在AH之前,AH之后,或者前后都出现。 AH IPV6传输模式 隧道模式AH可以在主机或者安全网关上采用。当AH在一个安全网关上实现时必须采用隧道模式。隧道模式中,“内部”IP头携带最终的源和目的地址,而“外部”IP头可能包含不同的IP地址,例如安全网关地址。隧道模式中,AH保护整个内部IP报文,包括整个内部IP头。相对于外部IP头,隧道模式中AH的位置与传输模式中AH的位置相同。下面的图表说 明了IPv4和IPv6报文的AH隧道模式的布局。 ------------------------------------------------ IPv4 | 新IP头* | | 原IP头* | | | | (所有选项) | AH | (所有选项) |TCP | Data | ------------------------------------------------ |<--- 新IP头中的认证范围,除了可变的字段 ----->| AH IPV4隧道模式 -------------------------- IPv6 | | 扩展头* | | | 扩展头* | | | | 新IP头* |(如果存在)| AH | 原IP头* |(如果存在)|TCP|Data| -------------------------- |<---------- 新IP头中的认证范围,除了可变的字段 ------------>| AH IPV6隧道模式 三、ESP格式 ESP头紧紧跟在协议头(IPv4,IPv6,或者扩展)之后,协议号50。 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- | 安全参数索引 (SPI) | ^Auth. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov- | 序列号 | |erage +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ---- | 有效载荷数据* (可变的) | | ^ ~ ~ | | | | |Conf. + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov- | | 填充 (0-255 bytes) | |erage* +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | 填充长度 | 下一个头 | v v +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------ | 验证数据 (可变的) 可选的 | ~ ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ *如果加密同步数据,例如初始化向量(IV),包含在有效载荷字段中,通常它本 身并不加密,虽然常常把它作为密文的一部分。 四、ESP数据封装格式 其封装格式和AH类似。 传送模式中,ESP插在IP头之后,上层协议之前,例如TCP,UCP,ICMP等,或者在任何已经插入的IPsec头之前。IPv4中,下面数据报图示了IPv4分组中ESP传送模式位置。 ESP应用前 ---------------------------- IPv4 |原始IP头 | | | |(所有选项) | TCP | 数据 | ---------------------------- ESP应用后 ------------------------------------------------- IPv4 |原始IP头 | ESP | | | ESP | ESP| |(所有选项 )| 头部| TCP | 数据 | 尾部 |验证| ------------------------------------------------- |<----- 已加密 ---->| |<------ 已验证 ----->| ESP IPV4传输模式 下面数据报图示了IPv6分组中ESP传送模式位置。 ESP应用前 --------------------------------------- IPv6 | | 如果有 | | | | 原始IP头 |扩展头 | TCP | 数据 | --------------------------------------- ESP应用后 --------------------- IPv6 | 原始 |逐跳, 目的* | |目的 | | | ESP | ESP| |IP 头 |路由,分片 |ESP|选项*|TCP|数据|尾部 |验证| --------------------- |<---- 已加密 ---->| |<---- 已验证 ---->| ESP IPV6传输模式 下面数据报图示了IPv4和IPv6分组中ESP隧道模式的位置。 ----------------------- IPv4 | 新IP头* | | 原始IP头 * | | | ESP | ESP| |(所有选项) | ESP | (所有选项) |TCP|数据|尾部 |验证| ----------------------- |<--------- 已加密 ---------->| |<----------- 已验证 ---------->| ESP IPV4隧道模式 ------------------------ IPv6 | 新 * |新 扩展 | | 原始*|原始扩展 | | | ESP | ESP| |IP 头 | 头 * |ESP|IP 头 | 头 * |TCP|数据|尾部 |验证| ------------------------ |<--------- 已加密 ----------->| |<---------- 已验证 ---------->| ESP IPV6隧道模式