摘要

  • RFC 3041处理的是IPv6中一个边界明确的隐私问题:由链路层标识符派生的接口标识符,可能在设备换到新网络前缀后仍出现在地址中。
  • 临时地址能让基于地址的直接关联变得更困难,却不会隐藏网络前缀、抹去应用层标识,也不会让主机匿名。

IPv6无状态地址自动配置(SLAAC)让主机使用本地信息和路由器通告的前缀组成地址。在RFC 3041讨论的地址架构中,前缀指示网络位置,接口标识符填入地址的其余部分。早期的接口标识符可以由IEEE或链路层标识符派生。如果这个值保持不变,前缀虽然改变了地址,却留下了可识别的组成部分。

这之所以重要,是因为地址会出现在IP报文头部。即使负载已经加密,可见的源地址仍可能帮助观察者把多次通信联系起来。一台笔记本可能在不同网络上得到不同前缀,但地址里的标识符仍暗示它们来自同一接口。RFC 3041指出的是关联风险,并不能证明观察者认出了某个人,也不能说明所有设备都用同一种方式生成地址。

这项提议没有用另一套寻址体系取代SLAAC,而是在普通地址之外增加全局范围的临时地址。发起连接时,主机可以优先选择临时源地址。稳定地址仍可用于接收入站连接、登记DNS名称,或让应用和管理员拥有可预测的访问目标。双地址模型把源地址选择变成关键操作点:面向隐私的出站通信和稳定的入站可达性承担的是不同任务。

RFC 3041描述了如何从不断变化的历史状态中生成随机化接口标识符,再用它们为通告的前缀构造临时地址。规范建议的默认首选寿命为一天、有效寿命为一周,但实际取值受用户或实现策略以及前缀寿命约束。旧地址失效前可以生成替代地址。已弃用的地址仍可能对现有连接有效,而新连接应使用首选地址。因此,轮换意味着管理一组时间重叠的地址状态,并非每个数据包都换一个源地址。

设计瞄准的是一种具体的关联线索:在多次独立通信中重复出现同一个地址组成部分。它没有消除网络前缀;前缀仍可能透露拓扑位置,或把某个地点的活动归为一组。它也不改变DNS名称、Cookie、账号、应用行为、通信时序或其他标识。服务器仍可识别已登录的账号,链路上的观察者仍可比较流量模式。通信还可能暴露一个临时地址,而该地址在有效期内仍可访问。减少地址复用不等于保证匿名。

临时地址与稳定地址并存,也带来成本。轮换会让报文追踪、访问控制列表、反向DNS预期、故障排查以及某些长连接的归因更复杂。应用可能需要稳定的目的地址,管理员可能需要可预期的日志。因此,RFC 3041允许应用、实现和受信任管理员影响临时地址是否启用。网络并不会替每个应用作出这个决定。

这条标准沿革也说明,2001年的具体设计并非现行实现规范。RFC 4941于2007年取代RFC 3041,RFC 8981又于2021年取代RFC 4941。后续规范保留了临时地址机制,但修订了算法和建议。RFC 7217与RFC 8064涉及相关但不同的选择:稳定的接口标识符不再直接暴露硬件标识。临时地址会随时间变化;稳定但不透明的标识符可以在不同网络间变化,同时在同一网络内保持稳定。

RFC 3041留下的问题并不是“IPv6地址能否变得私密”,而是更具体的问题:当网络前缀改变时,地址里还有什么会让不同活动彼此关联?应用呈现什么源地址,又由谁决定?临时地址缩短了一种观察窗口,但它没有决定身份、可达性,也没有消除设备活动之间的其他关联方式。

来源