在可以交换安全数据之前,必须在两台计算机之间建立协议。在此协议 [称为安全关联 (SA)] 中,双方就如何交换与保护信息达成一致。

密钥是一种用于读取、修改或验证安全数据的机密代码或数字。密钥与算法(一种数学处理)结合使用以保护数据。在 IPSec 中,有两个使用密钥的阶段或模式。主模式首先出现并生成共享的主密钥,双方可以使用此主密钥以安全的方式交换密钥信息。而在建立用于数据完整性或加密的一个或多个会话密钥过程中,则由快速模式使用主密钥来提供安全保护。

Windows 自动处理密钥生成,并实现以下密钥属性,最大限度地发挥保护作用:

重要

“IP 安全策略”管理单元可用于创建 IPSec 策略,这类策略可应用于运行 Windows Vista 和更高版本 Windows 的计算机,但是此管理单元不使用新的安全算法以及运行这些更高版本 Windows 的计算机中所提供的其他新功能。若要为这些计算机创建 IPsec 策略,请使用 高级安全 Windows 防火墙 管理单元。高级安全 Windows 防火墙 管理单元创建的策略不能应用于较早版本的 Windows。

动态重新加密

IPSec 使用称为动态重新加密的方法来控制通信过程中生成新密钥的频率。通信以块的形式发送;对每个数据块都使用不同的密钥进行保护。这样可防止已经获取部分通信和相应的会话密钥的攻击者获取其余部分的通信。此请求式安全协商和自动密钥管理服务是通过使用 RFC 2409 中定义的 Internet 密钥交换 (IKE) 提供的。

IPSec 允许您控制生成新密钥的频率。如果未配置值,则以默认时间间隔自动重新生成密钥。

密钥长度

密钥的长度每增加一位,可能的密钥数会加倍,这使确定密钥的难度也随之成倍增加。IPSec 提供多种允许使用短的或长的密钥长度的算法。

密钥材料生成:Diffie-Hellman 算法

若要启用安全通信,两台计算机必须能够获取相同的共享密钥(快速模式或会话密钥),而不必通过网络发送密钥,也不会泄密。

Diffie-Hellman 算法 (DH) 是用于密钥交换的最古老而最安全的算法之一。双方公开交换密钥信息,并且在 Windows 中,还会额外使用哈希函数签名对此密钥信息提供保护。任何一方都不交换实际密钥;但是,在交换密钥材料之后,每一方都能够生成相同的共享密钥。

双方交换的 DH 密钥材料可以基于 768 位、1024 位或 2048 位密钥材料,即 DH 组。DH 组的强度与从 DH 交换计算出的密钥的强度相称。提供较强安全性的 DH 组与较长的密钥长度结合使用,增加了有关确定密钥的计算难度。

注意

在“IKE 安全算法”对话框中,768 位对应“低 (1)”设置,而 1024 位对应“中 (2)”设置。

IPSec 使用 DH 算法为所有其他加密密钥提供密钥材料。DH 不提供身份验证。Microsoft Windows 在 DH 交换之后实现对 IPSec 身份验证的标识,可提供防止中间人攻击的保护。

密钥保护

下列功能增强了主密钥与会话密钥的基本素数(密钥材料)与强度。

密钥生存期

密钥生存期决定生成新密钥的时间,而不决定生成新密钥的方式。密钥生存期也称为动态重新加密或密钥重新生成,它允许您在指定的时间间隔之后强制重新生成密钥。例如,如果通信需要 10000 秒,而您指定的密钥生存期为 1000 秒,则会生成 10 个密钥来完成通信。这样可确保即使攻击者能够解密部分通信,通信的其余部分也会受到保护。可以同时为主密钥与会话密钥指定密钥生存期。每当到达密钥生存期时,便会重新协商 SA。此外,将刷新或重新生成密钥。单个密钥处理的数据量不应超过 100 MB。

会话密钥刷新限制

由于对快速模式会话密钥进行重复加密可能会泄露 Diffie-Hellman 共享机密,所以使用快速模式会话密钥刷新限制。

例如,使用计算机 A 的 Alice 向使用计算机 B 的 Bob 发送消息,几分钟之后又向 Bob 发送另一条消息。由于最近已经建立 SA,所以可能重复使用相同的会话密钥材料。若要限制发生这种情况的次数,请将会话密钥刷新限制设置为一个较小的数值。

如果已经启用主密钥完全向前保密 (PFS),则不使用快速模式会话密钥刷新限制。将会话密钥刷新限制设置为 1,与启用主密钥 PFS 的效果相同。如果同时指定了主模式主密钥生存期和快速模式会话密钥刷新限制,则随后的重新加密过程将依照最先达到的限制来进行。默认情况下,IPSec 策略不指定会话密钥刷新限制。

Diffie-Hellman 组

Diffie-Hellman (DH) 组用来确定 DH 交换的基本素数(密钥材料)的长度。从 DH 交换派生的任何密钥的强度都将部分取决于素数所基于的 DH 组的强度。

每个 DH 组都可定义要使用的密钥材料的长度。第 1 组保护密钥材料的 768 位;第 2 组保护 1024 位;第 3 组保护 2048 位。如果使用的组越大,则从 DH 交换确定产生的密钥越大,并且越难让攻击者确定。

IKE 基于在“IKE 安全算法”对话框中配置的设置来协商要使用的组,可确保没有导致在两个对等端之间出现错误匹配的 DH 组的任何协商失败。

如果启用会话密钥 PFS,则会在第一次快速模式 SA 协商中协商新的 DH 密钥。此新 DH 密钥会删除为主密钥执行 DH 交换时的会话密钥的依存关系。

如果发送方在使用会话密钥 PFS,就不需要响应方使用会话密钥 PFS。但是,如果发送方未使用会话密钥 PFS,而响应方使用会话密钥 PFS,则协商会失败。

主模式与快速模式 SA 协商使用的 DH 组相同。启用会话密钥 PFS 时,即使已将 DH 组设置为主模式 SA 协商的一部分,它也会在快速模式会话密钥建立过程中影响所有重新生成的密钥。

完全向前保密

与密钥生存期不同,PFS 决定生成新密钥的方式,而不决定生成新密钥的时间。尤其是,PFS 确保泄露单一密钥仅允许访问其所保护的数据,而不一定允许访问整个通信。为此,PFS 确保用于保护传输的密钥在任何一种模式下都不能用于生成其他密钥。此外,如果所用的密钥是用特定密钥材料派生的,则此材料无法用于生成其他密钥。

主模式主密钥 PFS 需要重新进行身份验证,且资源消耗很大。启用这种 PFS 时,IKE 必须重新进行身份验证,从而在使用 Kerberos V5 身份验证协议进行身份验证时会增加域控制器的额外开销。每次发生的快速模式协商都需要进行一次新的主模式协商。

快速模式会话密钥 PFS 可在不重新进行身份验证的情况下进行使用,其资源消耗很小。会话密钥 PFS 会导致进行 DH 交换,以生成新的密钥材料。它仅需要四条消息,且无需进行身份验证。

PFS 不必在两个对等端上同时启用,因为它不是 SA 协商的一部分。如果响应方需要 PFS 且发送方的快速模式 SA 已到期,则它只需拒绝发送方的消息并要求进行新的协商。发送方让主模式 SA 过期,然后重新进行协商。可以为主密钥(主模式)和会话密钥(快速模式)分别设置 PFS。

密钥交换

在可以交换安全数据之前,必须先在两台计算机之间建立协议。在此协议 (SA) 中,双方就如何交换与保护信息达成一致。

为建立两台计算机之间的协议,Internet 工程任务组 (IETF) 已建立安全关联和密钥交换解决方案的 IKE 方法:

  • 集中进行安全关联管理,减少连接时间。

  • 生成和管理用于保护信息的共享机密密钥。

此过程不仅保护计算机之间的通信,还保护请求对公司网络进行安全访问的远程计算机。此外,每当安全网关执行最终目标计算机的协商时,都进行此过程。

安全关联定义

SA 是协商密钥、安全协议与安全参数索引 (SPI) 的组合,它们一起定义用于保护从发送方到接收方通信的安全。SPI 是 SA 中的唯一标识值,用于区分接收端计算机上存在的多个安全关联。例如,如果一台计算机同时与多台计算机进行安全通信,就会存在多个关联。当计算机作为给多个客户端提供服务的文件服务器或远程访问服务器时,通常会出现这种情况。在这些情况下,接收计算机使用 SPI 来决定使用哪个 SA 处理传入的数据包。

主模式 SA

为确保通信的成功与安全,IKE 执行两个阶段的操作。在每一阶段过程中,通过使用安全协商期间两台计算机达成的加密与身份验证算法可确保实现保密与身份验证。通过两个阶段所担负的任务,可快速完成密钥创建。

在第一阶段期间,两台计算机建立一种安全的经过身份验证的通道。这称为主模式 SA。IKE 在此交换期间自动提供所需的标识保护。

下列步骤描述了主模式协商。

  1. 策略协商。下列四个强制性参数作为主模式 SA 的部分进行协商:

    • 加密算法(DES 或 3DES)。

    • 哈希算法(MD5 或 SHA1)。

    • 身份验证方法(Kerberos?V5 身份验证协议、证书或预共享密钥身份验证)。

    • 要用于基本密钥材料 [768 位“低(第一组)”、1024 位“中(第二组)”或 2048 位“高(第三组)”] 的 Diffie-Hellman (DH) 组。

    • 如果使用证书或预共享密钥进行身份验证,则计算机标识会受到保护。但是,如果使用 Kerberos?V5 身份验证,则在身份验证期间对整个标识负载进行加密之前,计算机标识将处于未加密状态。

  2. (公用值的)DH 交换。在任何时候都不会交换实际的密钥。仅在 DH 密钥确定算法需要信息以生成共享密钥时,才交换机密密钥。在此交换之后,每台计算机上的 IKE 服务会生成用于保护身份验证的主密钥。

  3. 身份验证。计算机试图对 DH 密钥交换进行身份验证。不对 DH 密钥交换进行身份验证,通信就很容易遭受中间人的攻击。没有成功的身份验证,通信就无法继续。主密钥与协商算法和方法配合使用对标识进行身份验证。整个标识负载(包括标识类型、端口和协议)都使用从第二步中的 DH 交换生成的密钥进行哈希计算和加密。无论使用何种身份验证方法,都保护标识负载以防止修改和破解。

    发送方会为接收方提供一种潜在的安全关联提议。响应方不能修改提议。如果对提议进行修改,则发送方将拒绝响应方的消息。响应方将发送一个接受提议的回复,或者发送一个可选择的回复。

    在此阶段中发送的消息有一个自动重试周期,该周期重复五次。如果在重试周期结束之前收到响应,则标准 SA 协商就会开始。如果 IPSec 策略允许,则不安全通信将会在简短的时间间隔之后开始。此行为称为回退清除。即使通信进行回退清除,也会以 5 分钟为时间间隔尝试安全通信协商。

    对于可发生的交换次数没有限制。建立的 SA 数仅受系统资源限制。

快速模式 SA

在此阶段中,会以 IP 安全驱动程序的名义对 SA 进行协商。

下列步骤描述了快速模式协商。

  1. 进行策略协商。IPSec 计算机将交换以下保护数据传输的要求:

    • IPSec 协议(AH 或 ESP)

    • 完整性和身份验证的哈希算法(MD5 或 SHA1)

    • 加密的算法(如果请求)(DES 或 3DES)

    达成通用协议并建立两个 SA。一个 SA 用于入站通信,另一个用于出站通信。

  2. 刷新或交换会话密钥材料。IKE 刷新密钥材料并生成用于数据包完整性、身份验证与加密(如果已协商)的新共享密钥。如果需要重新加密,则会进行第二次 DH 交换(如主模式协商中所述),或者使用原始 DH 密钥进行刷新。

  3. SA、密钥以及 SPI 已传递到 IP 安全驱动程序。安全设置与密钥材料(用于保护数据)的快速模式协商受主模式 SA 保护。第一阶段提供标识保护,而第二阶段(快速模式)则通过在发送数据之前刷新密钥材料来提供保护。如果需要重新加密(即启用主密钥 PFS),则 IKE 可容纳用于其他 DH 交换的密钥交换负载。否则,IKE 会刷新在主模式下完成的 DH 交换所产生的密钥材料。

    快速模式会产生一对安全关联,其中的每个关联都带有自己的 SPI 和密钥。一个 SA 用于入站通信,另一个用于出站通信。

    消息的重试算法与主模式协商中描述的过程类似。但是,如果在同一主模式 SA 的第二次协商或更多次的协商过程中,不论因任何原因导致此过程超时,都会尝试重新协商主模式 SA。如果在没有建立主模式 SA 的情况下收到此阶段的消息,则会拒绝此消息。

    将单个主模式 SA 用于多个快速模式 SA 协商可提高处理的速度。只要主模式 SA 未过期,就不需要进行重新协商和重新身份验证。可以执行的快速模式 SA 协商的次数由 IPSec 策略设置决定。

    注意

    从同一主模式 SA 进行过多的重新加密会使共享密钥易遭受已知的明文攻击。已知明文攻击是一种探测器攻击,攻击者试图基于已知的明文确定加密数据的加密密钥。

SA 生存期

对主模式 SA 进行缓存,就可进行多个快速模式 SA 协商(除非已启用主密钥 PFS)。当用于主密钥或会话密钥的密钥生存期到期时,会重新协商 SA。此外,将刷新或重新生成密钥。

当主模式 SA 的默认超时时间到期,或者主密钥或会话密钥生存期到期时,将对响应方发送删除消息。IKE 删除消息告诉响应方使主模式 SA 到期。这样可防止从已到期的主模式 SA 创建其他新的快速模式 SA。IKE 不会使快速模式 SA 到期,因为只有 IPSec 驱动程序包含到达密钥生存期之前所经过的秒数或传送的字节数。

为主密钥与会话密钥设置差异很大的密钥生存期时,请小心操作。例如,将主模式主密钥的生存期设置为八小时,而将快速模式会话密钥的生存期设置为两小时,可能会使快速模式 SA 在主模式 SA 已经到期之后保持将近两小时的有效期。在主模式 SA 到期之前不久生成快速模式 SA 时,就会出现上述情况。