区块链的对手:粉尘攻击丨大东话安全

 

随着互联网的高速发展,网络的安全也变得越来越重要。...



一、初识粉尘攻击

小白:东哥,随着互联网的高速发展,网络安全也变得越来越重要了。

大东:不错,国家越来越重视网络安全方面的问题,区块链的出现就说明了这一点。

小白:区块链?这是什么?

大东:区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。

小白:哇,这样网络的安全就有保障了!太厉害了!

大东:非也,世界上没有完美的事物,现在也有很多手段能够威胁到区块链项目,比如说粉尘攻击。

小白:粉尘攻击又是什么?难道是把一堆粉尘扬到脸上来攻击别人吗?

大东:你还真是个小白呀!其实这个粉尘攻击是区块链攻击中的术语。

小白:怪不得我猜不对呢,原来是术语呀,突然感觉自己知道的好少,东哥能不能给我讲讲它的定义。

粉尘(图片来源于网络)


二、了解粉尘攻击

大东:粉尘攻击(Dusting Attack),是一种新型的恶意攻击活动,黑客和诈骗者将通过向用户私人钱包中发送极少量的代币以此来试图破坏比特币和加密货币用户的匿名性。

小白:不太懂……

大东:简单来说,黑客会使用这项攻击来获得用户身份,然后通过用户隐私来威胁用户,一些不愿意暴露出自己正在使用加密货币的人只得为此交付高额赎金。

小白:粉尘攻击的原理是不是通过混入少量的代币来得到用户隐私的意思?

大东:可以这么简单地理解。

小白:那这里的粉尘是指很少的钱吗?到底少是一个什么样的概念呢?

大东:在加密货币的世界中,“粉尘”是指人们通常可以将其忽略的极少量的货币或代币。就拿比特币为例,比特币的最小单位是1 satoshi(也就是0.00000001比特币),通常我们将小于几百satoshis的数量视为粉尘。

小白:那这么少的代币能起什么作用?

大东:你可不要小看它,粉尘在加密货币领域里的大量使用是件不妙的事。小白,你试想想,如果有人意图在区块链网络上大量的使用少量代币交易会发生什么事情?

小白:嗯……那他肯定会损失惨重,毕竟比特币转账是需要手续费的。

大东:一般不太了解比特币转账规则的人都会下意识的这么想,但是比特币转账中存在着免手续费的情况,而且有人频繁恶意地进行小额交易,会造成比特币网络的拥堵。因为,比特币的交易区间只有1M的大小,所以,那么多手续费极低甚至免费的小额交易,拥挤在比特币网络,必然会导致比特币网络的拥堵,而粉尘攻击最大的危害就是导致比特币网络拥堵。

小白:免手续费?这怎么可能!

大东:是的,如果按着传统记账方法,也就是转账数额大,需要的手续费就多。但是,比特币的记账方法不同,它是按照交易字节数来收取手续费的。

小白:那怎样才可以免手续费呢?这肯定需要条件的吧!

大东:不错,在比特币交易手续费的设计中,每一个交易都会分配一个优先级,这个优先级是由币龄、交易的字节数和交易的数量来决定的,交易数量越大、币龄(这些币在区块中存在的时间)越高优先级就越高,就越有机会免交易手续费。如果你需要大量的小额比特币转账,又想免费转出,这时候你可以加一个数额大的、币龄高的比特币金额,就会将平均优先级提高,从而可以免费转出比特币。

小白:粉尘攻击简直魔鬼!用少量的代币就可以将交易网络拥堵。真是用最少的钱干最厉害的事!

大东:粉尘攻击的危害不仅如此,还记得刚开头我说的粉尘攻击可以窃取用户的隐私吗?

小白:主要通过什么方式窃取呢?

大东:黑客们向用户的钱包地址发送“粉尘”,一旦用户使用这些“粉尘”,这些微小金额就和用户未花费的的交易输出(UTXO)混合在一起,黑客就可以追踪用户的钱包地址,以获得用户的身份,然后通过用户隐私来威胁用户。

小白:如果这些用户不接受这些“粉尘”,这样的话隐私也就不会被窃取了吧?

大东:事实证明,很多用户根本不在意这些微小金额的“粉尘”,并极有可能以后将这些“粉尘”与UTXO混合在一起,这导致粉尘攻击的成功率相当高。

小白:东哥,这个粉尘攻击只能针对用户未花费的的交易输出(UTXO)吗?

大东:没错,粉尘攻击只针对UTXO模型的币种进行,比特币使用的交易模型就是UTXO模型。

小白:东哥,能不能详细的讲解一下上边的窃取隐私的过程?

大东:举个例子你就明白了,加入有个比特币爱好者叫大黄,他在钱包的一个BTC地址上存了500 BTC,其它地址上还有一些较小数额的BTC,用来平时转到交易所交易、购物等。
大黄HD钱包的快照(图片来源于网络)


小白:那接下来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中。
(图片来源于网络)


小白:为什么不选那个有500BTC的转账呢?

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

小白:那粉尘攻击是怎样发挥作用的呢?

大东:假如有个叫小黑的人,盯上了大黄存有500 BTC的地址-1,想要找到大黄的真实身份,于是她往地址-1发了一笔粉尘交易(0.000005 BTC,通常一百聪以内的交易我们视为粉尘)。即使是粉尘,它也是一笔UTXO!
(图片来源于网络)


小白:然后呢?

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

小白:如果粉尘被广播到区块链,会发生什么严重的事情?

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


小白:归根结底这是利用了用户不关心自己钱包出现的微小代币心理,从而窃取用户隐私。

大东:多年来,计算机科学家们奉献大量的时间研究如何检测和预防粉尘攻击,各个研究成果具备不同程度性的有效性。

小白:快讲讲怎么破解!
粉尘攻击原理图(图片来源于网络)


三、应对粉尘攻击

大东:一种方法为每笔交易使用不同的地址。每个BCH钱包都可以创建很多的地址,每个钱包上的余额是输入和UTXO的总和。这意味着你的2个BCH可以用1、0.5、0.25和0.25这样的增量来表示,以得到总金额。如此一来输入地址和输出地址就已经混淆,割裂两者的关系,在具体的使用过程中,一次交易可能包含多个输入和输出,输入和输出之间不再存在一对一的对应关系。

小白:这样的话就没有办法通过“粉尘”追踪用户的资金流动从而获取用户的隐私了!

大东:只是这样一来操作上有一定的复杂性,如今应用广泛的混币服务就是基于此原理的服务,只是大大简化了用户操作,用户只需要点击服务选项,即可一键混币,后台会自动进行。

小白:有没有比较简单的方法?

大东:现在还有一种简单的方法是将这些受到污染的粉尘金额标记并隔离起来。自交易初,用户就能发现这些来路不明的小额资金,并且不去使用它,彻底隔离它。

小白:但是这种操作应该对用户来说很难吧?毕竟很多用户难以甄别攻击,并且难以将他们与UTXO隔离开来。

大东:不错,所以现在市面上很多钱包商提供服务允许你在随机发送的几“聪”BCH中添加描述或“标记”,你可以选择不去理会这些粉尘,这样粉尘攻击就与未受污染的金额隔离开来。

参考文献:

1.名词解释第六十讲:粉尘攻击http://www.sohu.com/a/260426663_100180371

2.粉尘攻击(Dusting Attack)是什么http://www.qukuaiwang.com.cn/news/14532.html

3.对抗粉尘攻击--CashShuffle正在保护BCHer隐私https://www.360kuai.com/pc/9fd9d8028c0c82a2f?cota=4&sign=360_57c3bbd1&refer_scene=so_1

4.区块链https://baike.so.com/doc/7904080-8178175.html

5.区块链安全篇——关于粉尘攻击的那些事儿

https://baijiahao.baidu.com/s?id=1650542008485859965&wfr=spider&for=pc

来源:中国科学院计算技术研究所

温馨提示:近期,微信公众号信息流改版。每个用户可以设置 常读订阅号,这些订阅号将以大卡片的形式展示。因此,如果不想错过“中科院之声”的文章,你一定要进行以下操作:进入“中科院之声”公众号 → 点击右上角的 ··· 菜单 → 选择「设为星标」


    关注 中科院之声


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册