洋葱路由藏住了付款路线,却没藏住收款人
闪电网络的洋葱分组加密让每个中间节点只认识上一跳和下一跳,这是常被引用的隐私卖点。但收款方一直是这套叙事的盲区:一张BOLT11发票在结构上就编码着收款节点33字节的公钥;收款方若只有未公告的私密通道,发票还必须携带路由提示,把通道的短编号与对端节点身份一并交给付款人。一个商家把收款码挂上网页,任何爬虫都能收集发票、拼出它的全部通道拓扑,再对着链上平衡变化推算经营流水。路由模糊(route blinding)技术就是为了堵住这个口子:让付款方只知道钱要交给某个”引入节点”,此后的路线全部隐去。
用ECDH给真实路线拍一套”假名”
构造过程由收款方在出发前独立完成。它选定从某个公共引入节点到自家的若干跳,生成一对临时密钥,其公钥E0作为起点信物;对每一跳的真实节点公钥做一次ECDH求共享秘密,用这个秘密推出该跳的假名节点标识与一份用ChaCha20-Poly1305加密的路由数据(下一跳通道、费用、时间锁增量)。加密数据按链排布,下一跳的信物由上一跳的信物与共享秘密递推得出。最终对外发布的只有三样东西:引入节点的真实公钥、首枚信物E0、一列加密块与假名。中间节点收到付款时,用自己的私钥与信物重算出同一个共享秘密——这正是ECDH的对称之美——解密出自己那一格的数据,再把下一个假名信物交棒传下去。规范还允许塞进填充跳,让外人连”迷雾里到底有几层”都无法数清。
付款方看到的与看不到的
付款方的路径算法先正常规划到引入节点的路线,再把假名段原样接在后面。它看不到假名之后任何节点的真实身份、通道编号,也数不出迷雾的深度。BOLT12的可复用收款码把这套机制用成了标配:客户通过洋葱消息递发票请求时,连”商家到底是谁”都不需要知道。与网络层的Tor不同,路由模糊保护的是协议层的身份,两者叠加才覆盖两个泄露面。
三个诚实的边界
规范文档自己列出了软肋。其一,引入节点的真实身份永远可见——如果挑了个边缘冷清的节点做入口,迷雾后面的嫌疑人集合小得可怜,引入点必须选在高连通、常年在线的节点上。其二,构造付款参数做探测攻击理论上仍可能缩小范围,规范用统一费率参数与最大时间锁上限来压缩探测窗口。其三,多条通向同一收款方的假名路线要求彼此不可关联,任何上层协议(比如反复用同一个支付哈希)都可能把这层保护抹平。隐私从来不是单一开关,看懂每层各挡住谁,比相信任何”绝对匿名”的宣传可靠得多。
部署视角下谁需要它
不是每个节点都需要立刻启用。对个人收款、偶尔收款的场景,一张普通发票暴露的节点身份关联面很小,收益有限;对把收款码公开在网页上、有稳定现金流的商家,发票收集的爬虫与流水推算压力才真实存在,启用带盲路径的收款方案才对应真实威胁。运行路由节点的用户也值得留意:若你的节点常被选作引入点,等于在支付流量里扮演公开地标,需要评估由此带来的画像汇聚。还有一项容易被忽略的实现依赖:盲路径要求通信双方都启用对应特性位协商,老版本混跑时钱包会自动退回普通发票,隐私升级在协商表上静默失败也不奇怪——把节点与钱包保持在主流维护版本,是这类协议层隐私真正生效的前提。最后把坐标摆正:路由模糊处理的是”谁在收钱”这一层,金额关联、付款时间、以及链上找零聚类等其他泄露面各有各的对策,把它当作隐私拼图的其中一块,而不是整幅图。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。