摘要

  • RFC 2356 提议让 SKIP 防火墙用稳定的 NSID/MKID 选择移动节点的密钥身份,而不是把不断变化的转交地址当作身份。
  • “首个认证数据包即可中继”并不等于无需预置信任;公钥材料、游牧访问控制、当前地址绑定和 Mobile IP 穿越路径仍须分别成立。

防火墙面对的矛盾很具体:如果它只信任固定源地址,合法移动就会显得像冒充;如果它接受任何新地址,边界本身就失去了意义。

RFC 2002 的 Mobile IP 已经把一个节点拆成两个地址角色。归属地址长期稳定,表示节点在原网络中的身份与可达名称;转交地址随接入点变化,表示它此刻在哪里收包。归属代理截获发往归属地址的流量,再把它封装到当前转交地址。路由因此可以继续,基于源地址的安全策略却遇到了难题:同一台机器每次移动都可能出现一个新地址。

G. Montenegro 与 V. Gupta 在 1998 年 6 月发布的 RFC 2356,是一份 Informational 文档,不是互联网标准。它处理的也不是所有移动办公情形,而是一个窄而清楚的场景:节点属于受防火墙保护的私网,离开后直接通过公共互联网获得同机转交地址,再与归属代理或内网通信。如果节点身处另一个私网之内,文档没有宣称同样方案即可解决。

提案先比较了两种边界穿越方式。SOCKS 5 在应用层建立中继,伴随额外控制往返。SKIP 则被描述为无会话的密钥管理方式,认证材料可以随每个数据包携带,防火墙因此可以在第一个通过认证的数据包上启动中继,无需先完成一次单独的会话握手。

但“无需先往返”不是“无需先信任”。移动节点、防火墙与归属代理仍须获得彼此经过认证的 Diffie-Hellman 公共分量,可能来自预配置,也可能来自证书目录或发现机制。首包可用,说的是数据路径上的时序;它没有取消密钥分发、名称绑定和本地政策。

RFC 2356 最关键的动作,是把密钥查找从源地址上移开。SKIP 头部可以带一个命名空间标识 NSID,以及在该命名空间中选择身份的 MKID。使用 NSID 1 时,MKID 可以采用节点稳定的归属地址,而外层源地址仍是不断变化的转交地址。文档还写到 NSID 8,可由未签名的 Diffie-Hellman 公共分量导出标识;若没有认证机构,参与方的名称仍然必须通过安全方式传递。

这使防火墙能够设置一条 nomadic 访问控制规则。规则的含义不是“任何地址都可信”,而是“不论观察到什么源地址,都先按指定密钥身份评估该包”。数据包仍须通过 AH 认证,或由兼具认证能力的 ESP 变换提供相应保证;访问控制仍须判断目标与服务是否允许。密钥身份只把请求送到正确的政策入口,并没有替政策做决定。

移动节点主动发起联系后,防火墙可以把三个事实关联起来:密钥身份、稳定归属地址、当前观察到的转交地址。这一动态绑定让它知道回程保护应该发往哪里。然而简单绑定只有“最新一次”语义:新的 Registration Request 会替换旧的转交地址关联。如果需要同时保留多个 Mobile IP 绑定,防火墙就必须更深入理解注册协议,原有捷径不够用了。

状态又产生了路径约束。某台防火墙从请求中学习了绑定,Registration Reply 通常也必须经由同一台设备返回,否则另一台防火墙没有相应状态。边界若由多台防火墙构成,非对称路由就不再只是路由问题。理解 Mobile IP 的防火墙可从回复中恢复更多身份信息,从而弱化状态依赖,但这也把更多协议解释权交给了中间设备。

还有一个更早的判断:节点究竟在内还是在外。地址范围可以帮助分类,RFC 2356 却坦率承认,真实网络的地址规划会使结论含糊。文档甚至认为人的直接输入可能有用,因为持有设备的人或许知道自己正在外部网络,而地址规则无法可靠判断。这不是让人取代协议,而是承认“内外”是一项政策判断,不能从一个地址自动推导出物理位置。

归属代理看不到节点的直接接入环境,因此需要另一种提示。RFC 2356 为 Registration Request 与 Reply 定义 Traversal Extension,携带移动节点到归属代理、以及反向路径上需要穿越的地址,也能表达多个防火墙。一些反向收到的字段只能作为提示。扩展指出应当瞄准哪些穿越点,却不证明认证已成功、封装已执行或中继已到达。

文档随后比较四种信道布置。可以只加密公共侧;可以端到端加密,让防火墙只做中继、由归属代理认证;可以在端到端加密上增加中间认证,但须把长期成对 Diffie-Hellman 共享秘密交给中间节点;也可以把内外两段分别加密,让防火墙成为两段安全关联的参与者并能够检查内容。若还要对防火墙保密,则需另建移动节点与归属代理之间的双向隧道。

所以,“加密”不能单独回答谁有查看权与控制权。RFC 2003 的 IP-in-IP 封装解决的是跨地址空间运输,AH 回答认证,ESP 回答保密并可能兼顾认证。一个包可以被正确封装但未获授权,可以通过认证但没有正确路由,也可以穿越防火墙却没有被内网应用处理。

回程路径把这些机制重新串联。归属代理截获发往稳定归属地址的流量,将其封装到当前转交地址,并经防火墙发送。防火墙依据动态绑定为公共侧提供保护。注册成功、绑定存在、包被中继,都还不是“通信完成”的同义词。对应主机是否收到、应用是否接受、用户是否得到结果,仍需后续证据。

安全章节给出了提案最重的一笔:移动节点成为私网延伸出去的一部分边界。它可能为了 DHCP、计费或其他公共通信保留未加密流量,因此自己也必须具备过滤能力。若节点被攻陷,稳定密钥身份反而可能把攻击者带入原本受保护的网络。解决移动地址导致的误拒绝,并没有消除端点失陷导致的误信。

RFC 2356 的历史价值,正在于这份分层账本:观察到的外层地址;声称的归属地址;NSID/MKID;公共分量来源;AH/ESP 结果;游牧 ACL 决定;绑定创建、替换与过期;内外分类;Traversal Extension 方向;注册结果;中继动作;对应端交付;应用结果。前一行成立,永远不能自动填满后一行。