由于 IPSec 必须在端系统 OS 内核的 IP 层或节点网络设备的深层以实现,所以 IPSec 的密钥管理协议是 IPSec 需要进一步完善的问题。
除了它定义的 IP 传输的加密机制外, IPSec 还定义了 IP OVER IP 隧道模式的包的格式,这也就是通常指的 IPSec 隧道模式。一个 IPSec
隧道是由隧道客户和隧道服务器组成的。它们都使用 IPSec 隧道和协商加密机制。
IPSec 兼容设备在 OSI
模型的第三层(网络层)提供加宇航局、验证、授权、管理,对于用户来说是透明的(即在应用层不用作任何事情),用户使用时和平常无区别。密钥交换、核对数字签名、加密等都在后台自动进行。
下图是一个典型的 IPSec 数据包的格式。
IP包头
AH包头
ESP包头
上层协议(数据)
另外,为了组建大型 VPN ,需要认证中心( CA )来进行身份证和分发用户公共密钥。
IPSec 可用两种方式对数据流加密:
隧道方式:对整个 IP 包加密,使用一个新的 IPSec 包打包。这种隧道协议是在 IP 协议上进行的。因此不支持多协议。
传输方式:原 IP 包的地址部分不处理,仅对数据净荷( data payload )进行加密。
IPSec 支持的组网方式包括:主机之间、主机与网关、网关之间的组网。这里网关指执行 IPSec 的路由器或防火墙。
IPSec 还对远程访问用户支持。同时还有一整套保证用户数据安全的措施,利用它建立起来的隧道具有更好的安全性和可靠性。 IPSec 可以和 L2TP 、
GRE 等隧道协议一同使用,给用户提供更大的灵活性和可靠性。
IPSec 在 IP 层上对数据包进行高强度的安全处理,提供数据源地验证、无连接数据完整性、数据机密性、抗重播和有限业务流机密性等安全服务。各种应用程序可以享用
IP 层提供的安全服务和密钥管理,而不必设计和实现自己的安全机制,因此减少密钥协商的开销,也降低了产生安全漏洞的可能性。 IPSec
可连续或递归应用,在路由器、防火墙、主机和通信链路上配置,实现端到端安全、虚拟专用网络( VPN )和安全隧道技术。
安全体系结构:包含了一般的概念、安全需求、定义和定义 IPSec 的技术机制;
封装安全有效载荷( ESP ):覆盖了为了包加密(可选身份验证)与 ESP 的使用相关的包格式和常规问题;
验证头( AH ):包含使用 AH 进行包身份验证相关的包格式和一般问题;
加密算法:描述各种加密算法如何用于 ESP 中;
验证算法:描述各种身份验证算法如何用于 AH 中和 ESP 身份验证选项;
密钥管理:密钥管理的一组方案,其中 IKE ( Internet 密钥交换协议)是默认的密钥自动交换协议;
解释域:彼此相关各部分的标识符及运作参数;
策略:决定两个实体之间能否通信,以及如何进行通信。策略的核心由三部分组成: SA 、 SAD 、 SPD 。 SA
(安全关联)表示了策略实施的具体细节,包括源/目的地址、应用协议、 Spi (安全策略索引)、所用算法/密钥/长度; SAD 为进入和外出包处理维持一个活动的
SA 列表; SPD 决定了整个 VPN 的安全需求。策略部分是唯一尚未成为标准的组件。
从 IPSec 协议族来看, IPSec 的实现重点是 Internet 密钥交换( IKE )和安全策略系统,这两个技术的实现 , 决定了 IPSec
实现是否完善和标准。
IKE技术
Internet 密钥交换( IKE )用于动态建立 SA 。 IKE 代表 IPSec 对 SA 进行协商,并对 SADB 数据库进行填充。由
RFC2409 文档描述的 IKE 属于一种混合型协议。它沿用了 ISAKMP 的基础、 Oakley 的模式以及 SKEME
的共享和密钥更新技术,从而定义出自己独一无二的验证加密材料生成技术,以及协商共享策略。此外, IKE 还定义了它自己的两种密钥交换方式。 IKE
使用了两个阶段的 ISAKMP 。在第一阶段,通信各方彼此间建立了一个已通过身份验证和安全保护的通道,即建立 IKE
安全联盟。在第二阶段,利用这个既定的安全联盟,为 IPSec 协商具体的安全联盟。 IKE 定义了两个阶段,阶段 1 交换、阶段 2
交换以及两个额外的交换(用于对安全联盟进行正确的维护)。对阶段 1 交换, IKE 采用的是身份保护交换( “ 主模式 ” 交换),以及根据基本 ISAKMP
文档制订的野蛮交换法 “ 野蛮模式 ” 交换;对阶段 2 , IKE 则定义了一种快速模式交换。 I K E 定义的另外两种交换均属信息方面的交换。
IKE 保证了如何动态地建立安全关联和建立过程的安全。 IKE 建立安全关联的实现一方面是 IPSec
协议实现的核心,实现极为复杂;另一方面也很可能成为整个系统的瓶颈。优化 IKE 程序、优化密钥算法是实现 IPSec 的核心问题之一。