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) 丢弃缺少选择器信息的分片