Skip to main content

7. 处理分片 (Handling Fragments)

IPsec 通过将数据包的内容与 SPD 中定义的选择器相关联来执行其访问控制功能。当数据包被分片时,这种关系可能会被破坏,可能允许未经授权的流量通过 IPsec 边界。

分片处理挑战

分片给 IPsec 处理带来挑战,因为:

  • 传输模式:在 IPsec 处理期间修改 IP 头,使得难以匹配分片
  • 隧道模式:分片可能在 IPsec 封装之前或之后发生
  • 选择器匹配:端口信息(和其他下一层协议数据)仅在第一个分片中可用

有状态分片检查 (Stateful Fragment Checking)

为了解决这些挑战,IPsec 实现应该 (SHOULD) 支持有状态分片检查。此功能:

  • 跟踪数据包的第一个分片以提取选择器信息
  • 根据缓存状态验证后续分片
  • 确保数据包的所有分片与 SPD 策略一致处理

分片重组考虑

IPsec 处理之前

  • IPsec 处理之前重组简化了选择器匹配
  • 需要分片重组的缓冲容量
  • 可能容易受到基于分片的攻击

IPsec 处理之后

  • 分片通过 IPsec 单独处理
  • 重组在受保护侧进行
  • 需要有状态检查以维护安全性

实现要求

  • IPsec 实现必须 (MUST) 支持处理单独的分片
  • 应该 (SHOULD) 支持有状态分片检查,并且应该 (SHOULD) 可以在每个 SA 基础上进行配置
  • 如果不执行有状态检查,则必须 (MUST) 丢弃缺少选择器信息的分片