网络专家已验证的 Internet 协议

Joseph Davies

本专栏的部分内容讨论了 Windows Server 2008 的预发布版本,其中的具体信息可能会有所变动。

Windows Vista 和 Windows Server 2008(现处于测试阶段)均支持身份验证 Internet 协议 (AuthIP),即 Internet 密钥交换 (IKE) 协议的增强版本。AuthIP 和 IKE 这两种协议都用于确定钥控材料和协商安全参数,供由 Internet 协议安全 (IPsec) 保护的通信使用

。AuthIP 在许多配置中提供了简化的 IPsec 策略配置和维护,并为 IPsec 对等方身份验证提供了更大的灵活性。本文介绍了 AuthIP 协议的详细信息,以及支持 AuthIP 和 IKE 这两种协议或仅支持 IKE 协议的 IPsec 对等方之间的共存行为。

IKE 概述

协商示例

为演示共存行为,让我们分析一下当尝试协商 IPsec 保护时,Windows Vista 与基于 Windows XP 的 IPsec 对等方之间将发生什么情况。

示例 1:请求模式下两个基于 Windows Vista 的 IPsec 对等方

本示例中,基于 Windows Vista 的 IPsec 对等方(对等方 1)是发起者,响应者运行的是 Windows Vista(对等方 2)。两个对等方均配置为在请求模式下进行入站和出站通信。在请求模式下,IPsec 对等方请求但并不需要 IPsec 保护。将交换下列消息:

  1. 对等方 1 发送明文 TCP 同步 (SYN) 段,启动与对等方 2 的 TCP 连接。
  2. 对等方 2 发送 TCP SYN 认可 (ACK) 段。
  3. 对等方 1 发送 TCP ACK 段。
  4. 对等方 1 发送基于 AuthIP 的 ISAKMP 消息,启动 AuthIP 主模式协商。
  5. 对等方 1 发送基于 IKE 的 ISAKMP 消息,启动 IKE 主模式协商。
  6. 对等方 2 响应基于 AuthIP 的 ISAKMP 消息,继续进行 AuthIP 主模式协商。
  7. 对等方 1 和对等方 2 完成 AuthIP 主模式、快速模式以及扩展模式(可选)协商。
  8. 使用 IPsec 保护通过 TCP 连接发送的后续段。

消息 1 至消息 5 的确切顺序取决于网络延迟。本文所介绍的示例适用于延迟时间相当短的网络,在该网络中 TCP 握手(消息 1 至消息 3)完成后,对等方 1 才能发送初始 ISAKMP 消息(消息 4 和消息 5)。在延迟时间较长的网络中,您将看到对等方 1 发送明文 TCP SYN 段、基于 AuthIP 的 ISAKMP 消息以及基于 IKE 的 ISAKMP 消息成为消息交换的前三个消息。

示例 2:请求模式下基于 Windows Vista 的 IPsec 对等方和请求模式下基于 Windows XP 的 IPsec 对等方

本示例中,基于 Windows Vista 的 IPsec 对等方(对等方 1)为发起者,响应者运行的是 Windows XP(对等方 2),这两个对等方均配置为在请求模式下进行入站和出站通信。将交换下列消息:

  1. 对等方 1 发送明文 TCP SYN 段,启动与对等方 2 的 TCP 连接。
  2. 对等方 2 发送 TCP SYN-ACK 段。
  3. 对等方 1 发送 TCP ACK 段。
  4. 对等方 1 发送基于 AuthIP 的 ISAKMP 消息,启动 AuthIP 主模式协商。
  5. 对等方 1 发送基于 IKE 的 ISAKMP 消息,启动 IKE 主模式协商。
  6. 对等方 2 响应基于 IKE 的 ISAKMP 消息,继续进行 IKE 主模式协商。
  7. 对等方 1 和对等方 2 完成 IKE 主模式和快速模式协商。
  8. 使用 IPsec 保护通过 TCP 连接发送的后续段。

示例 3:请求模式下基于 Windows Vista 的 IPsec 对等方和需求模式下基于 Windows XP 的 IPsec 对等方

本示例中,基于 Windows Vista 的 IPsec 对等方(对等方 1)是发起者,响应者运行的是 Windows XP(对等方 2)。对等方 1 配置为在请求模式下执行出站通信;对等方 2 配置为在需求模式下执行入站通信。在需求模式下,IPsec 对等方需要 IPsec 保护,并自行放弃未受保护的数据包。将交换下列消息:

  1. 对等方 1 发送明文 TCP SYN 段,启动 TCP 连接,对等方 2 自行放弃该连接。
  2. 对等方 1 发送基于 AuthIP 的 ISAKMP 消息,启动 AuthIP 主模式协商,对等方 2 自行放弃该协商。
  3. 对等方 1 发送基于 IKE 的 ISAKMP 消息,启动 IKE 主模式协商。
  4. 对等方 2 响应基于 IKE 的 ISAKMP 消息,继续进行 IKE 主模式协商。
  5. 对等方 1 和对等方 2 完成 IKE 主模式和快速模式协商。
  6. 对等方 1 重新传输 TCP SYN 段(受 IPsec 保护)。
  7. 对等方 2 发送 TCP SYN-ACK 段(受 IPsec 保护)。
  8. 对等方 1 发送 TCP ACK 段(受 IPsec 保护)。

IKE 是在 RFC 2409 (ietf.org/rfc/rfc2409.txt) 中定义的 Internet 标准,该标准定义了建立 IPsec 安全关联 (SA) 的机制。SA 由双方都同意的策略、定义安全服务的密钥以及有助于保护 IPsec 对等方之间的通信的机制组成。具体来说,IKE 将 RFC 2408 中的 Internet 安全关联和密钥管理协议 (ISAKMP) 与 Oakley 密钥确定协议 (RFC 2412) 结合在一起,它使用 Oakley 密钥确定协议生成受保护通信的密钥材料。

IKE 使用 ISAKMP 协商 SA。ISAKMP 包括用于识别并验证对等方、管理 SA 以及交换密钥材料的设备。ISAKMP 是一个独立于特定密钥交换协议、加密和完整性算法以及身份验证方法的框架,用于协商受保护的通信。

IPsec 对等方使用 IKE 执行主模式和快速模式协商。主模式协商将创建 ISAKMP SA,这将保护安全协商。在主模式协商过程中,发起者和响应者彼此交换一系列 ISAKMP 消息,以便协商 ISAKMP SA 的加密和哈希算法、交换密钥确定材料以及识别并验证对方。

在快速模式协商阶段,将创建两个 IPsec SA(一个 SA 用于入站数据,另一个 SA 用于出站数据),这有助于保护两个 IPsec 对等方之间发送的数据。在快速模式协商过程中,发起者和响应者彼此交换一系列加密的 ISAKMP 消息,以便协商入站和出站 IPsec SA 的加密和哈希算法。

有关基于 IKE 的主模式和快速模式协商的详细消息,请参阅 microsoft.com/technet/community/columns/cableguy/cg0602.mspx 上的“适用于 IPsec 安全关联的 IKE 协商”。

AuthIP 概述

AuthIP 是 IKE 的增强版本,通过支持基于用户的身份验证、使用多个凭据进行身份验证、改进身份验证方法协商以及非对称身份验证提供了更大的灵活性。与 IKE 一样,AuthIP 支持主模式和快速模式协商。AuthIP 还支持扩展模式,扩展模式是 IPsec 对等方协商的一部分,在此期间可以执行第二轮身份验证。扩展模式(可选)可用于多种身份验证。例如,在扩展模式下,您可以执行单独的基于计算机和基于用户的身份验证。

多种身份验证支持是针对网络访问保护 (NAP) 平台的 IPsec 强制的一部分,其中 IPsec 对等方将使用计算机凭据进行身份验证,此外还会使用运行状况证书来证明它们符合系统运行状况要求。有关网络访问保护的详细信息,请访问 microsoft.com/nap。有关 AuthIP 功能的详细信息,请参阅 microsoft.com/technet/community/columns/cableguy/cg0806.mspx 上的“Windows Vista 中的 AuthIP”。

AuthIP 消息

IKE 和 AuthIP 均将 ISAKMP 用作其密钥交换和 SA 协商协议。ISAKMP 消息通过用户数据报协议 (UDP) 发送,由一个 ISAKMP 标头以及一个或多个 ISAKMP 负载组成。ISAKMP 标头包含有关此消息的信息,包括消息类型。图 1 显示了 ISAKMP 标头的格式。

图 1 ISAKMP 标头的格式

图 1** ISAKMP 标头的格式 **

在 ISAKMP 标头中,Initiator Cookie 和 Responder Cookie 被设置为 IPsec 对等方选择的非零随机数。Next Payload 字段表示 ISAKMP 消息中除 ISAKMP 标头外的第一个负载。RFC 2408 列出了 Next Payload 字段的定义值。负载类型 128-255 是专用的保留项。Major Version 和 Minor Version 字段表示发送 ISAKMP 消息的 IPsec 对等方上的 ISAKMP 版本。对于 IKE 和 AuthIP,主版本为 1,次版本为 0。

Exchange Type 字段表示要执行的 ISAKMP 交换类型。该交换类型确定 ISAKMP 负载的结构和顺序。RFC 2408 定义了 Exchange Type 字段的值。保留交换类型 128-255 以备专用。

Flags 字段包含在 RFC 2408 中定义的三个标记。低顺序位(位 0)是加密位,表示 ISAKMP 负载是否已被加密(设置为 1 表示已加密;设置为 0 表示未加密)。使用为 ISAKMP SA 协商的算法完成加密,该加密由 Initiator Cookie 和 Responder Cookie 字段一起标识。下一低顺序位(位 1)是提交位,表示密钥交换是否已同步(设置为 1 表示已同步;设置为 0 表示未同步)。提交位用于确保 SA 在发送加密数据之前完成其协商。下一低顺序位(位 2)是仅身份验证位,用于表示消息是否包含消息交换类型的整个 Notify 负载(设置为 1 表示包含;设置为 0 表示不包含)以及消息已通过身份验证但尚未加密。

Message ID 字段包含消息的唯一标识符。Message ID 用于防止 IPsec 对等方双方同时尝试建立 IPsec SA 时发生冲突。Length 字段表示整个 ISAKMP 消息的长度。

对于 IKE,ISAKMP 消息包含一系列 ISAKMP 负载。第一个负载由 ISAKMP 标头的 Next Payload 字段表示。每个 ISAKMP 负载都拥有各自的 Next Payload 字段,指示下一负载。最后一个负载中的 Next Payload 字段设置为 0。图 2 显示了 IKE 消息的格式。

图 2 IKE 消息的格式

图 2** IKE 消息的格式 **

AuthIP 使用 ISAKMP 标头中 Exchange Type 字段为交换类型 243(主模式)、244(快速模式)、245(扩展模式)以及 246(通知)的 ISAKMP 消息。基于 AuthIP 的 ISAKMP 消息的主要不同点在于它们仅包含一个 ISAKMP 负载:Crypto 负载或 Notify 负载。Crypto 负载包含用于主模式、快速模式或扩展模式协商的嵌入负载。Crypto 负载可包含一系列纯文本或加密负载,这取决于 ISAKMP 标头 Flags 字段中的加密位。图 3 显示了包含 Crypto 负载的 AuthIP 消息的格式。

图 3 包含 Crypto 负载的 AuthIP 消息的格式

图 3** 包含 Crypto 负载的 AuthIP 消息的格式 **

AuthIP 和 IKE 共存

Windows Vista® 和 Windows Server® 2008 同时支持 IKE 和 AuthIP。而 Windows® XP 和 Windows Server 2003 仅支持 IKE。如发起 IPsec 对等方支持 AuthIP 和 IKE 且其连接安全策略同时使用 AuthIP 和 IKE,必须确定响应 IPsec 对等方是否支持 AuthIP 和 IKE。然后,必须使用最合适的协议来协商 IPsec 保护,如果同时支持 AuthIP 与 IKE,则优先使用 AuthIP。

为了确定响应 IPsec 对等方的协商协议,使用 AuthIP 和 IKE 的发起 IPsec 对等方将同时发送下列消息:

  • 消息 1 — 发起主模式协商的 AuthIP 消息
  • 消息 2 — 发起主模式协商的 IKE 消息

如果响应节点支持 AuthIP,它必须使用继续主模式协商的 AuthIP 消息响应消息 1,并自行放弃消息 2。不支持 AuthIP 的响应节点因 Exchange Type 字段包含它不支持的值,所以将自行放弃消息 1,并对消息 2 做出响应。

为了防止在消息 1 从网络中丢失或在消息 2 之后到达的情况下,运行 Windows Vista 或 Windows Server 2008 的 IPsec 对等方双方之间进行基于 IKE 的协商,运行 Windows Vista 或 Windows Server 2008 的 IPsec 对等方将发送具有支持 AuthIP 的供应商 ID ISAKMP 负载的消息 2。支持 AuthIP 的供应商 ID 负载表示 IPsec 对等方支持 AuthIP。

因此,如果运行 Windows Vista 或 Windows Server 2008 的 IPsec 对等方收到的消息 2 具有支持 AuthIP 的供应商 ID 负载,则它会等待发起 IPsec 对等方重新传输消息 1 和消息 2,然后对消息 1 做出响应。

在收到响应或时间超时前,发起 IPsec 对等方将持续重新传输消息 1 和消息 2。收到响应后,发起者将根据该响应的 ISAKMP 标头确定响应者的功能。如果 Exchange Type 设置为 243(适用于基于 AuthIP 的主模式协商的交换类型),则响应者支持 AuthIP。如果 Exchange Type 设置为 2(适用于身份保护和基于 IKE 的主模式协商的交换类型),则响应者支持 IKE。

根据收到的响应,发起者将使用下一 AuthIP 消息响应进行 AuthIP 主模式协商;或使用下一 IKE 消息响应进行 IKE 主模式协商。IPsec 对等方必须使用为 SA 生存期协商 ISAKMP SA 所用的协议。

Joseph Davies是 Microsoft 的一位技术撰稿人,同时也是 Microsoft.com/technet/community/columns/cableguy 上每月在线 TechNet 网络专家专栏的作者。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.