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%)是使用最多的匿名池。
Web3游戲DAO Game7推出開源NFT標準“NFT Inventory”:金色財經報道,Web3游戲DAO Game7宣布與Web3游戲經濟基礎設施初創公司Moonstream.to合作推出開源NFT標準“NFT Inventory”,該標準能讓游戲開發人員快速擴展游戲,無需運行復雜的智能合約升級、或對游戲服務器進行重大調整;此外,該標準也可以讓游戲設計師自定義游戲內資產,目前支持ERC-1155(用例包括游戲武器、盔甲、藥水)、ERC-721(獨特徽章、特殊頭銜、玩家等級)和 ERC-20(金幣、xp 等)代幣。
據此前報道,Game7由鏈游平臺Forte提議與Alameda等投入5億美元構建,去年底Game7啟動了1億美元資助計劃以加速Web3游戲開發。(prweb)[2023/2/12 12:01:54]
04
交易分析
對所有交易進行存款、提款歸類后,統計了每個地址存/提款總額(單位 ETH) 、次數、最大存/提款金額、最小存/提款金額統計。得到了 22714 個存款地址,31737 個提款地址,其中存/提款總額 Top 10 數據如下:
存錢總額 Top 10:
提款地址總額 Top 10:
可以看到,存款地址和提款地址并不是一一對應,也無法知道存款地址和取款地址之間的關系。
Tornado.Cash 推出了匿名挖礦激勵措施(參見:anonymity-mining),用于增加匿名池內交易的數量,提高 Tornado.Cash 整體的隱私可靠性。
eToro推出DeFi投資組合,由ETH、UNI等11種DeFi資產組成:9月23日消息,交易平臺eToro推出DeFi投資組合,由ETH、UNI、COMP、AAVE、LINK、YFI、MANA、ALGO、MATIC、BAT、MKR等11種DeFi資產組成,為用戶提供DeFi敞口。超過三分之一的投資組合權重于ETH,其中11.67%權重于ALGO。其余九項資產的權重從不到4%到略高于8%。[2021/9/23 17:02:01]
所以我們第一步便是過濾掉匿名池內的挖礦交易,可以大大降低匿名池內交易數量。
通過分析觀察,發現挖礦地址有如下特征:
挖礦地址會到 Tornado.Cash 礦池合約地址
0x746aebc06d2ae31b71ac51429a19d54e797878e9 提取TRON代幣;
挖礦地址沒有隱私保護需求,提款的時候一般直接使用自己錢包地址支付礦工費;
挖礦地址一般是常用且交易比較多的老地址;
采用該方法獲取到 1051 個滿足條件的礦池地址。排除挖礦地址后,存、提款地址數量變化如下:
排除挖礦地址后存款總額 Top 10:
排除挖礦地址后取款地址總額 Top 10:
> 相同地址過濾
存款地址和提款地址相同的交易,沒有交易隱私性,所有也可以過濾掉(此部分大概率為挖礦或小白用戶),過濾后數據變化如下:
BiKi ETF專區STORJ3L/USDT今日最高漲幅48.33%:據BiKi平臺ETF專區行情顯示,截至今日11:45,ETF3L專區STORJ3L/USDT今日最高漲幅48.33%,現凈值0.0249; SAND3L今日最高漲幅41.25%,現凈值0.6266; ETF5S專區XRP5S/USDT今日最高漲幅28.85%,現凈值0.0287。
ETF5L/5S和ETF3L/3S是一種錨定標的5倍做多、5倍做空和3倍做多、3倍做空某種數字資產的指數基金,目前已上線主流幣、NFT、Defi、Layer2、波卡系、存儲系、匿名幣等熱門幣種,相比合約有操作簡單、永不爆倉、無保證金、單邊行情收益更高等特點。[2021/5/21 22:28:26]
存款地址總額Top 10:
提款地址總額Top 10:
> 過濾中繼地址
為了最大化提款地址的隱私性安全性,大部分用戶提款時,會選擇使用中繼器來支付礦工手續費,所以一次提款操作,會有兩筆交易。
其中一筆小額是支付給中繼器的手續費,另外一筆才是真正的提款交易,如下圖
我們使用過濾條件:max > 0.8 | (max <= 0.1 & max >= 0.08) 對中繼器交易進行過濾,過濾后數據變化如下:
動態 | 加密投資平臺eToroX宣布支持ETC:2月2日,加密投資平臺eToro加密部門eToroX宣布支持ETC,并添加ETC和USDT交易對。此前2019年11月,eToroX剛宣布添加Dash和5個新的穩定幣。[2020/2/3]
過濾中繼地址后的提款地址次數Top 10:
> 同一用戶關聯地址關系
接下來分析torando交易池里面的地址是否存在關聯關系,在分析之前我們首先排除了礦池地址和中繼器地址之后再進行分析。
分析辦法采用直接交易對手分析方式,假設A是充幣地址,B是提幣地址,A和B之間沒有直接關系,但C地址是A的直接交易對手,C地址同時也是B的直接交易對手,那我們可以判定A和B是有關聯的,直接交易對手的數據直接從鏈探查詢獲取。
按地址類型區分可以把關系分為:充幣地址與充幣地址,提幣地址與提幣地址以及充幣地址與提幣地址三類關系,這三類關聯關系都適用于不同的場景。
充幣地址與充幣地址之間的關系
由于tornado只能存0.1ETH、1ETH、10ETH、100ETH,所以在實際轉賬過程中,可能會出現資金分配,礦工費分配,或者存入之后地址剩余ETH匯集等情況。
提幣地址與提幣地址之間的關系
在需要提款時,提款地址之間可能也會存在匯集的可能,比如匯集到交易所。
充幣地址和提幣地址之間的關系
充幣地址和提幣地址之間是否任然存在關聯,這是關鍵所在,如果是一個非常熟悉隱私交易的黑客,他可能會想盡一切辦法來切斷關鍵地址之間的聯系,但實際操作過程中因為都是人在操作,難免會有疏忽或者遺漏,可能會留下蛛絲馬跡。
基于以上三個場景和關聯類型的猜想,我們先對100ETH的交易池進行分析。根據直接交易對手數據直接生成相應的關聯圖(圖中地址后面的d代表充值地址,w代表提幣地址)
聲音 | eToro分析師:比特幣目前主導地位足以和山寨幣市場成熟前相媲美:eToro高級市場分析師Mati Greenspan發布推文稱,比特幣現在的主導地位已經足以和山寨幣還沒有成熟的市場之前相媲美了。很難再看到比特幣比現在更強了。[2019/9/17]
第一種情況
充幣地址與充幣地址存在關聯關系,以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 關聯。
對于區塊鏈世界來說,治理仍然是大眾所關心的話題。在這個去中心化、無需許可的鏈上系統中,如何通過一個更公平、高效的方式,分配生態的收益,成為了限制一個協議、一條鏈長遠發展的一大問題.
1900/1/1 0:00:00鏈上「元宇宙」生態系統DeHorizon正在進行DAO(去中心化自治組織)的初步構建中。從12月7日開始,DeHorizon的治理通證DEVT開始通過多個CEX(中心化的加密資產交易平臺)對外分.
1900/1/1 0:00:00女性向NFT越來越成為NFT市場不可忽視的一個方向。?最近我接觸到了Crypto Coven社區.
1900/1/1 0:00:00經歷過元宇宙NFT的“熱潮轟炸”后,許多專業區塊鏈探寶者們已經逐漸將目光移回了DeFi賽道,去探索明日之星.
1900/1/1 0:00:00要點: Evmos在以Ethereum為基礎的應用程序和Cosmos的獨立去中心化區塊鏈生態系統之間實現了去中心化互操作性.
1900/1/1 0:00:00Plonky2 是一種遞歸 SNARK,它結合了 PLONK 和 FRI 以獲得最好的 STARK,具有快速證明和無可信設置,以及最好的 SNARK,支持遞歸和以太坊上的低驗證成本.
1900/1/1 0:00:00