AICENT.COM
← 返回中文博客

为什么是 16 字节:ROUTE_SHARD 的攻防账

2026-10-17 · RTTP · IQA
规范解读 · 第 1 篇 · 引证源:draft-li-rttp-iqa-addressing-00 §4.4 · 姊妹柱:rttp://(CRI 27)· iqa://(CRI 28)

解读一个寻址方案,总是从第一个数字开始:Resonant Time Transfer Protocol(RTTP)的地址 ROUTE_SHARD 取 SHA-256 的前 16 字节——为什么不全长?为什么不更短?规范 §4.4 的原文是:「ROUTE_SHARD = SHA-256(ASCII(canonical_authority))[0:16]」,并随之给出四个性质:确定性(同一权威恒得同一地址)、纯计算(无 DNS、无登记处、无网络)、单向(从地址不可反推权威)、与动作无关(同一主体的不同动作共享同一地址)。

这份账的记法如下。攻方想冒充一个在用权威,必须找到第二个权威字符串,使它与正主派生出同一个 16 字节地址——这是第二原像攻击,代价 2 的 128 次方。不是 2 的 256 次方,因为截断把搜索空间减半了:这就是截断的真实价格,我们全额承认,并把它标在明面上。

生日侧的账是 2 的 64 次方:攻击者在 2 的 128 次方地址空间里找任意一对碰撞,复杂度是空间开方的量级。但 2 的 64 次方不是故事的结尾——碰撞要造成伤害,还须过第二道门:一个碰撞出来的新权威,必须被至少一个依赖方收养、引用、写进配置,才谈得上劫持。地址无房东,收养即主权;没人收养的碰撞只是一个数字巧合。两道门叠在一起,生日攻击的现实成本远高于其理论下界。

为什么不留全长 32 字节?因为地址的角色在规范里写得明白——它不是身份证明。§6.1:「派生地址是入口指纹,不是身份证明」。身份由主体的 AID 承载,证明由第二根柱子的信封承载。地址只需要在「入口」这一层把两个不同的权威可靠地分开——128 位的区分度,配合两道门,是这个角色的充分预算。多出来的 128 位不会让地址更「真」,只会让每一次人工转写、张贴、核对更笨重。

为什么不用更短?规范在 iqa 一侧给出了反面教材的边界:8 个十六进制位的展示型主体是 32 位空间,生日界骤降至 2 的 16 次方——所以 §5.2 判它「十六进制主体形式是路由提示,不是证据」,且任何客户端不得把它当唯一标识。长度红线不是拍脑袋,是同一本账算出来的另一页。

一句话:16 字节是一道两道门的门禁——冒充要 2 的 128 次方,无收养的碰撞无用武之地;我们把预算花在攻击者必须付出而验证者无需信任任何人的那一点上。