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 交换需要得到进一步认证,如果认证不成功,通信将无法继续下去。“主密钥”结合在第一步中确定的协商算法,对通信实体和通信信道进行认证。在这一步中,整个待认证的实体载荷,包括实体类型、端口号和协议,均由前一步生成的“主密钥”提供机密性和完整性保证。#p#
第二阶段SA
第二阶段SA 为快速SA,为数据传输而建立的安全联盟。这一阶段协商建立IPsec SA,为数据交换提供IPSec 服务。第二阶段协商消息受第一阶段SA 保护,任何没有第一阶段SA 保护的消息将被拒收。第二阶段协商(快速模式协商)步骤是:
1. 策略协商,双方交换保护需求:
使用哪种IPSec 协议:AH 或ESP
是否使用hash 算法:MD5、SHA 或NULL
是否要求加密,若是,选择加密算法:DES 或3DES、AES-128、NULL、AES-192 或AES-256
在上述三方面达成一致后,将建立起两个SA,分别用于入站和出站通信。
2. 会话密钥“材料”刷新或交换。
在这一步中,将通过DH 交换生成加密IP 数据包的“会话密钥”。
3. 将SA 递交给IPSec 驱动程序。
在第二阶段协商过程中,如果响应超时,则自动尝试重新进行第二阶段SA 协商。
验证算法
AH 和ESP 都能够对IP 报文的完整性进行验证,以判别报文在传输过程中是否被篡改。验证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。IPSec 对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。一般来说IPSec 使用两种验证算法:
MD5:MD5 输入任意长度的消息,产生128bit 的消息摘要。
SHA-1:SHA-1 输入长度小于2 的64 次方比特的消息,产生160bit 的消息摘要。SHA-1 的摘要长于MD5,因而是更安全的。
加密算法
ESP 能够对IP 报文内容进行加密保护,防止报文内容在传输过程中被窥探。加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。
StoneOS 实现了三种加密算法:
DES(Data Encryption Standard):使用56bit 的密钥对每个64bit 的明文块进行加密。
3DES(Triple DES):使用三个56bit 的DES 密钥(共168bit 密钥)对明文进行加密。
AES(Advanced Encryption Standard):StoneOS 实现了128bit、192bit 和256bit 密钥长度的AES 算法。
IPSec VPN 的应用
SA 系列安全网关通过“基于策略的VPN”和“基于路由的VPN”两种方式把配置好的VPN 隧道应用到安全网关上,实现流量的加密解密安全传输。
基于策略的VPN:将配置成功的VPN 隧道名称引用到策略规则中,使符合条件的流量通过指定的VPN 隧道进行传输。
基于路由的VPN:将配置成功的VPN 隧道与隧道接口绑定;配置静态路由时,将隧道接口指定为下一跳路由。
【编辑推荐】