摘要
- RFC 6528 保留 TCP 序列空间持续前进的纪律,同时把本地与远端地址、端口和密钥送入函数,隐藏不同连接之间的数值关系。
- 这种设计降低路径外盲猜概率,却不是身份认证;密钥轮换、TIME-WAIT、NAT 信息泄露和临时端口选择仍属于同一控制面。
初始序列号承担两项方向相反的任务。它必须前进,避免同一连接的新实例接受旧实例遗留的报文;它也必须隐藏下一条连接从哪里开始。一个人人看得懂的全局时钟满足了前一项直觉,却暴露了后一项。
RFC 793 建议使用 32 位全局生成器,大约每四微秒加一。RFC 6528 指出,TIME-WAIT 和 TCP 的 quiet time 已经承担了大部分旧报文隔离责任。不过,一些源自 BSD 的协议栈还会利用 ISN 单调上升的启发式规则,允许同一连接快速重生。于是,时钟既成了兼容习惯,也成了预测接口。
路径外攻击者未必需要看到服务器回复。如果能从此前一条真实连接估算服务器下一个 ISN,它就可以伪造三次握手最后的 ACK,并利用只信任源地址的服务。历史上的远程登录工具大多已被 SSH 取代,但基于 IP 地址的信任并未完全消失。传输层的可预测性会放大应用层错误的信任边界。
为每条连接纯随机选择 ISN 可以抑制预测,却可能破坏依赖单调前进的重生启发式规则。保存所有已关闭连接状态能够恢复安全,但要付出内存成本。RFC 6528 选择第三条路:同一连接身份内部保持前进,不同身份之间不暴露明显关系。
给每次会话一个私有偏移
规范建议使用 ISN = M + F(localip, localport, remoteip, remoteport, secretkey)。M 是四微秒计时器;F 是以连接四元组和密钥为输入的伪随机函数。计时器保留推进分量,带密钥的偏移则让本地地址、本地端口、远端地址和远端端口的每种组合拥有独立的表观序列空间。
关键并不是函数看起来复杂,而是外部不能计算 F。否则,一条连接中观察到的 ISN 就会成为预测另一条连接的材料。四元组本身不是秘密,保护力来自密钥,以及没有密钥就无法重建输出的函数。
这种分离不要求系统保存每条死亡连接的历史。再次使用相同四元组时,M 仍会推动空间向前;换成另一四元组时,偏移随之改变。它不是简单给 TCP 粘上随机数,而是在序列连续性与跨连接不透明性之间建立结构化折中。
密钥也有生命周期
RFC 6528 认为 128 位密钥对其威胁模型应当足够,并允许真正随机数或每主机秘密。它列出的轮换时机包括启动、经过预设或随机时间,以及使用次数已足够多。这些都是运营决策,不是无成本清理。
更换密钥会改变重生连接的 ISN 空间。如果系统不保存死亡连接状态,就可能必须等待两倍最大报文寿命的静默期。忽略 TIME-WAIT 的安全控制,可能破坏它原本想保留的生命周期属性。
RFC 在有限的路径外盲猜模型中认为 MD5 可以接受,同时要求实现者权衡更强函数。这个结论只属于该设计及 2012 年的威胁边界;它不是对 MD5 认证能力的认可,也不能证明当前操作系统使用何种算法。
好的 ISN 仍只是一项缓解措施。能观察连接起始报文的人可以知道序列状态,路径上的攻击者本来就拥有更大能力。RFC 将 IPsec 和 TCP-AO 列为密码学认证边界。它还记录了两个相邻效应:不同 ISN 空间可能帮助计算 NAT 后的主机数量;临时端口随机化则会让攻击者更难猜中目标四元组。
唯一来源是 2012 年 2 月以 Standards Track 发布的 RFC 6528。它废止 RFC 1948,并更新 RFC 793。它规定如何降低盲目序列预测,并未说明当前实现默认值、密钥轮换实践或攻击频率。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
