跳到正文

粉尘攻击

粉尘攻击会向选定地址发送未经请求的低价值输出或资产。转账本身不会泄露私钥,但后续花费或交互可能暴露隐私或带来网络钓鱼风险。

更新于

仅供教育用途,不构成投资建议。未经请求的资产可能带来隐私、网络钓鱼和交易风险,且链上操作可能无法撤销。

直接答案

粉尘攻击会向选定地址发送未经请求的低价值输出或资产。在 UTXO 链上,攻击者可能观察钱包之后是否将这些输出与其他币一同花费,并利用该证据对地址进行聚类。在账户型链上,陌生代币或 NFT 更常见的用途是发送垃圾信息,或诱使用户访问网站、批准合约或复制欺骗性地址。

仅仅收到粉尘不会泄露助记词、私钥或签名权限。风险来自之后发生的操作:自动选币可能在 UTXO 之间建立公开联系,而点击、签名、批准、兑换或退回陌生资产则可能造成安全或隐私后果。

“粉尘”在 Bitcoin Core 中有更狭义的政策含义。GetDustThreshold 会估算按 dustRelayFee 花费一个输出的成本是否高于该输出的价值。结果取决于输出脚本和预期的花费输入,因此不存在适用于每条链或每种输出类型的统一粉尘金额。

中继政策与共识属于不同层次。标准节点可能依据本地政策拒绝中继粉尘输出,但已经纳入有效区块的输出仍属于 UTXO 集;如果后续交易支付了可接受的手续费,它仍然可以被花费。

工作原理

比特币交易将先前的输出作为输入花费,通常还会创建找零输出。共同输入所有权启发式规则把一同花费的输入视为由同一方控制的证据。攻击者可以向多个已知或疑似地址发送小额输出、监控链上活动;如果之后某笔交易同时选用了这些输出,就能增强其地址聚类推断。

这个结论是概率性的,而不是协议事实。CoinJoin 等协作交易会刻意让不同参与者向同一笔交易提供输入,托管方也可能为许多客户构造交易。因此,一笔交易可能削弱或推翻该启发式判断;它不能证明每个输入的法律所有者或现实身份。

账户型链不会以这种方式合并 UTXO。任何人仍可发送原生货币、转移代币、铸造 NFT,或让合约发出误导性事件。钱包或索引器可能显示结果,但代币名称、符号、图标或显示余额既不能验证合约真伪,也不能证明其经济价值。防御时应关注用户是否授权了任何后续调用、签名或额度。

请采用以下响应流程:

  1. 不要仅仅为了让陌生项目从界面消失,就点击其中的网址、回复、退回、兑换、销毁或批准它。
  2. 在进行任何更改前,记录链、交易哈希、输出索引或资产合约、发送方、金额以及钱包显示内容。
  3. 区分 UTXO、原生币转账、代币、NFT、批准或仅有事件记录的情况;它们的状态和处置方式各不相同。
  4. 对于 UTXO,应检查选币情况,并使用可信钱包的币控制或锁定功能,避免自动选中该输出。在 Bitcoin Core 中,lockunspent 可以排除指定输出;能否持久保留取决于所用选项。
  5. 对于账户型钱包,应尽可能隐藏垃圾资产,并在对其定价或采取任何操作前核验链和完整合约地址。
  6. 如果已经使用过某个网站、签名或合约,应检查实际签署的数据和当前额度,通过可信界面撤销危险权限;只有在密钥泄露或持续授权确实需要时,才转移剩余资产。
  7. 从经过验证的来源获取每个付款地址,并在可信显示设备上核对完整地址;交易历史不是地址簿。

示例

  • 一名用户通过地址 A 接收公开捐款,并在地址 B 中存放储蓄。观察者已知 A 属于该用户,但不知道 B 由谁控制。
  • 攻击者向 A 发送 600 sats,也向 B 发送 600 sats。之后,钱包在一笔支付 60,000 sats 加手续费的交易中,选用了 A 的 20,000 sats、B 的 50,000 sats 和两个小额输出。
  • 共同输入模式为观察者提供了 A 和 B 可能受同一方控制的证据,从而暴露与 B 相关的储蓄历史。但它仍不能从密码学上证明一个人同时拥有这两个地址。
  • 如果钱包支持币控制,用户可以改为标记并锁定两个 600 sats 输出。冻结不会抹去交易;只要锁定仍然有效,它就能阻止钱包自动选中这些输出。

风险

  • 自动选币把公开使用的地址与私人储蓄地址关联起来。
  • 重复使用地址会让后续聚类更容易,并扩大可见的交易历史。
  • 退回粉尘会证实接收方能够花费目标输出。
  • 用户把概率性的聚类误认为确定的身份归属。
  • 钱包缺少币控制功能,或临时锁定在重启后失效。
  • 协作交易或托管交易产生错误的地址聚类。
  • 陌生代币名称或 NFT 图片包含网络钓鱼地址。
  • 用户在尝试领取、出售或隐藏垃圾资产时授予额度或签署不透明数据。
  • 假冒代币使用与公认资产相同的名称或符号。
  • 索引器为未知合约定价,污染投资组合或会计报告。
  • 一笔微额交易植入相似地址,之后用户从历史记录中复制该地址。
  • 事件响应过于仓促地转移资金,并再次签署恶意操作。

资金管理和会计系统应按链和合约地址识别同质化资产,而不能只看代号。未知资产默认不应定价;应将观察到的事件与已确认的余额变化分开,并要求审核后才能把新合约纳入估值、路由或抵押品系统。

仅仅被动收到资产并不能证明钱包已经失陷。应根据实际权限或行为决定是否升级响应:未知签名、额度、合约调用、设备变更、恢复短语泄露或未经授权的转出交易,与未经请求的转入记录有实质区别。

常见误区

  • 收到粉尘会自动盗走钱包资产。 转入交易不会泄露私钥;相关风险来自之后的花费或被诱导的交互。
  • 每个小额输出都低于比特币的粉尘阈值。 该阈值是一种中继政策计算,会随脚本和手续费假设而变化;“粉尘攻击”也被更广泛地用于描述未经请求的低价值转账。
  • 移动或销毁垃圾代币总比忽略它安全。 任何操作都可能调用不可信合约、创建额度或暴露更多关联。隐藏项目通常是交互更少的应对方式。
  • 一同使用的输入必然属于同一个人。 共同输入所有权是一种有用的启发式规则,但 CoinJoin 和托管方构造的交易是明确的反例。

相关主题

来源

导航

搜索知识库...