IPSec (IP SECURITY)是为实现VPN 功能而最普遍使用的协议。通过相应的隧道技术,可实现VPN。IPSec有两种模式:隧道模式和传输模式。
IPSec 不是一个单独的协议,它给出了应用于IP 层上网络数据安全的一整套体系结构。该体系结构包括认证头协议(Authentication Header,简称为AH)、封装安全负载协议(EncapsulatingSecurity Payload,简称为ESP)、密钥管理协议(Internet Key Exchange,简称为IKE)和用于网络认证及加密的一些算法等。
IPSec 规定了如何在对等体之间选择安全协议、确定安全算法和密钥交换,向上提供了访问控制、数据源认证、数据加密等网络安全服务。
认证头协议(AH):IPsec 体系结构中的一种主要协议,它为IP 数据包提供无连接完整性与数据源认证,并提供保护以避免重播情况。AH 尽可能为IP头和上层协议数据提供足够多的认证。
IPsec 封装安全负载(ESP):IPsec 体系结构中的一种主要协议。ESP 加密需要保护的数据并且在IPsec ESP 的数据部分进行数据的完整性校验,以此来保证机密性和完整性。ESP 提供了与AH 相同的安全服务并提供了一种保密性(加密)服务,ESP 与AH 各自提供的认证根本区别在于它们的覆盖范围。
密钥管理协议(IKE):一种混合型协议,由Internet 安全联盟(SA)和密钥管理协议(ISAKMP)这两种密钥交换协议组成。IKE 用于协商AH 和ESP所使用的密码算法,并将算法所需的必备密钥放到恰当位置。
IPSec工作时,首先两端的网络设备必须就SA(security association)达成一致,这是两者之间的一项安全策略协定。
安全联盟(Security Association)
IPSec 在两个端点之间提供安全通信,两个端点被称为IPSec ISAKMP 网关。安全联盟(简称为SA)是IPSec 的基础,也是IPSec 的本质。SA 是通信对等体间对某些要素的约定,例如:使用哪种协议、协议的操作模式、加密算法(DES、3DES、AES-128、AES-192 和AES-256)、特定流中保护数据的共享密钥以及SA 的生存周期等。
安全联盟是单向的,在两个对等体之间的双向通信,最少需要两个安全联盟来分别对两个方向的数据流进行安全保护。
SA 建立方式
建立安全联盟的方式有两种,一种是手工方式(Manual),一种是IKE 自动协商(ISAKMP)方式。
手工方式配置比较复杂,创建安全联盟所需的全部信息都必须手工配置,而且IPSec 的一些高级特性(例如定时更新密钥)不能被支持,但优点是可以不依赖IKE而单独实现IPSec 功能。该方式适用于当与之进行通信的对等体设备数量较少的情况,或是在小型静态环境中。
IKE 自动协商方式相对比较简单,只需要配置好IKE 协商安全策略的信息,由IKE 自动协商来创建和维护安全联盟。该方式适用于中、大型的动态网络环境中。
该方式建立SA 的过程分两个阶段。第一阶段,协商创建一个通信信道(ISAKMP SA),并对该信道进行认证,为双方进一步的IKE 通信提供机密性、数据完整性以及数据源认证服务;第二阶段,使用已建立的ISAKMP SA 建立IPsec SA。分两个阶段来完成这些服务有助于提高密钥交换的速度。
第一阶段SA
第一阶段SA 为建立信道而进行的安全联盟。第一阶段协商的步骤是:
1. 参数配置。包括:
认证方法:选择预共享密钥或数字证书认证
Diffie-Hellman 组的选择
2. 策略协商。包括:
加密算法:选择DES、3DES、AES-128、AES-192 或AES-256
hash 算法:选择MD5 或SHA
3. DH 交换。虽然名为“密钥交换”,但事实上在任何时候,两台通信主机之间都不会交换真正的密钥,它们之间交换的只是一些DH 算法生成共享密钥所需要的基本材料信息。DH 交换,可以是公开的,也可以受保护。在彼此交换过密钥生成“材料”后,两端主机可以各自生成出完全一样的共享“主密钥”,保护紧接其后的认证过程。
4. 认证 。DH 交换需要得到进一步认证,如果认证不成功,通信将无法继续下去。“主密钥”结合在第一步中确定的协商算法,对通信实体和通信信道进行认证。在这一步中,整个待认证的实体载荷,包括实体类型、端口号和协议,均由前一步生成的“主密钥”提供机密性和完整性保证。