3.2. Algorithms (算法)
3.2. Algorithms (算法)
与 ESP 一起使用的强制实现算法在单独的 RFC 中描述, 以便于独立于协议本身更新算法要求。除了 ESP 强制要求的算法之外, 可以支持其他算法。请注意, 尽管机密性和完整性都是可选的, 但必须至少选择其中一项服务, 因此两种算法不能同时为 NULL。
3.2.1. Encryption Algorithms (加密算法)
用于保护 ESP 数据包的加密算法由传输/接收数据包的 SA 指定。由于 IP 数据包可能会乱序到达, 而且并非所有数据包都会到达 (数据包丢失), 因此每个数据包必须携带接收方建立解密所需的密码同步所需的任何数据。这些数据可以在有效载荷字段中显式携带, 例如作为 IV (如上所述), 或者可以从 (外部 IP 或 ESP) 数据包头部的明文部分派生。(请注意, 如果使用明文头部信息来派生 IV, 该信息可能会变得对安全至关重要, 因此与加密过程相关的保护边界可能会扩大。例如, 如果使用 ESP 序列号来派生 IV, 则必须将序列号生成逻辑 (硬件或软件) 作为加密算法实现的一部分进行评估。在 FIPS 140-2 [NIST01] 的情况下, 这可能会显著扩展密码模块评估的范围。) 由于 ESP 为明文填充提供了规定, 与 ESP 一起使用的加密算法可能表现出块模式或流模式特征。请注意, 由于加密 (机密性) 可以是可选服务 (例如仅完整性的 ESP), 因此该算法可以是 "NULL" [Ken-Arch]。
为了允许 ESP 实现计算块模式加密算法所需的加密填充, 并确定算法的 MTU 影响, 与 ESP 一起使用的每个加密算法的 RFC 必须指定算法的填充模数。
3.2.2. Integrity Algorithms (完整性算法)
用于 ICV 计算的完整性算法由传输/接收数据包的 SA 指定。与加密算法的情况一样, 与 ESP 一起使用的任何完整性算法都必须提供规定以允许处理乱序到达的数据包并适应数据包丢失。上面提到的相同警告也适用于使用任何明文数据来促进完整性算法的接收方同步。请注意, 由于完整性服务可以是可选的, 因此该算法可能是 "NULL"。
为了允许 ESP 实现计算所需的任何隐式完整性算法填充, 与 ESP 一起使用的每个算法的 RFC 必须指定算法的填充模数。
3.2.3. Combined Mode Algorithms (组合模式算法)
如果使用组合模式算法, 则提供机密性和完整性服务。与加密算法的情况一样, 组合模式算法必须为每个数据包的密码同步提供规定, 以允许解密乱序到达的数据包并适应数据包丢失。组合模式算法为有效载荷以及 SPI 和 (扩展) 序列号字段提供完整性的方式可能因不同的算法选择而异。为了提供一种统一的, 独立于算法的方法来调用组合模式算法, 没有定义有效载荷子结构。例如, SPI 和序列号字段可能在密文封装内复制, 并且 ICV 可能会附加到 ESP 尾部。这些细节都不应该在外部可观察。
为了允许 ESP 实现确定组合模式算法的 MTU 影响, 与 ESP 一起使用的每个算法的 RFC 必须指定一个 (简单的) 公式, 该公式根据明文有效载荷和序列号大小计算加密有效载荷大小。