1. Introduction (简介)
1. Introduction (简介)
IP Security (IPsec, IP 安全) 为 IP 数据报提供机密性, 数据完整性, 访问控制以及数据源认证. 这些服务通过在 IP 数据报的源端与宿端之间维护共享状态来提供. 该状态除其他事项外还定义: 为数据报提供的具体服务, 将用于提供服务的密码算法, 以及作为密码算法输入而使用的密钥.
以手工方式建立此种共享状态难以扩展. 因此需要一种能够动态建立该状态的协议. 本文档描述这样一种协议, 即 Internet Key Exchange (IKE, 互联网密钥交换). IKE 的版本 1 定义于 RFC 2407 [DOI], 2408 [ISAKMP] 和 2409 [IKEV1]. IKEv2 取代了上述全部 RFC. IKEv2 定义于 [IKEV2] (RFC 4306), 并在 [Clarif] (RFC 4718) 中得到澄清. [RFC5996] 取代并更新了 RFC 4306 与 4718. 本文档取代 RFC 5996. RFC 4306 中所述的 IKEv2 是对 IKE 协议的一次不向后兼容的变更. RFC 5996 修订 RFC 4306, 对 IKEv2 作出澄清, 并对 IKEv2 协议做最小改动. 本文档取代 RFC 5996, 对其略作修订以使其适于晋升为 Internet Standard (互联网标准). RFC 4306 与 5996 之间的重要差异列表见第 1.7 节, 本文档与 RFC 5996 之间的差异见第 1.8 节.
IKE 在双方之间执行相互认证, 并建立一个 IKE Security Association (SA, 安全关联), 其中包含可用于高效建立 Encapsulating Security Payload (ESP, 封装安全载荷) [ESP] 或 Authentication Header (AH, 认证头) [AH] 的 SA 的共享秘密信息, 以及供这些 SA 用于保护其所承载流量的密码算法集合. 在本文档中, 术语 "suite (套件)" 或 "cryptographic suite (密码套件)" 指用于保护某一 SA 的完整算法集合. 发起方通过列出可组合为套件的受支持算法, 以一种混搭方式提议一个或多个套件. IKE 还可就 ESP 或 AH SA 协商使用 IP Compression (IPComp, IP 压缩) [IP-COMP]. 通过该 IKE SA 建立的 ESP 或 AH 的 SA 在本文档中称为 "Child SA (子 SA)".
所有 IKE 通信均由成对的消息组成: 一条请求与一条响应. 该对消息称为 "exchange (交换)", 有时也称为 "request/response pair (请求/响应对)". 建立 IKE SA 的前两个消息交换分别称为 IKE_SA_INIT 交换与 IKE_AUTH 交换, 其后的 IKE 交换称为 CREATE_CHILD_SA 交换或 INFORMATIONAL 交换. 常见情况下, 各有一次 IKE_SA_INIT 交换与 IKE_AUTH 交换 (共四条消息) 即可建立 IKE SA 与第一个 Child SA. 在例外情况下, 上述每种交换可能出现多次. 在任何情况下, 所有 IKE_SA_INIT 交换必须在任何其他交换类型之前完成, 随后所有 IKE_AUTH 交换必须完成, 之后方可按任意顺序出现任意数量的 CREATE_CHILD_SA 与 INFORMATIONAL 交换. 某些场景中, IPsec 端点之间只需要单个 Child SA, 因而不会有额外交换. 后续交换可用于在同一对已认证端点之间建立更多 Child SA, 并执行维护性功能.
IKE 消息流始终由请求后随响应构成. 确保可靠性是请求方的责任. 若在超时间隔内未收到响应, 请求方需要重传该请求 (或放弃该连接).
IKE 会话的第一个交换 IKE_SA_INIT 协商 IKE SA 的安全参数, 发送 nonce (随机数), 并发送 Diffie-Hellman 值.
第二个交换 IKE_AUTH 传输身份, 证明各方掌握与其两个身份相对应的秘密, 并为第一个 (通常也是唯一的) AH 或 ESP Child SA 建立 SA (除非建立 AH 或 ESP Child SA 失败, 此时仍建立 IKE SA 但不带 Child SA).
后续交换的类型为 CREATE_CHILD_SA (创建 Child SA) 与 INFORMATIONAL (删除 SA, 报告错误状况或执行其他维护). 每个请求都需要响应. 不含载荷的 INFORMATIONAL 请求 (语法所要求的空 Encrypted 载荷除外) 通常用作存活探测. 在完成初始交换之前不能使用这些后续交换.
以下描述中, 假定不发生错误. 发生错误时对流程的修改见第 2.21 节.
Contents
- 1.1. Usage Scenarios (使用场景)
- 1.2. The Initial Exchanges (初始交换)
- 1.3. The CREATE_CHILD_SA Exchange (CREATE_CHILD_SA 交换)
- 1.4. The INFORMATIONAL Exchange (INFORMATIONAL 交换)
- 1.5. Informational Messages outside of an IKE SA (IKE SA 外的Informational消息)
- 1.6. Requirements Terminology (要求术语)
- 1.7. Significant Differences between RFC 4306 and RFC 5996 (RFC 4306 与 RFC 5996 的重要差异)
- 1.8. Differences between RFC 5996 and This Document (RFC 5996 与本文档的差异)