前言

IPSec 使用认证头 AH(Authentication Header)和封装安全载荷 ESP(Encapsulating Security Payload)两种 IP 传输层协议来提供认证或加密等安全服务。

安全协议

AH 协议:AH 仅支持认证功能,不支持加密功能。AH 在每一个数据包的标准 IP 报头后面添加一个 AH 报文头,如封装模式所示。AH 对数据包和认证密钥进行 Hash 计算,接收方收到带有计算结果的数据包后,执行同样的 Hash 计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH 协议的完整性验证范围为整个IP报文。

AH包结构示意图

ESP 协议:ESP 支持认证和加密功能。ESP 在每一个数据包的标准 IP 报头后面添加一个 ESP 报文头,并在数据包后面追加一个 ESP 尾(ESP Trailer 和 ESP Auth data),如封装模式所示。与 AH 不同的是,ESP 将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但 ESP 没有对 IP 头的内容进行保护,除非 IP 头被封装在 ESP内部(采用隧道模式)。

ESP包结构示意图

ESP包结构示意图

 (1)安全参数索引(SPI)

一个32比特的字段,用来标识处理数据包的安全关联(SecudtyAssociation)。

 (2)序列号(SN)

一个单调增长的序号,用来标识一个ESP数据包。例如,当前发送的ESP包序列号是X, 下一个传输的ESP包序列号就是X+I,再下一个就是X+2。接收方通过序列号来防止重放攻击, 原理也很简单,当接收方收到序列号X的ESP包后, 如果再次收到序列号为X的ESP包就被视为重放攻击,采取丢弃处理 。

 (3)初始化向量(lnhialization Vectoc)

我们在前面介绍过CBC这种块加密方式,每一个需要使用CBC来加密的数据包都会产生一个随机数,用于加密时对数据进行扰乱,这个随机产生的数就叫做初始化向量(IV)。当然IPSee VPN也可以选择不加密(加密不是必须的,虽然我们一般都会采用),如果不加密就不存在IV字段。 所以在图中有两个ESP包结构示意图,左边白底的ESP包没有IV字段表示不加密 ,右边深色底的存在IV字段则表示要加密。 (4)负载数据(PayloadData) 负载数据就是IPSec加密所保护的数据,它很有可能就是TCP头部加相应的应用层数据,与后面两种封装模式有关,封装模式的不同也会影响负载数据的内容。 (5)垫片(Paddiog) Cisco 的IPSec VPN都采用了CBC的块加密方式 ,既然采用块加密,就需要把数据补齐块边界。 以DES为例, 就需要补齐64比特的块边界,追加的补齐块边界的数据就叫做垫片。如果不加密就不存在垫片片段。

 (6)垫片长度(Pad Length)

垫片长度顾名思义就是告诉接收方,垫片数据有多长,接收方解密后就可以清除这部分多余数据。 如果不加密就不存在垫片长度字段。

 (7)下一个头部(Next Heade)

下一个头部标识IPSec封装负载数据里边的下一个头部,根据封装拱式的不同下一个头部也会发生变化,如 果是传输模式,下一个头部一般都是传输层头部(TCP/UDP),如果是隧道模式,下一个头部肯定是IP。从“下一个头部“ 这个字段中 我们可以看到 IPv6的影子。 IPv6的头部就是使用很多个“下一个头部“ 串接在一起的, 这也说明IPSec最初是为IPv6而设计的。

(8)认证数据(Authentication Data)

ESP会对从ESP头部到ESP尾部的所有数据进行验证,也就是做HMAC的散列计算,得到的散列值就会被放到认证数据部分,接收方可以通过这个认证数据部分对ESP数据包进行完整性和源认证的校验。

封装模式

传输模式:在传输模式中,AH 头或 ESP 头被插入到 IP 头与传输层协议头之间,保护 TCP/UDP/ICMP 负载。由于传输模式未添加额外的 IP 头,所以原始报文中的 IP 地址在加密后报文的 IP 头中可见。

传输模式

隧道模式:在隧道模式下,AH 头或 ESP 头被插到原始 IP 头之前,另外生成一个新的报文头放到 AH 头或 ESP 头之前,保护 IP 头和负载。

隧道模式

 传输模式和隧道模式的区别在于:

  • 安全性来讲,隧道模式优于传输模式。它可以完全地对原始 IP 数据包进行验证和加密。隧道模式下可以隐藏内部 IP 地址,协议类型和端口。
  • 性能来讲,隧道模式因为有一个额外的 IP 头,所以它将比传输模式占用更多带宽
  • 从场景来讲,传输模式主要应用于两台主机或一台主机和一台VPN网关之间通信;隧道模式主要应用于两台 VPN 网关之间或一台主机与一台 VPN 网关之间的通信。

 小结

  1. AH 协议仅支持认证功能,不支持加密功能。
  2. ESP 协议支持认证和加密功能。
  3. 隧道模式在安全性方面比较好,传输模式效率比较高。

 参考资料

《细说IPSec VPN原理及配置案例》Cisco

《Cisco IPSec VPN 实战指南》秦柯