1.7. RFC 4306 与本文档之间的重大差异
1.7. RFC 4306 与本文档之间的重大差异
本文档包含对 IKEv2 [IKEV2] 的澄清和补充。许多澄清基于 [Clarif]。该文档中列出的更改在 IPsec 工作组中进行了讨论,并在工作组解散之后,在 IPsec 邮件列表上进行了讨论。该文档包含了对 IKEv2 中不明确领域(areas)的详细解释,因此对 IKEv2 的实现者很有用。
本文档所描述的协议保留了与 RFC 4306 中使用的相同的主版本号 (2) 和次版本号 (0)。也就是说,版本号没有从 RFC 4306 中更改。此处列出的少量技术更改预计不会影响在本文档发布时已经部署的 RFC 4306 实现。
本文档使图表和引用比 [IKEV2] 中的更一致一些。
IKEv2 开发者指出,RFC 4306 中的 SHOULD 级需求往往不够清晰,因为它们没有说明何时可以不遵守这些需求。他们还指出,存在一些与互操作性无关的 MUST 级需求。本文档对其中一些需求做了更多解释。所有非大写使用的 SHOULD 和 MUST 词汇现在都表示其普通的英语含义,而不是 [MUSTSHOULD] 中的互操作性含义。
IKEv2(和 IKEv1)开发者指出,RFC 4306 第 3.10.1 节的代码表中有大量材料。这导致实现者在文档正文中没有获得所有需要的信息。这些表中的大部分材料已移到文档正文的相关部分。
本文档移除了对嵌套 AH 和 ESP 的讨论。这是 RFC 4306 中的一个错误,由完成 RFC 4306 与 RFC 4301 之间的时间差造成。基本上,IKEv2 基于 RFC 4301,而 RFC 4301 不包含 RFC 2401 中的"SA 束"(SA bundles)。虽然单个报文可以多次通过 IPsec 处理,但每次处理都使用单独的 SA,并且这些处理由转发表协调。在 IKEv2 中,这些 SA 中的每一个都必须使用单独的 CREATE_CHILD_SA 交换来创建。
本文档移除了对 INTERNAL_ADDRESS_EXPIRY 配置属性的讨论,因为它的实现非常有问题。符合本文档的实现必须忽略具有配置属性类型 5(INTERNAL_ADDRESS_EXPIRY 的旧值)的提议。本文档还移除了作为配置属性的 INTERNAL_IP6_NBNS。
本文档移除了允许拒绝载荷顺序不"正确"的消息的规定;现在实现不得拒绝它们。这是因为在描述载荷顺序的地方缺乏清晰性。
来自 RFC 4306 的、最终进入 IANA 注册表的条目列表被精简为只包含在 RFC 4306 中实际定义的条目。此外,这些列表中的许多现在都以对开发者非常重要的指示开头,即他们确实应该在开发时查看 IANA 注册表,因为自 RFC 4306 以来已经添加了新的条目。
本文档补充了关于通知何时加密、何时不加密的澄清,这取决于当时的协商状态。
本文档更详细地讨论了如何协商组合模式(combined-mode)密码。
在第 1.3.2 节中,"The KEi payload SHOULD be included"(KEi 载荷应被包含)被改为"The KEi payload MUST be included"(KEi 载荷必须被包含)。这也导致了第 2.18 节的更改。
在第 2.1 节中,有新的材料说明如何使用发起方的 SPI 和/或 IP 来区分这是"半开"(half-open)的 IKE SA 还是一个新请求。
本文档澄清了第 2.5 节中关键标志(critical flag)的使用。
在第 2.8 节中,"Note that, when rekeying, the new Child SA MAY have different Traffic Selectors and algorithms than the old one"(注意,重密钥时,新子 SA 可以具有与旧子 SA 不同的流量选择器和算法)被改为"Note that, when rekeying, the new Child SA SHOULD NOT have different Traffic Selectors and algorithms than the old one"(注意,重密钥时,新子 SA 不应具有与旧子 SA 不同的流量选择器和算法)。
新的第 2.8.2 节涵盖了同时进行的 IKE SA 重密钥。
新的第 2.9.2 节涵盖了重密钥中的流量选择器。
本文档在第 2.13 节中添加了限制,即与 IKEv2 一起使用的所有伪随机函数 (PRF) 必须接受可变大小的密钥。这不应对任何实现造成影响,因为没有标准化的具有固定大小密钥的 PRF。
第 2.18 节要求在重密钥 IKE_SA 时进行 Diffie-Hellman 交换。理论上,RFC 4306 允许 Diffie-Hellman 交换是可选的策略,但在重密钥 IKE_SA 时这并不有用(也不合适)。
第 2.21 节已被大幅扩展,以涵盖需要错误响应的各种情况以及对这些情况的适当响应。
第 2.23 节澄清了在 NAT 穿越中,接收时现在需要理解 UDP 封装的 IPsec 报文和非 UDP 封装的 IPsec 报文。
添加了第 2.23.1 节,以描述当请求传输模式时的 NAT 穿越。
添加了第 2.25 节,以解释当在删除和/或重密钥 SA 时出现时间冲突时应如何行动,并定义了两个新的错误通知(TEMPORARY_FAILURE 和 CHILD_SA_NOT_FOUND)。
在第 3.6 节中添加了"Implementations MUST support the HTTP method for hash-and-URL lookup. The behavior of other URL methods is not currently specified, and such methods SHOULD NOT be used in the absence of a document specifying them"(实现必须支持用于 hash-and-URL 查找的 HTTP 方法。其他 URL 方法的行为目前未指定,在没有指定这些方法的文档的情况下,不应使用此类方法)。
在第 3.15.3 节中添加了一个指向与 IPv6 地址配置相关的新文档的指针。
附录 C 被扩展和澄清。