Tornado.Cash交易隐私性观察报告_ADO:SEKTOR

01

前 言

Tornado.Cash 作为以太坊网络上最火的去中心化隐私解决方案,打破了存款人和取款人地址之间的链上链接,做到了交易机密性,保护了用户隐私。

越来越多有隐(洗)私(钱)需求的用户开始使用 Tornado.Cash,那 Tornado.Cash 真正的隐私性到底如何,能做到百分百的安全吗?

知道创宇区块链安全实验室 将对 Tornado.Cash 进行多维度分析,探索 Tornado.Cash 真正的隐私可靠性。

02

在分析 Tornado.Cash 之前,我们必须知道 Tornado.Cash 的工作原理。

Tornado.Cash使用智能合约(匿名池),接收来自一个地址的代币存款,并允许他们从不同的地址提款,并且通过零知识证明阻断了存款地址和提款地址之间的联系,让隐私性得到了保护。

其中,匿名池的大小直接决定了 Tornado.Cash 隐私可靠性的高低,想想如果只有一笔存款进入匿名池,那不管从哪个地址提款,肯定和存款地址是同一个人。

感兴趣的读者可以阅读官方文档:how-does-tornado.cash-work。

03

Tornado.Cash 目前支持 ETH 及 ERC20 代币(DAI,cDAI,USDC,USDT,WBTC)存、提款交易,我们选取了其中交易量最大的 ETH 进行隐私性分析,提取了 2021-11-04 日之前,所有 Tornado.Cash 合约的交易记录,数据如下表所示:

可以看到,在启用代理合约后,大量交易都是通过代理进行,通过匿名池交易量占比图(下表)可知,1 ETH 匿名池(33%)和 10 ETH 匿名池(30%)是使用最多的匿名池。

某网络钓鱼关联地址将400枚ETH转入Tornado Cash:金色财经报道,据CertiK监测,0x3fd6d开头的网络钓鱼关联地址将400枚ETH转入Tornado Cash,目前仍持有约684枚ETH。该地址此前已经收到多个网络钓鱼地址发送的资产。[2023/1/19 11:20:58]

04

交易分析

对所有交易进行存款、提款归类后,统计了每个地址存/提款总额(单位 ETH) 、次数、最大存/提款金额、最小存/提款金额统计。得到了 22714 个存款地址,31737 个提款地址,其中存/提款总额 Top 10 数据如下:

存钱总额 Top 10:

提款地址总额 Top 10:

可以看到,存款地址和提款地址并不是一一对应,也无法知道存款地址和取款地址之间的关系。

Tornado.Cash 推出了匿名挖矿激励措施(参见:anonymity-mining),用于增加匿名池内交易的数量,提高 Tornado.Cash 整体的隐私可靠性。

所以我们第一步便是过滤掉匿名池内的挖矿交易,可以大大降低匿名池内交易数量。

通过分析观察,发现挖矿地址有如下特征:

挖矿地址会到 Tornado.Cash 矿池合约地址      

0x746aebc06d2ae31b71ac51429a19d54e797878e9 提取TRON代币;

Aave:已解除被Tornado Cash小额污染受影响的地址:8月14日消息,Aave在社交媒体上发文表示,在美国财政部海外资产控制办公室(OFAC)将Tornado Cash纳入制裁名单(SDN)后,Aave团队紧急在IPFS前端集成区块链智能公司TRM Labs的API,以筛选并阻止与制裁后的Tornado Cash合约有交互的地址。

TRM的API风险参数可以识别所有与Tornado Cash合约在制裁发生后进行过交互的钱包,甚至是从Tornado Cash收到0.1ETH转账的地址。这些钱包持有人在Aave应用程序(Aave协议的前端之一)时可能会遇到问题。

Aave表示已意识到API可能对哪些钱包应该包括在封禁列表中进行了错误的调用,使那些未经同意从Tornado Cash收到0.1ETH转账的地址受到影响。Aave团队已解除相关地址的封禁,并表示将继续评估紧急情况下负责任和合理的风险缓解措施。[2022/8/14 12:24:16]

挖矿地址没有隐私保护需求,提款的时候一般直接使用自己钱包地址支付矿工费;

挖矿地址一般是常用且交易比较多的老地址;

采用该方法获取到 1051 个满足条件的矿池地址。排除挖矿地址后,存、提款地址数量变化如下:

排除挖矿地址后存款总额 Top 10:

排除挖矿地址后取款地址总额 Top 10:

> 相同地址过滤

存款地址和提款地址相同的交易,没有交易隐私性,所有也可以过滤掉(此部分大概率为挖矿或小白用户),过滤后数据变化如下:

ASUSTOR NAS设备受到勒索软件攻击,攻击者索要比特币赎金:2月22日消息,在QNAP之后,勒索软件攻击现在转向ASUSTOR NAS用户。从昨天开始,社交媒体上就有很多受害者称,他们的NAS单元被Deadbolt加密,必须支付比特币赎金才能解锁文件。目前,问题似乎源于ASUSTOR(华硕旗下华芸科技)的EZ-Connect服务。ASUSTOR也暂时关闭了他们这边的服务。

据悉,DeadBolt攻击者远程访问受害者的NAS并加密数据,然后索要比特币赎金。每个受害者都会获得一个独特的比特币地址,要求转账0.03枚BTC,价值约为1200美元。将数据从NAS同步到云服务(如Microsoft OneDrive或Google Drive)的ASUSTOR用户应立即停止连接。(The Guru of 3D)[2022/2/22 10:08:34]

存款地址总额Top 10:

提款地址总额Top 10:

> 过滤中继地址

为了最大化提款地址的隐私性安全性,大部分用户提款时,会选择使用中继器来支付矿工手续费,所以一次提款操作,会有两笔交易。

其中一笔小额是支付给中继器的手续费,另外一笔才是真正的提款交易,如下图

我们使用过滤条件:max > 0.8 | (max <= 0.1 & max >= 0.08) 对中继器交易进行过滤,过滤后数据变化如下:

动态 | BitTorrent成为niTROn SUMMIT 2020钻石赞助商:据官方最新信息,BitTorrent成为niTROn SUMMIT 2020钻石赞助商。由波场TRON官方举办的世界区块链行业年度综合性峰会niTROn SUMMIT 2020将在2020年2月29号至3月1号两日于韩国首尔举行。该峰会汇聚全球顶尖开发者、交易所、项目方、矿池、投资方,共同交流区块链未来发展方向。BitTorrent拥有超过10亿用户,发明并维护了BitTorrent协议。BitTorrent协议与TRON波场区块链协议达成战略合作伙伴关系,两者的合作使波场协议成为世界上最大的去中心化生态系统,它也使BitTorrent协议成为世界上最大的分布式应用程序。波场TRON在2018年7月24日完成了对P2P下载网络BitTorrent及其旗下所有产品的收购。[2020/1/17]

过滤中继地址后的提款地址次数Top 10:

> 同一用户关联地址关系

接下来分析torando交易池里面的地址是否存在关联关系,在分析之前我们首先排除了矿池地址和中继器地址之后再进行分析。

分析办法采用直接交易对手分析方式,假设A是充币地址,B是提币地址,A和B之间没有直接关系,但C地址是A的直接交易对手,C地址同时也是B的直接交易对手,那我们可以判定A和B是有关联的,直接交易对手的数据直接从链探查询获取。

按地址类型区分可以把关系分为:充币地址与充币地址,提币地址与提币地址以及充币地址与提币地址三类关系,这三类关联关系都适用于不同的场景。

充币地址与充币地址之间的关系

由于tornado只能存0.1ETH、1ETH、10ETH、100ETH,所以在实际转账过程中,可能会出现资金分配,矿工费分配,或者存入之后地址剩余ETH汇集等情况。

动态 | eToro与币安联盟 现可进行BNB交易:eToro的高级市场分析师Mati Greenspan发推称,eToro与币安联盟,已将BNB添加至交易列表中。[2018/11/28]

提币地址与提币地址之间的关系

在需要提款时,提款地址之间可能也会存在汇集的可能,比如汇集到交易所。

充币地址和提币地址之间的关系

充币地址和提币地址之间是否任然存在关联,这是关键所在,如果是一个非常熟悉隐私交易的黑客,他可能会想尽一切办法来切断关键地址之间的联系,但实际操作过程中因为都是人在操作,难免会有疏忽或者遗漏,可能会留下蛛丝马迹。

基于以上三个场景和关联类型的猜想,我们先对100ETH的交易池进行分析。根据直接交易对手数据直接生成相应的关联图(图中地址后面的d代表充值地址,w代表提币地址)

第一种情况

充币地址与充币地址存在关联关系,以0x0022d8bda338fd7e5c7248f32090252fd6dc11ef 为例:

该地址与多个充币地址间出现过交易对手重叠的情况,链上分析这些地址的关系,可以判断出该地址在对 tornado 先后充值 100ETH 和 10ETH 之后

剩余的 ETH 汇集到了  0x6bafcd65f9ad3a99509d8d7d987acfa393db7c39地址中,并由该地址将剩余的 0.1ETH 也充值到 tornado 交易池中。

第二种情况

提币地址与提币地址之间存在关联关系,以0x9c67d8383f1eeb6e2ff2b0d296aa6a51ea2858a1 为例:

该地址与多个提币地址之间产生关联关系,这些地址都从tornado 100eth的交易池中发起过提币行为,每个地址都提取了1000ETH

并在提币之后都汇集到了 0x120cffb605c8127442c2f8515eb25749cce52947 地址中

继续分析后续路径可以看到

又将ETH进行了多次周转最终到了

0x32e9dc9968fab4c4528165cd37b613dd5d229650

等地址中,并最终经过 Swap 将 ETH 换成其他代币转到了币安等交易所中。

上面两种情况,隐私交易都只在充币端或者提币端之后产生了关联,虽然能够追溯到一些信息,但充币和提币之间的联系还是断开的,那么我们探索第三种情况。

正所谓人无完人,再缜密的计划也可能留下线索,如果 tornado 的使用者在使用时没有完全隔离地址,则通过交易对手的关系是有可能关联上的,以 0x167ae15b74cd20482e80f7e425b4ae6d2cc631c4 为例。

在上面关联关系中,五个地址都通过直接交易对手 0x4278314c1a50da6014e580cbff34fc383b335049 进行关联,从而在一定程度上可以将这五个地址的出入金关系建立起来,如果进一步挖掘金额和后续资金流向关系,则可以尝试进一步溯源。

在整个试验中,100ETH 池子有 4132个充币地址,有703个提币地址,清洗出来有直接交易对手重叠的关联地址有2859个,大约占整个地址59%左右,说明大部分人在使用tornado隐私协议的时候,因为使用上的疏忽,并没有做到100%的隐私。

挖出关联地址也意味着对tornado的溯源成为一种可能(本文取样只取了直接交易对手,如果取更深层次的交易对手准确率会更高),在获取到大量的关联地址之后可以根据交易所地址的kyc或者ens推特等渠道进一步挖掘真实信息。

05

基于案例验证结果数据

我们从链探的黑客事件库中挖掘历史上发生过的一些安全事件,并筛选出事件中使用了tornado的相关地址按照上述理论进行分析。

直接交易对手关联地址分析

黑客通过8个地址将ETH存入到Tornado 100ETH的交易池中,这8个充币地址通过直接交易对手 0x23156749a0acefc8f07b9954d181d50084c1519e 和 0x82e6b31b0fe94925b9cd1473d05894c86f277398 进行了关联。

而从上面的关联图可以看到由于黑客疏忽,充币地址 0x34a17418cec67b82d08cf77a987941f99dc87c6b 通过直接交易对手地址 0x82e6b31b0fe94925b9cd1473d05894c86f277398 和提币地址 0xc609b3940be560c8c00e593bea47fb6ecef6b2c6 进行了关联。

0xc609b3940be560c8c00e593bea47fb6ecef6b2c6 只提币 2900ETH(占 8 个充币地址存入ETH总量的一小部分),

可以看到黑客因为 0x82e6b31b0fe94925b9cd1473d05894c86f277398 中没有足够的矿工费,

先后从 0xc609b3940be560c8c00e593bea47fb6ecef6b2c6 和 0x23156749a0acefc8f07b9954d181d50084c1519e 中转出过矿工费到 0xc609b3940be560c8c00e593bea47fb6ecef6b2c6,

而正好充币地址的矿工费也从这两个地址转出过,从而让提币地址和充币地址建立了关联。

继续顺藤摸瓜可以发现,提币出来的 ETH 又转到了其他地址,在整个链路上继续深入,可以发现ETH被分散发到了很多地址,并有大量的 ETH 转入了币安的充币地址 0x28c6c06298d514db089934071355e5743bf21d60

至此,整个链路追踪在币安断开,如果能获取到币安kyc信息便可具体定位人员。

交易所 Liquid 被盗

发现四个充币地址向 100ETH 的池子充过币,并且通过直接交易对手 0x5578840aae68682a9779623fa9e8714802b59946 关联。

FinNexus DeFi 项目被盗

发现两个充币地址关联,0x5271b379f3e1954e20791142d734596a3de28efd 和 0x5ebc7d1ff1687a75f76c3edfabcde89d1c09cd5f 都向 100eth 的池充过 ETH,并通过直接对手 0xfe381bc045b85e0acd93e85ecfe65ecb0fec2a44 关联。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:31ms0-7:602ms