跳到主要内容

3.4 Key Exchange Payload (密钥交换载荷)

3.4 Key Exchange Payload (密钥交换载荷)

Key Exchange 载荷在本文档中记为 KE, 用于在 Diffie-Hellman 密钥交换中交换 Diffie-Hellman 公钥. Key Exchange 载荷由 IKE 通用载荷首部后接 Diffie-Hellman 公钥值本身构成.

                        1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Payload |C| RESERVED | Payload Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Diffie-Hellman Group Num | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Key Exchange Data ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 10: Key Exchange Payload Format

构造 Key Exchange 载荷时, 将本方的 Diffie-Hellman 公钥值复制到载荷的 "Key Exchange Data" 部分. 对 MODP 群, Diffie-Hellman 公钥值的长度必须等于执行幂运算所用素数模的长度, 必要时在值前补零.

Diffie-Hellman Group Num 指明计算 Key Exchange Data 时使用的 Diffie-Hellman 群 (见第 3.3.2 节). 该编号必须与同一消息中所发 SA 载荷某 proposal 中指定的 Diffie-Hellman 群一致, 且若存在, 宜与第一个 proposal 中第一个群一致. 若该 SA 载荷中没有任何 proposal 指定 Diffie-Hellman 群, 则不得出现 KE 载荷. 若所选 proposal 使用不同的 Diffie-Hellman 群 (非 NONE), 必须以类型为 INVALID_KE_PAYLOAD 的 Notify 载荷拒收该消息. 另见第 1.2 与 2.7 节.

Key Exchange 载荷的载荷类型编号为三十四 (34).