跳到主要内容

4. 一致性要求

为了确保所有 IKEv2 实现能够互操作,除了其他地方列出的要求外,还有一些"必须支持"的要求。当然,IKEv2 是一个安全协议,其主要功能之一是只允许授权方成功完成 SA 的建立。因此,特定实现可能被配置为带有关于算法和可信机构的若干限制,这些限制会阻止普遍的互操作性。

IKEv2 旨在允许能够与所有合规实现互操作的最小实现。以下是在最小实现中可以被省略的特性:

  • 通过 NAT 协商 SA 并将所得的 ESP SA 通过 UDP 隧道传输的能力。
  • 请求(以及响应请求)隧道远端临时 IP 地址的能力。
  • 支持基于 EAP 的认证的能力。
  • 支持大于 1 的窗口大小的能力。
  • 在单个 IKE SA 内建立多个 ESP 或 AH SA 的能力。
  • 重密钥 SA 的能力。

为确保互操作性,所有实现 MUST 能够解析所有 payload 类型(即使只是为了跳过它们),并忽略其不支持的 payload 类型,除非在 payload 头中设置了关键位(critical bit)。如果在不支持的 payload 头中设置了关键位,所有实现 MUST 拒绝包含这些 payload 的消息。

每个实现 MUST 能够执行四消息的 IKE_SA_INIT 和 IKE_AUTH 交换,建立两个 SA(一个用于 IKE,一个用于 ESP 或 AH)。如果适合其平台,实现可以是仅发起(initiate-only)或仅响应(respond-only)。每个实现 MUST 能够响应 INFORMATIONAL 交换,但最小实现 MAY 用空响应来响应 INFORMATIONAL 交换中的任何请求(注意,在 IKE SA 的上下文中,"空"消息由一个 IKE 头后跟一个不含任何 payload 的 Encrypted payload 组成)。最小实现 MAY 仅在能够识别请求并以类型为 NO_ADDITIONAL_SAS 的 Notify payload 拒绝它们的范围内支持 CREATE_CHILD_SA 交换。最小实现不需要能够发起 CREATE_CHILD_SA 或 INFORMATIONAL 交换。当 SA 过期(基于本地配置的生存期或通过的八位组数的值)时,实现 MAY 尝试用 CREATE_CHILD_SA 交换续约,或 MAY 删除(关闭)旧 SA 并创建新 SA。如果响应方以 NO_ADDITIONAL_SAS 通知拒绝 CREATE_CHILD_SA 请求,实现 MUST 能够改为删除旧 SA 并创建新 SA。

实现不要求支持请求临时 IP 地址或响应此类请求。如果实现确实支持发出此类请求且其策略要求使用临时 IP 地址,它 MUST 在 IKE_AUTH 交换的第一条消息中包含 CP payload,其中至少包含一个类型为 INTERNAL_IP4_ADDRESS 或 INTERNAL_IP6_ADDRESS 的字段。所有其他字段都是可选的。如果实现支持响应此类请求,它 MUST 解析 IKE_AUTH 交换第一条消息中类型为 CFG_REQUEST 的 CP payload,并识别类型为 INTERNAL_IP4_ADDRESS 或 INTERNAL_IP6_ADDRESS 的字段。如果它支持租赁相应类型的地址,它 MUST 返回类型为 CFG_REPLY 的 CP payload,其中包含所请求类型的地址。响应方 MAY 包含任何其他相关属性。

对于一个实现被称为符合本规范,MUST 能够将其配置为接受以下内容:

  • 使用 X.509(PKIX)证书的公钥基础设施,其中包含并由大小为 1024 或 2048 位的 RSA 密钥签名,其中传递的 ID 为 ID_KEY_ID、ID_FQDN、ID_RFC822_ADDR 或 ID_DER_ASN1_DN 中的任何一个。
  • 共享密钥认证,其中传递的 ID 为 ID_KEY_ID、ID_FQDN 或 ID_RFC822_ADDR 中的任何一个。
  • 响应方使用 PKIX 证书认证而发起方使用共享密钥认证的认证。