安全关联是指一组用来保护信息的策略和密钥。安全关联的概念是IPSec的基础。AH和ESP都使用了安全关联,所有AH和ESP的实现都必须支持安全关联。安全关联有两种类型:传输模式和隧道模式。传输模式安全关联是两台主机间的安全关联。
安全关联是指一组用来保护信息的策略和密钥。安全关联的概念是 IPSec 的基础。AH 和 ESP 都使用了安全关联,所有 AH 和 ESP 的实现都必须支持安全关联。安全关联有两种类型:传输模式和隧道模式。传输模式安全关联是两台主机间的安全关联。隧道模式安全关联是运用于 IP 隧道的安全关联。
定义
安全关联是单向的,在两个使用 IPSec 的实体(主机或路由器)间建立的逻辑连接,定义了实体间如何使用安全服务(如加密)进行通信。它由 3 个元素——安全参数索引 SPI、IP 目的地址和安全协议组成。
SA 是一个单向的逻辑连接。也就是说,在一次通信中 IPSec 需要建立两个 SA:一个用于入站通信,另一个用于出站通信。若某台主机,如文件服务器或远程访问服务器,需要同时与多台客户机通信,则该服务器需要与每台客户机分别建立不同的 SA,每个 SA 用唯一的 SPI 索引标识,当处理接收数据包时,服务器根据 SPI 值来决定该使用哪个 SA。
参数
一个安全关联由下面 3 个参数唯一确定:
1)安全参数索引号(SPI):一个与 SA 相关的位串,由 AH 和 ESP 携带,使得接收方能选择合适的 SA 处理数据包。
2)IP 目的地址:只允许使用单一地址,表示 SA 的目的地址。
3)安全协议标识:标识该 SA 是 AH 安全关联或 ESP 安全关联。
每个 SA 条目除了有上述参数外,还有下面的参数:
1)序列号计数器:一个 32bit 的值,用于生成 AH 或 ESP 头中的序号字段,在数据包的“外出”处理时使用。SA 刚刚建立时,该参数的值为 0,每次用 SA 来保护一个数据包时,序列号的值便会递增 l。目标主机可以用这个字段来探测所谓的“重放”攻击。
2)序列号溢出:用于输出包处理,并在序列号溢出的时候加以设置,安全策略决定了一个 SA 是否仍可用来处理其余的包。
3)抗重放窗口:用于确定一个入栈的 AH 或 ESP 包是否是重放。
4)AH 信息:AH 认证算法、密钥、密钥生存期和其他 AH 的相关参数。
5)ESP 信息:ESP 认证和加密算法、密钥、初始值、密钥生存期和其他 ESP 的相关参数。
6)SA 的生存期:一个 SA 最长能存在的时间。到时间后,一个 SA 必须用一个新的 SA 替换或终止,生存期有两种类型——软的和硬的。软生存期用来通知内核 SA 马上到期了,这样,在硬生存期到来之前,内核能及时协商好一个 SA,从而避免了 SA 过期后造成的通信中断。
7)IPSec 协议模式:隧道、传输、通配符(隧道模式、传输模式均可)。
8)路径 MTU:在隧道模式下使用 IPSec 时,必须维持正确的 PMTU 信息,以便对这个数据包进行相应的分段。
使用
一个 SA 对 IP 数据报不能同时提供 AH 和 ESP 保护。有时,特定的安全策略要求对通信提供多种安全保护,这就需要使用多个 SA。当把一系列 SA 应用于业务流时,称为 SA 束。SA 束的顺序由安全策略决定,SA 束中各个 SA 的终点可能不同。例如,一个 SA 可能用于移动主机与路由器之间,而另一个可能用于移动主机与路由器内的主机。
IPSEC 的实现需要维护两个与 SA 有关的数据库:
(1)安全策略数据库(SPD)。用于为 IPSEC 实现提供安全策略配置,包括源地址、目的地址、子网掩码、端口、传输层协议、动作(丢弃、绕过、应用)、进出标志等。这些数据项指定某些数据流必须绕过 IPSEC 的处理,某些必须丢弃,其余的必须经过 IPSEC 模块的处理。SPD 中的数据项跟防火墙规则或包过滤器规则很相似。
(2)安全联盟数据库(SADB)。SADB 是 SA 的集合,其中包含每一个 SA 的参数信息,例如目的地址、安全协议、SPI、序列号计数器、序列号溢出标志,抗重播攻击窗口、AH 或 ESP 算法和密钥、IPSEC 协议模式以及 SA 生命周期等。对于流出数据的处理,会有一个 SPD 数据项包含指向某个 SADB 数据项的指针。也就是说,SPD 决定了一个给定的数据包究竟使用哪一个 SA。对于流入数据的处理,由 SADB 来决定如何对给定数据包做处理。
基本组合
IPSec 体系结构文档列举了 IPSec 主机(如工作站、服务器)和安全网关(如防火墙、路由器)必须支持的 4 个 SA 组合的例子,如图 910 所示。在该图中,每种情况的下部表示元素的物理连接;上部表示一个或多个嵌套 SA 的逻辑连接。每个 SA 可以是 AH 或 ESP 对于主机对主机的 SA 来说,既可以是传输模式也可以是隧道模式,除此之外都是隧道模式。
情况 1:实现 IPSec 的终端系统提供所有的安全。对于通过 SA 通信的任意两个终端系统而言,它们必须共享密钥,有下面儿种组合:
a.传输模式下的 AH:
b.传输模式下的 ESP;
c.在传输模式下,ESP 后面紧接 AH( ESP SA 内置于 AHSA 中)
d.a、b、c 任何一个内置于隧道模式下的 AH 或 ESP。
已经讨论了各种组合是如何用来支持认证、加密、先认证再加密和先加密再认证的。
情况 2:仅在安全网关(比如路由器、防火墙等)之间提供安全性,主机没有实现 IPSec 这种情况说明了简单的虚拟专用网络支持。安全体系结构文档说明在这样的情况下仅需要单个隧道模式的 SA。隧道可以支持 AH、ESP 或带认证选项的 ESP。因为 IPSec 服务被应用于整个内部包,所以不需要嵌套的隧道。
情况 3:在情况 2 的基础上加上端对端安全。在情况 1 和情况 2 中讨论的组合在情况 3 中均被允许。网关对网关的隧道为终端系统间的所有流提供了认证或保密或认证加保密。当网关对网关隧道为 ESP 时,则对流提供了一定的保密性。个人主机可以根据特定的应用或用户的需要实现任何额外的 IPSec 服务,这是通过使用端对端 SA 来实现的。
情况 4:为通过互联网到达组织的防火墙然后获得在防火墙后面特定的工作站和服务器的访问权限的远程主机提供支持。在远程主机和防火墙之间仅需要隧道模式,如情况 1 提到的,在远程主机和本地主机之间可能使用一个或者多个 SA。