作者:Dan Gould

来源:https://payjoindevkit.org/2025/03/31/payjoin-probing-attacks/

以下内容是针对围绕 Payjoin 的 UTXO 探测攻击的最终解答,阐明了当前缓解措施的有效性,并为采用 Payjoin 提供了决定性的论据。Payjoin 作为基础的交互式交易批处理协议,通过减小转账的实际大小来节省手续费,并通过干扰常用于监控区块链的线索分析来增强隐私性。虽然探测攻击在理论上存在,但实施成本高昂,在实践中已得到缓解,并且不会对 Payjoin 的采用构成实质性障碍。

探测攻击解析

在探测攻击中,攻击者先发起 payjoin,然后故意终止,以了解接收方钱包中的 UTXO。由于 Payjoin 接收方会向潜在的发送方回复包含其 UTXO 的 payjoin 提议,因此发送方会了解到这些 UTXO 的信息。如果获得 Payjoin 提议没有成本,这种攻击将为攻击者提供他们原本无法获得的关于接收方的新信息。

最早的 Payjoin 规范说明了处理这种攻击的措施,详见 BIP 79BIP 78 中的相关章节。

当前的缓解措施

最低价值策略

最小价值策略设定了一个底价,只有当交易价值高于此底价时,接收方才会向发送方回复包含其 UTXO 的 payjoin 提议。

最低费率

接收方可以选择仅响应其 “回退交易(fallback transaction)” 的手续费率超过某个门槛的发送方。如果发送方中止交易,接收方可以广播该回退交易,让发送方损失为交易支付的手续费。

(译者注:“回退交易” 是 payjoin 协议中的一个概念,指的是 payjoin 发起方第一次向接收者提供的、带有发起方输入的完整有效交易。)

最低转账金额

接收方可以选择仅响应给自己的支付超过一定数值的回退交易的发送方。如果发送方中止交易,接收方可以广播该回退交易,这将使发送方损失其转账金额外加手续费。

回退交易广播

作为 Payjoin 接收方的支付处理商应该最关注探测攻击,因为它们会自动响应创建 Payjoin 的请求。手动接收方需要为每次潜在的探测尝试生成请求,这使得重复的攻击请求不成问题,因为接收方必然会意识到许多次请求都是发起了然后又终止。

根据规范,作为 Payjoin 接收方的自动化支付处理商,如果在到期超时后未看到其 payjoin 交易被广播,则必须广播发送方的有效回退交易。这默认强制执行了最低中继费率策略。

该机制也可以由手动的点对点接收方来实施,作为额外的预防措施。在经过适当的时间后(例如,在异步的 payjoin 会话过期后),可以手动或自动触发回退交易的广播。

输入重放

自动化支付处理商在响应发送方的请求时,应基于回退交易的输入来反馈己方的输入;对相同的发送者输入,总是反馈以相同的己方输入。这样可以确保实施上述缓解措施所设定的最低代价。

会话策略绑定

在异步 Payjoin 会话中,接收会话会跟用于请求它们的比特币 URI 相绑定。接收方可以根据对发送方的信任程度,将特定策略绑定到该发送方的特定 URI 上。

反驳核心担忧

  • 观点:探测攻击没有成本

  • 事实:在回退交易被广播的时候,攻击者就必须支付手续费,还要冒给接收者支付最低价值的风险。

  • 声称:当前的缓解措施无效

  • 事实:正确的实施方案严格限制了信息泄露,并显著提高了攻击者的成本。目前尚无滥用探测攻击的报告。

  • 声称:攻击者总是可以花费足够的资源进行探测

  • 事实:理论上,主动攻击者无论如何都可以针对隐私进行攻击(例如粉尘攻击、女巫攻击 ),但 Payjoin 迫使攻击从被动(成本低廉、可扩展)转变为主动(成本高昂、可被侦测)。

  • 声称:为了安全应完全避免使用 Payjoin

  • 事实:如果不使用 Payjoin,常规的资金整合过程中被动泄漏的信息,比遭遇探测攻击时主动泄露的信息还要多。Payjoin 显著减少了整体泄漏的信息量,即使对于那些尚未使用该协议的人也是如此。想象一个没有 Payjoin 的世界:一旦你的 UTXO 被整合,给你发送过比特币的人很可能会知晓你的其它UTXO。因为在没有使用 Payjoin 时,“输入来源同一性” 假设将成立。

  • 声称:Payjoin 不允许你选择 UTXO,而这本可以防止泄露

  • 事实:Payjoin 是一种点对点的批处理机制。Payjoin 参与方可以根据本地标签或任何其它偏好选择使用任何 UTXO。然而,即便是完整的标签信息本身,通常也不足以让用户保护其活动的隐私。UTXO 的选择是一个与此无关的问题。

Payjoin 如何防止泄露

  • 打破输入来源同一性线索:打破了中本聪关于所有输入均来自同一个发送方的假设。
  • 干扰找零识别:使确定哪个输出是支付、哪个是找零变得更加困难。
  • 消除单独的资金整合:接收方们会将收到的付款批量合并处理,这样一来,打破线索分析的成本将比无所作为(从而泄露信息)还要低。
  • 改善全局隐私:Payjoin 交易可以做到与非 Payjoin 交易别无二致,倍增了监控的难度。

边缘案例与现实情境

理论上存在攻击,尤其是在未遵循实现指南的情况下。这类情况属于实现的问题,而非 Payjoin 协议本身的缺陷。“Payjoin 开发工具包(Payjoin Dev Kit)” 的指导能尽可能避免实施者的滥用。

虽然像粉尘攻击这样的微妙攻击确实会发生在比特币上,但大规模探测 Payjoin 的成本高昂,且在现实中也受到限制。

如何保护您的 Payjoin 实现

  • 使用 Payjoin 开发工具包以默认遵循最佳实践。
  • 对于定制化的实现,请遵循本文中的 BIP 指南和缓解措施清单。
  • 向 Payjoin 开发工具包团队寻求帮助,以确保您的实现采取了适当的防护措施,例如请求持久性和回退交易广播。

Payjoin 为何脱颖而出

Payjoin 带来的经济性和隐私性上的优势远远超过了理论上探测攻击的风险。它的采用有益于整个比特币网络,因为更高的 Payjoin 使用率甚至可以改善非 Payjoin 交易的隐私性。Payjoin 开发工具包整合了最佳实践,以解决已知的探测攻击问题,显著改善了 Payjoin 接收方的处境。

(完)