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)中进行了澄清。本文档替换并更新RFC 4306和RFC 4718。IKEv2是对IKE协议的一次不向后兼容的更改。相比之下, 本文档不仅提供了对IKEv2的澄清, 而且对IKE协议进行了最小的更改。RFC 4306与本文档之间的重大差异列表见第1.7节。
IKE在两方之间执行相互认证, 并建立一个IKE安全关联 (IKE security association, SA), 该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 SAs (子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和第一个子SA。在特殊情况下, 这些交换中的每一种可能有多次。在所有情况下, 所有IKE_SA_INIT交换必须在任何其他交换类型之前完成, 然后所有IKE_AUTH交换必须完成, 之后, 任意数量的CREATE_CHILD_SA和INFORMATIONAL交换可以以任何顺序进行。在某些场景中, IPsec端点之间只需要一个子SA, 因此不会有额外的交换。后续交换可用于在相同的已认证端点对之间建立额外的子SA并执行管理功能。
IKE消息流始终由请求后跟响应组成。请求者负责确保可靠性。如果在超时间隔内未收到响应, 请求者需要重传请求(或放弃连接)。
IKE会话的第一次交换IKE_SA_INIT协商IKE SA的安全参数, 发送随机数(nonces), 并发送Diffie-Hellman值。
第二次交换IKE_AUTH传输身份, 证明对两个身份对应的秘密的知识, 并为第一个(通常也是唯一的)AH或ESP子SA建立SA(除非建立AH或ESP子SA失败, 在这种情况下IKE SA仍然建立但没有子SA)。
后续交换的类型是CREATE_CHILD_SA(创建子SA)和INFORMATIONAL(删除SA, 报告错误条件或执行其他管理任务)。每个请求都需要响应。不包含载荷(除了语法要求的空加密载荷之外)的INFORMATIONAL请求通常用作活性检查。这些后续交换在初始交换完成之前不能使用。
在下面的描述中, 我们假设没有发生错误。发生错误时对流程的修改在第2.21节中描述。