摘要

  • RFC 3514 是一篇发布于 4 月 1 日、属于 Independent Stream 的 Informational 技术讽刺;它不是互联网标准,也不是某种安全机制已经部署的证据。
  • “邪恶位”让发送者自己填写防火墙要采用的结论:假零会放过攻击,假一则能把防御规则变成拒绝服务工具。

RFC 3514 最容易被缩成一句笑话:恶意程序必须诚实地把自己的数据包标记为“邪恶”。但真正耐读的部分,不是这个包袱本身,而是文档怎样沿着一套完整的安全制度把包袱推演到底。它规定谁来写位、分片时怎样改、代理和 NAT 何时接管、IDS 怎样处理误判、防火墙又必须如何执行。越像规范,那个根本矛盾就越清楚。

先要固定它的出版身份。Steven M. Bellovin 的《The Security Flag in the IPv4 Header》日期是 2003 年 4 月 1 日。文档状态是 Informational,首页明说它不规定任何形式的互联网标准。IETF Datatracker 将其列为 Independent Stream。RFC Editor 的主题目录把 humor 解释为愚人节系列以及其他幽默、奇想文档;回顾 RFC 系列三十年的 RFC 2555 也明确记载了诗歌与幽默传统。

这些信息不是可有可无的注脚。RFC 3514 故意使用 RFC 2119 的 MUST、SHOULD 和 MUST NOT。如果忽略日期、流和状态,规范语气会被误读为严肃的工程部署计划。实际上,强制词正是讽刺装置:它用协议文本最庄严的口吻,要求一个因撒谎而获益的对手诚实合作。

文档选中了 IPv4 Fragment Offset 字段的最高位。零表示数据包没有邪恶意图,主机和网络设备应当把它当成无害流量,不采取防御措施;一表示数据包具有邪恶意图,安全系统应当进行防御。位值是客观可见的:抓包里不是零就是一。可见性却不等于语义真实性。

关键规定随即出现:攻击程序 MUST 设置这个位。被评估者亲手选择评估结果,防御者再把这个结果当作准入依据。观察者可以证明某个观测点上存在一个零,却不能由此证明发送者诚实、路径中的中间设备没有改写、负载没有变化,或者最终没有造成伤害。

文档继续把这种自证逻辑放进各种难题。手工构造数据包的攻击应用必须自行标记;用来“洗白”攻击连接的中继应保留意图;端口扫描要区分恶意侦察和善意研究;受防火墙保护的内部网络则被假定没有攻击者,因此内部主机不得设置邪恶位。每条规则都不是在解决归因,而是在用二进制自白替代归因。

分片条款尤其揭示观察点的作用。单独就危险的分片必须带位。如果中间路由器把一个已标记数据包切成若干单独看并不危险的分片,它应清掉位,重组时再恢复。同一高层行为在路径不同位置可能呈现不同标签。没有捕获位置、变换者身份和分析单位,位值就没有足够的来源链。

NAT 与透明代理又引入新的写入者。传统 NAT 会修改数据包,所以 RFC 3514 给它安排了判断并改写邪恶位的角色。代理如果检查出恶意内容,也应设置位。原本声称代表“发送者意图”的字段,现在可能代表中间盒的分类、策略和可见范围。单个位没有空间说明究竟是谁作出了判断。

防火墙规则把循环闭合:位为一必须丢弃,位为零不得丢弃。如果防火墙忠实执行,理性的攻击者只需选择零;如果第三方能把正常流量改成一,同一规则便可制造拒绝服务。若防火墙另查身份、行为和上下文,那么真正支撑决定的是那些独立证据,邪恶位已经退化成普通特征。

入侵检测系统获得了一个耐人寻味的例外:可以用概率方法纠正假阳性和假阴性。这个例外重新引回了邪恶位本想消除的一切——模型、阈值、置信度、观测窗口和不对称错误成本。只要 IDS 能判断自我声明是错的,声明就不再是判决。

不承担安全职能的路由器则应忽略该位。这保留了运输、观察、归因、授权和执行之间的分工。转发一个包不等于理解其目的;看到一个字段不等于知道谁写了它;丢弃一个包也不等于证明它原本会造成损害。即使多种功能装在同一设备里,它们所能出具的证据仍然不同。

安全考虑章节把失败条件直接写了出来。机制正确工作,关键取决于邪恶位被正确设置。恶意包被错误标成零,防火墙就无法完成文档分配给它的任务;正常包被错误标成一,则可能造成拒绝服务。它没有独立真值源,只是把未经验证的主张直接接到了执行器上。

勘误记录也要按文体来读。RFC 3514 的勘误是编辑性记录,其中一条验证说明甚至开玩笑说,报告人本应在 4 月 1 日提交。勘误不会把这篇文档转化为标准,也不能证明实现或流量部署。

2026 年 9 月出现的 draft-traviss-evil-byte-00 延续了这套语言。它宣称发送者自我标记失败,于是把一位扩展成由“道德检查可信中间人”计算的一字节评分。Datatracker 清楚标明它是会过期、可替换的 Internet-Draft,是进行中的工作。所谓多年运行经验属于讽刺叙述,不能当成测量数据。它能证明的是这则笑话仍被用来批评集中评分、强制检查和自报可信,而不是某项新机制已经成立。

RFC 3514 留下的有效方法,是把证据阶梯重新展开。第一步只是报头某位在某处取值;随后才是完整性和来源,谁构造或修改了数据包;再后是独立行为观测;然后是适用策略、执行动作和最终结果。下面一层不能代替上面一层。

借用 Heng Lu 的现实分层,邪恶位属于符号现实:它是一个紧凑、可互操作的声明。攻击意图、权限决定和实际损害属于运行与物理现实。最小规范可以协调诚实参与者,却不能因为纸面上写了 MUST,就迫使对手提供对自己不利的真相。

这也不意味着所有标签都无用。由可问责主体签名、与原始证据相连、限定用途与时效的标签,可以降低协作成本;保留模型版本和置信度的分类结果,可以帮助分流。危险出现在系统忘记这些条件,把标签包装成自证事实。数据包当然可以自称无害。防火墙没有因此得到证明。

Sources