跳到主要内容

3.14. Encrypted Payload

3.14. Encrypted Payload​

Encrypted 负载包含已加密的 payload 数据。该负载使用 IKE SA 的加密算法和密钥进行加密。

Encrypted 负载格式如下:

                 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initialization Vector (IV) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Plaintext Encrypted Payload ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Integrity Checksum Data ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Figure 18:  Encrypted 负载格式

o Initialization Vector (IV) (变长) - 加密算法所需的初始化向量。其长度由协商的加密算法决定(例如,AES-CBC 的 IV 为 16 字节)。

o Plaintext Encrypted Payload (变长) - 加密的 payload 数据。包含一系列加密的 IKE payload。

o Integrity Checksum Data (变长) - 完整性校验数据,使用 IKE SA 的完整性算法计算。其长度由协商的完整性算法决定(例如,HMAC-SHA1 为 12 字节,HMAC-SHA256 为 16 字节)。

注意:Encrypted 负载是 IKE_AUTH、CREATE_CHILD_SA 和 INFORMATIONAL 交换中的主要负载。在 IKE_SA_INIT 交换之后,所有 IKE 消息主体都封装在 Encrypted 负载中。

加密过程如下:

  1. 构造明文:一系列 IKE payload(从第一个 payload 头开始)。
  2. 如果需要,对明文进行填充,使其长度成为加密算法块大小的倍数。
  3. 使用 IKE SA 的加密算法和密钥对明文进行加密。
  4. 使用 IKE SA 的完整性算法和密钥,计算明文(或密文,取决于算法)的完整性校验值。
  5. 将 IV、密文和完整性校验数据拼接为 Encrypted 负载。

接收方使用相应的密钥解密并验证完整性。如果完整性验证失败,MUST 丢弃该消息。