区块链安全:关于粉尘攻击的那些事儿

转载
1865 天前
14974
Cobo钱包

来源:Cobo钱包

粉尘攻击(Dusting Attack)通过向目标地址发送极少量的数字货币,以将多个地址连接到一个所有者。国内外有很多关于粉尘攻击的文章,但是对于其背后的逻辑讲解都是浅尝辄止,今天小编就带大家了解下粉尘攻击究竟是如何实现的!

粉尘攻击只针对HD钱包用户以及UTXO模型的币种,如BTC、LTC、BCH等。攻击者向目标地址发送极少量的币,一旦粉尘被触发,攻击者就可以根据链上记录追溯到与目标地址关联的其它地址,最终通过综合分析这些地址信息,确认目标地址背后的公司或个人。

攻击者的身份可以是黑客,也可以是专门查找数字货币持有者身份的侦探服务者,当然也有可能是政府机构。后果可想而知。


但是,区块链本身就是透明公开的。那攻击者为何要发起粉尘攻击而不是在链上直接查看信息呢?通过粉尘攻击能得到哪些额外的关键信息?

前面提到的HD钱包(分层确定性钱包)以及UTXO(未花费的交易输出)的逻辑定义就是答案。钱包地址里每一笔没有被花费的数字货币实际上叫作“UTXO”,而粉尘攻击只针对UTXO模型的币种进行,比特币使用的交易模型就是UTXO模型。

举个栗子,有个比特币爱好者叫大黄,他在HD钱包的一个BTC地址上存了500 BTC,其它地址上还有一些较小数额的BTC,用来平时转到交易所交易、购物等。


(HD钱包实际是很复杂的,每个地址下面都有很多不同数额的UTXO,但是为了清楚可见,我们将其简化。)


01

首先,我们来看看UTXO是如何运作的

大黄要发送3.2 BTC到交易所

(UTXO-2)+(UTXO-4)= 3.3 BTC将被发送。

交易的找零(找零 = 实际发送的UTXO总和 -(实际发送需求+交易费))将会返回到大黄HD钱包里的全新地址上。比如交易费为0.005BTC,找零=3.3 -(3.2+0.005)=0.095 BTC将会被返回到大黄钱包新生产的地址-4中。


大黄HD钱包的快照-2

注意,只有最接近发送金额的UTXO会被选中发送。如果大黄想要交易的始终都是小数额的BTC,那么500 BTC(UTXO-1)始终不会被花费,存储500 BTC的地址-1不会被关联到其他有UTXO被花费的地址。


02

粉尘:是时候表演真正的技术了!

有个叫小黑的人,盯上了大黄存有500 BTC的地址-1,想要找到大黄的真实身份,于是她往地址-1发了一笔粉尘交易(0.000005 BTC,通常一百聪以内的交易我们视为粉尘)。即使是粉尘,它也是一笔UTXO!之所以称为粉尘,是因为它的金额小到几乎无法察觉,甚至可能比最低的交易费还低。


大黄HD钱包的快照-3

大黄没有察觉到粉尘交易,并继续与交易所交易、购物、向朋友支付数字货币。只要粉尘UTXO-6没有被选中发送,实际上没有什么大问题。可是不同的HD钱包是可以定义不同的UTXO排序规则的,一旦粉尘UTXO-6随某笔交易被选中并广播到区块链,事情就不可小看了。

假设粉尘UTXO-6和地址-2 的UTXO-3一起被选中发送到交易所,那么小黑就能够推断,地址-1和地址-2的所有活动都是同一人(大黄)所为,然后小黑可以从地址-2在链上的所有历史交易、访问的商店、付款记录、与交易所的交易记录等信息中确认大黄的真实身份。


大黄HD钱包的快照-4

如果小黑是一名黑客,大黄就麻烦了。黑客们可以利用粉尘攻击来筛选受害对象,然后对其进行钓鱼攻击、网络勒索甚至是绑架。       

如果小黑是一名政府机关工作人员,她可以利用粉尘攻击很轻松的知道可疑账户背后操控人员的真实身份。她所要做的就是在确认大黄身份后,联系交易所或直接发送传票传唤大黄乖乖配合调查。众所周知,大多数字货币交易所通过KYC认证环节收集用户资料,所以当用户在个人钱包和交易所账户间转账时,他们就已经处于非匿名的危险中了。


03

那么,我们该如何保护自己的身份信息呢?

发现收到粉尘交易后该怎么做?

粉尘攻击的对象大多是个人钱包持有者。平常多多留意一些不明收入是非常重要的。那么发现之后,我们可以参考下面几项措施:

1. 某些钱包允许用户把小数额的不明转入标记为粉尘攻击,那么这个粉尘UTXO将永远不会被选中进行交易。

2. 将被攻击的地址和其他地址的资产做隔离,以大黄为例,他需要单独将地址-1的UTXO转到另一个新HD钱包,或者反过来把除了地址-1的其他所有地址的UTXO转到另一个新HD钱包。可以利用支持用户自定义UTXO的钱包或者一些靠谱的混币服务来实现。

防患于未然

使用两个独立的HD钱包,一个用于存储不常用的大额UTXO,另外一个存储需要频繁交易的小额UTXO。这样它们就永远不会被混合使用啦!

办法总比困难多。不想一夜回到解放前,那就和小编一起做个谨慎心细的大黄吧~旺旺~