“接收端依次检查长度与格式、固定的协议/版本/会话/方向/类型、重放窗资格,然后使用自己的期望上下文验AEAD;成功后提交窗口再交付明文。解析失败、认证失败或重放拒绝,都不能向上层交付候选明文…”
形式陈述
AEAD完整性排除新鲜伪造,却不排除旧合法记录重送。本页对一个已固定的密钥、会话及方向维护状态
候选序号
认证成功后原子提交。若
直觉
位图记录最近一段“哪些位置来过”,而不是只存一个最大值。这样先收到2,再收到1时,仍能认出1是正常乱序,而不是一概丢弃所有小于2的记录。
窗口不保证补齐丢包,也不等待无限久的老包。向前推进后超出左边界的合法记录会被丢弃,这是有限状态预算换来的明确可用性限制。
例子与边界
取 0,2,1,2,5,0,4:
| 到达s | 结果 | h | 位图 |
|---|---|---|---|
| 0 | 接受 | 0 | 0001 |
| 2 | 接受 | 2 | 0101 |
| 1 | 接受 | 2 | 0111 |
| 2 | 重复拒绝 | 2 | 0111 |
| 5 | 接受 | 5 | 1001 |
| 0 | 窗外拒绝 | 5 | 1001 |
| 4 | 接受 | 5 | 1011 |
例如接受5时左移3位,旧h=2对应现在距离3,所以只留下高位1,再设置代表5的低位。最终窗口覆盖2至5,序号3仍可接受一次。
攻击者接着发送伪造的序号99。它可以通过廉价资格预检,但AEAD认证失败,状态仍是
推论与应用
归纳不变量是:窗口覆盖范围内每个置1位恰对应已经提交的序号;每次交付只为资格通过且认证成功的序号发生。若h不回退,过去接受的号要么仍有置1位、要么已落到窗外,所以都不能再次交付。
跨重启继续使用同一会话密钥时,接收状态也要受恢复保护。若在交付前持久化窗口,崩溃可能导致某条已登记但尚未交付的记录被丢弃;若先交付再保存,崩溃可能造成再次交付。此处只承诺重复记录拒绝,不承诺业务恰好执行一次;业务状态与结果记录的原子提交需由更上层协议处理。回滚接收快照会重新接受旧合法元组,而这仍不是AEAD新鲜伪造。
窗口存储W位及一个序号。若机器字宽w且W可变,位图整体移位和掩码需
本窗口适合显式序号的有限乱序模型。TLS1.3的普通记录使用有序传输上的隐式序号,不直接采用本页窗口;ESP规范给出了独立的反重放窗口实例和扩展序号处理。