跳到主要内容

2.18. 使用 CREATE_CHILD_SA 交换重新生成 IKE SA 的密钥

2.18. 使用 CREATE_CHILD_SA 交换重新生成 IKE SA 的密钥​

CREATE_CHILD_SA 交换可用于为现有的 IKE SA 重新生成密钥 (见第 1.3.2 和 2.8 节)。新的发起方和响应方 SPI 在安全关联 (SA) 载荷内提案结构的 SPI 字段中提供 (而不是 IKE 头部中的 SPI 字段)。在为 IKE SA 重新生成密钥时省略 TS 载荷。新 IKE SA 的 SKEYSEED 使用现有 IKE SA 的 SK_d 计算如下:

SKEYSEED = prf(SK_d (old), g^ir (new) | Ni | Nr)

其中 g^ir (new) 是这个 CREATE_CHILD_SA 交换的临时 Diffie-Hellman 交换的共享密钥 (表示为一个大端顺序的八字节字符串, 必要时用零填充以使其达到模数的长度), Ni 和 Nr 是去除了任何头部的两个随机数。

旧的 IKE SA 和新的 IKE SA 可能选择了不同的 PRF。因为重新生成密钥的交换属于旧的 IKE SA, 所以用于生成 SKEYSEED 的是旧的 IKE SA 的 PRF。

为 IKE SA 重新生成密钥的主要原因是确保旧密钥材料的泄露不会提供关于当前密钥的信息, 反之亦然。因此, 实现在重新生成 IKE SA 的密钥时必须 (MUST) 执行一个新的 Diffie-Hellman 交换。换句话说, 发起方必须 (MUST NOT) 为 Diffie-Hellman 变换提议 "NONE" 值, 响应方必须 (MUST NOT) 接受这样的提议。这意味着成功的为 IKE SA 重新生成密钥的交换总是包含 KEi/KEr 载荷。

新的 IKE SA 必须 (MUST) 将其消息计数器重置为 0。

SK_d, SK_ai, SK_ar, SK_ei 和 SK_er 按照第 2.14 节的规定从 SKEYSEED 计算得出, 使用来自新交换的 SPIi, SPIr, Ni 和 Nr, 以及使用新的 IKE SA 的 PRF。