摘要

  • 如果两端都把除 TCP-AO 之外的 TCP 选项排除在 MAC 计算之外,只改写选项的中间设备可以与 TCP-AO 共存。
  • NAT 或 NAPT 会改写 IP 地址或 TCP 端口,而这些字段定义了 TCP-AO 认证的连接;选项覆盖开关无法解决这一问题。

同样是改包,后果不同

Master Key Tuple 中的标志位决定其他 TCP 选项是否进入 MAC。启用时,所有非 TCP-AO 选项按发送顺序受到保护;禁用时,所有这些选项都会被跳过,而 TCP-AO 本身仍受保护。因此,设备改写时间戳等选项时可以采用这种配置,但代价是这些选项不再得到保护,窗口缩放因子等字段也可能被篡改,进而影响正常运行。

地址和端口不能用同样的方法处理。RFC 5925 将源、目的地址及端口列为安全参数,并明确指出它们的覆盖不可选,因为它们定义了连接。翻译器改变地址或端口后,两端实际计算的是不同的连接元组。由此,TCP-AO 无法原生兼容未经协调的 NAT/NAPT。

RFC 5925 提到协调翻译后的值、进行封装,或使用带 NAT 穿越的 IPsec。它没有规定统一的 TCP-AO NAT 穿越协议,也没有指定唯一的隧道方案。

连接身份的边界

真正需要核查的是每个端点把哪些字节放入 MAC,以及路径中的哪个设备可以改变这些字节。数据流能够到达,并不能证明翻译后的 TCP 首部仍被端到端的 TCP-AO 认证。

来源