3.14. Encrypted Payload (加密载荷)
3.14. Encrypted Payload (加密载荷)
Encrypted payload 在本文件中记为 SK {...}, 以加密形式包含其他载荷. 若消息中存在 Encrypted payload, 则其必须是消息中的最后一个载荷. 常见情况下, 它也是消息中唯一的载荷. 该载荷亦称 “Encrypted and Authenticated (加密且认证)” 载荷.
加密与完整性保护算法在 IKE SA 建立时协商, 密钥按第 2.14 与 2.18 节计算.
本文档规定使用分组密码 CBC 模式及在可变长度消息上计算固定长度校验和的完整性校验算法对 Encrypted payload 进行密码处理. 设计参照 RFC 2104 [HMAC], 4303 [ESP], 2451 [ESPCBC] 所述 ESP 算法. 本文档完整规定 IKE 数据的密码处理, 设计理由请参阅那些文档. 未来文档可为其他变换类型 (如计数器模式加密与认证加密算法) 规定 Encrypted payload 的处理. 对等方不得协商尚不存在此类规范的变换.
当使用认证加密算法保护 IKE SA 时, Encrypted payload 的构造与本文描述不同. 认证加密算法及其在 IKEv2 中的使用见 [AEAD].
Encrypted payload 的载荷类型为四十六 (46). Encrypted payload 由 IKE 通用载荷头后跟下列字段构成:
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 |
| (length is block size for encryption algorithm) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Encrypted IKE Payloads ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Padding (0-255 octets) |
+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| | Pad Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Integrity Checksum Data ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
图 21: Encrypted payload 格式
-
Next Payload - 第一个嵌入载荷的载荷类型. 注意这是对标准头格式的例外, 因为 Encrypted payload 是消息中最后一个载荷, 因而 Next Payload 通常为零. 但由于本载荷的内容是嵌入载荷, 且没有自然位置放置第一个载荷的类型, 故将该类型放在此处.
-
Payload Length - 包含头, 初始化向量 (IV), 加密的 IKE 载荷, Padding, Pad Length 与 Integrity Checksum Data 的长度.
-
Initialization Vector - 对 CBC 模式密码, IV 长度等于底层加密算法的分组长度. 发送方必须为每条消息选择新的不可预测 IV; 接收方必须接受任意值. 建议读者查阅
[MODES]关于 IV 生成的建议. 特别地, 使用上一条消息的最后密文块作为 IV 不被视为不可预测. 对非 CBC 模式, IV 格式与处理在指定加密算法与模式的文档中规定. -
IKE 载荷如前文本节所述. 本字段用协商的密码加密.
-
Padding 可以包含发送方选择的任意值, 且长度必须使载荷, Padding 与 Pad Length 合起来的长度为加密分组大小的整数倍. 本字段用协商的密码加密.
-
Pad Length 为 Padding 字段的长度. 发送方应将 Pad Length 设为使载荷, Padding 与 Pad Length 合起来为分组大小整数倍的最小值, 但接收方必须接受任何能产生正确对齐的长度. 本字段用协商的密码加密.
-
Integrity Checksum Data 为从固定 IKE 头到 Pad Length 的整条消息的密码学校验和. 校验和必须在加密后的消息上计算. 其长度由协商的完整性算法决定.