IPsec安全传输数据的前提是在IPsec对等体(即运行IPsec协议的两个端点)之间成功建立IPsec安全联盟(简称IPsec SA)。通过该安全联盟,可以在IPsec对等体间形成一个安全互通的IPsec隧道。
安全联盟(Security Association,SA)是通信对等体间对某些协商要素的约定,它描述了对等体间如何利用安全服务(例如数据加密服务)进行安全的通信。这些协商要素包括对等体间使用的安全协议、需要保护的数据流特征、数据传输采用的封装模式、协议采用的加密和验证算法,以及用于数据安全转换、传输的密钥和SA的生存周期等。
IPsec SA通过IKE协议自动协商建立,需要保护的数据流需要被引入IPsec隧道中,在隧道两端的对等体中通过安全协议进行加密和验证,实现数据跨Internet安全传输。
IPsec SA由一个三元组来唯一标识,这个三元组包括安全参数索引(Security Parameter Index,SPI)、目的IP地址和安全协议(AH或ESP)。其中,SPI是为唯一标识SA而生成的一个32比特的数值,它被封装在AH和ESP头中传输。IPsec SA是单向的逻辑连接,通常成对建立(Inbound和Outbound)。因此,为实现两个IPsec对等体之间的双向通信,至少需要建立一对IPsec SA形成一个双向互通的IPsec隧道,分别对两个方向的数据流进行安全保护,如图1所示。
图1 IPsec安全联盟
另外,IPsec SA的个数还与安全协议相关。如果仅使用AH或ESP中的某一种安全协议来保护两个对等体之间的流量,则对等体之间仅需要建立两个IPsec SA(每个方向上各有一个)即可。如果对等体同时使用了AH和ESP两种安全协议,则对等体之间需要四个IPsec SA(每个方向上各有两个,分别对应AH和ESP)。因此不能将一个IPsec SA等同于一个“连接”。