2.18. Rekeying IKE SAs Using a CREATE_CHILD_SA Exchange (使用 CREATE_CHILD_SA 交换重密钥 IKE SA)
2.18. Rekeying IKE SAs Using a CREATE_CHILD_SA Exchange (使用 CREATE_CHILD_SA 交换重密钥 IKE SA)
CREATE_CHILD_SA 交换可用于对现有 IKE SA 重密钥 (见 1.3.2 与 2.8 节). 新的发起方与响应方 SPI 置于 Security Association (SA, 安全关联) 载荷内 Proposal 结构的 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 为去掉任何首部后的两个 nonce.
旧 IKE SA 与新 IKE SA 可能选择了不同 PRF. 由于重密钥交换属于旧 IKE SA, 生成 SKEYSEED 时使用旧 IKE SA 的 PRF.
对 IKE SA 重密钥的主要目的是确保旧密钥材料泄露不会泄露当前密钥信息, 反之亦然. 因此, 实现对 IKE SA 重密钥时必须执行新的 Diffie-Hellman 交换. 换言之, 发起方不得对 Diffie-Hellman 变换提议值 "NONE", 响应方不得接受此类提议. 这意味着成功重密钥 IKE SA 的交换始终包含 KEi/KEr 载荷.
新 IKE SA 必须将其消息计数器重置为 0.
SK_d, SK_ai, SK_ar, SK_ei 与 SK_er 按 2.14 节从 SKEYSEED 计算, 使用新交换中的 SPIi, SPIr, Ni 与 Nr, 以及新 IKE SA 的 PRF.