一、初識粉塵攻擊 小白:東哥,隨著互聯網的高速發展,網絡安全也變得越來越重要了。 大東:不錯,國家越來越重視網絡安全方面的問題,區塊鏈的出現就說明了這一點。 小白:區塊鏈?這是什么? 大東:區塊鏈(Blockchain),是比特幣的一個重要概念,它本質上是一個去中心化的數據庫,同時作為比特幣的底層技術,是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一批次比特幣網絡交易的信息,用于驗證其信息的有效性(防偽)和生成下一個區塊。 小白:哇,這樣網絡的安全就有保障了!太厲害了! 大東:非也,世界上沒有完美的事物,現在也有很多手段能夠威脅到區塊鏈項目,比如說粉塵攻擊。 小白:粉塵攻擊又是什么?難道是把一堆粉塵揚到臉上來攻擊別人嗎? 大東:你還真是個小白呀!其實這個粉塵攻擊是區塊鏈攻擊中的術語。 小白:怪不得我猜不對呢,原來是術語呀,突然感覺自己知道的好少,東哥能不能給我講講它的定義。 粉塵(圖片來源于網絡) ![]() 二、了解粉塵攻擊 大東:粉塵攻擊(Dusting Attack),是一種新型的惡意攻擊活動,黑客和詐騙者將通過向用戶私人錢包中發送極少量的代幣以此來試圖破壞比特幣和加密貨幣用戶的匿名性。 小白:不太懂…… 大東:簡單來說,黑客會使用這項攻擊來獲得用戶身份,然后通過用戶隱私來威脅用戶,一些不愿意暴露出自己正在使用加密貨幣的人只得為此交付高額贖金。 小白:粉塵攻擊的原理是不是通過混入少量的代幣來得到用戶隱私的意思? 大東:可以這么簡單地理解。 小白:那這里的粉塵是指很少的錢嗎?到底少是一個什么樣的概念呢? 大東:在加密貨幣的世界中,“粉塵”是指人們通?梢詫⑵浜雎缘臉O少量的貨幣或代幣。就拿比特幣為例,比特幣的最小單位是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沒有被選中發送,實際上沒有什么大問題?墒遣煌腍D錢包是可以定義不同的UTXO排序規則的,一旦粉塵UTXO-6隨某筆交易被選中并廣播到區塊鏈,事情就不可小看了。 小白:如果粉塵被廣播到區塊鏈,會發生什么嚴重的事情? 大東:假設粉塵UTXO-6和地址-2 的UTXO-3一起被選中發送到交易所,那么小黑就能夠推斷,地址-1和地址-2的所有活動都是同一人(大黃)所為,然后小黑可以從地址-2在鏈上的所有歷史交易、訪問的商店、付款記錄、與交易所的交易記錄等信息中確認大黃的真實身份。 (圖片來源于網絡) ![]() 小白:歸根結底這是利用了用戶不關心自己錢包出現的微小代幣心理,從而竊取用戶隱私。 大東:多年來,計算機科學家們奉獻大量的時間研究如何檢測和預防粉塵攻擊,各個研究成果具備不同程度性的有效性。 小白:快講講怎么破解! 粉塵攻擊原理圖(圖片來源于網絡) ![]() 三、應對粉塵攻擊 大東:一種方法為每筆交易使用不同的地址。每個BCH錢包都可以創建很多的地址,每個錢包上的余額是輸入和UTXO的總和。這意味著你的2個BCH可以用1、0.5、0.25和0.25這樣的增量來表示,以得到總金額。如此一來輸入地址和輸出地址就已經混淆,割裂兩者的關系,在具體的使用過程中,一次交易可能包含多個輸入和輸出,輸入和輸出之間不再存在一對一的對應關系。 小白:這樣的話就沒有辦法通過“粉塵”追蹤用戶的資金流動從而獲取用戶的隱私了! 大東:只是這樣一來操作上有一定的復雜性,如今應用廣泛的混幣服務就是基于此原理的服務,只是大大簡化了用戶操作,用戶只需要點擊服務選項,即可一鍵混幣,后臺會自動進行。 小白:有沒有比較簡單的方法? 大東:現在還有一種簡單的方法是將這些受到污染的粉塵金額標記并隔離起來。自交易初,用戶就能發現這些來路不明的小額資金,并且不去使用它,徹底隔離它。 小白:但是這種操作應該對用戶來說很難吧?畢竟很多用戶難以甄別攻擊,并且難以將他們與UTXO隔離開來。 大東:不錯,所以現在市面上很多錢包商提供服務允許你在隨機發送的幾“聰”BCH中添加描述或“標記”,你可以選擇不去理會這些粉塵,這樣粉塵攻擊就與未受污染的金額隔離開來。 |