一、初識(shí)粉塵攻擊 小白:東哥,隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)安全也變得越來(lái)越重要了。 大東:不錯(cuò),國(guó)家越來(lái)越重視網(wǎng)絡(luò)安全方面的問(wèn)題,區(qū)塊鏈的出現(xiàn)就說(shuō)明了這一點(diǎn)。 小白:區(qū)塊鏈?這是什么? 大東:區(qū)塊鏈(Blockchain),是比特幣的一個(gè)重要概念,它本質(zhì)上是一個(gè)去中心化的數(shù)據(jù)庫(kù),同時(shí)作為比特幣的底層技術(shù),是一串使用密碼學(xué)方法相關(guān)聯(lián)產(chǎn)生的數(shù)據(jù)塊,每一個(gè)數(shù)據(jù)塊中包含了一批次比特幣網(wǎng)絡(luò)交易的信息,用于驗(yàn)證其信息的有效性(防偽)和生成下一個(gè)區(qū)塊。 小白:哇,這樣網(wǎng)絡(luò)的安全就有保障了!太厲害了! 大東:非也,世界上沒(méi)有完美的事物,現(xiàn)在也有很多手段能夠威脅到區(qū)塊鏈項(xiàng)目,比如說(shuō)粉塵攻擊。 小白:粉塵攻擊又是什么?難道是把一堆粉塵揚(yáng)到臉上來(lái)攻擊別人嗎? 大東:你還真是個(gè)小白呀!其實(shí)這個(gè)粉塵攻擊是區(qū)塊鏈攻擊中的術(shù)語(yǔ)。 小白:怪不得我猜不對(duì)呢,原來(lái)是術(shù)語(yǔ)呀,突然感覺(jué)自己知道的好少,東哥能不能給我講講它的定義。 粉塵(圖片來(lái)源于網(wǎng)絡(luò)) ![]() 二、了解粉塵攻擊 大東:粉塵攻擊(Dusting Attack),是一種新型的惡意攻擊活動(dòng),黑客和詐騙者將通過(guò)向用戶私人錢(qián)包中發(fā)送極少量的代幣以此來(lái)試圖破壞比特幣和加密貨幣用戶的匿名性。 小白:不太懂…… 大東:簡(jiǎn)單來(lái)說(shuō),黑客會(huì)使用這項(xiàng)攻擊來(lái)獲得用戶身份,然后通過(guò)用戶隱私來(lái)威脅用戶,一些不愿意暴露出自己正在使用加密貨幣的人只得為此交付高額贖金。 小白:粉塵攻擊的原理是不是通過(guò)混入少量的代幣來(lái)得到用戶隱私的意思? 大東:可以這么簡(jiǎn)單地理解。 小白:那這里的粉塵是指很少的錢(qián)嗎?到底少是一個(gè)什么樣的概念呢? 大東:在加密貨幣的世界中,“粉塵”是指人們通常可以將其忽略的極少量的貨幣或代幣。就拿比特幣為例,比特幣的最小單位是1 satoshi(也就是0.00000001比特幣),通常我們將小于幾百satoshis的數(shù)量視為粉塵。 小白:那這么少的代幣能起什么作用? 大東:你可不要小看它,粉塵在加密貨幣領(lǐng)域里的大量使用是件不妙的事。小白,你試想想,如果有人意圖在區(qū)塊鏈網(wǎng)絡(luò)上大量的使用少量代幣交易會(huì)發(fā)生什么事情? 小白:嗯……那他肯定會(huì)損失慘重,畢竟比特幣轉(zhuǎn)賬是需要手續(xù)費(fèi)的。 大東:一般不太了解比特幣轉(zhuǎn)賬規(guī)則的人都會(huì)下意識(shí)的這么想,但是比特幣轉(zhuǎn)賬中存在著免手續(xù)費(fèi)的情況,而且有人頻繁惡意地進(jìn)行小額交易,會(huì)造成比特幣網(wǎng)絡(luò)的擁堵。因?yàn)椋忍貛诺慕灰讌^(qū)間只有1M的大小,所以,那么多手續(xù)費(fèi)極低甚至免費(fèi)的小額交易,擁擠在比特幣網(wǎng)絡(luò),必然會(huì)導(dǎo)致比特幣網(wǎng)絡(luò)的擁堵,而粉塵攻擊最大的危害就是導(dǎo)致比特幣網(wǎng)絡(luò)擁堵。 小白:免手續(xù)費(fèi)?這怎么可能! 大東:是的,如果按著傳統(tǒng)記賬方法,也就是轉(zhuǎn)賬數(shù)額大,需要的手續(xù)費(fèi)就多。但是,比特幣的記賬方法不同,它是按照交易字節(jié)數(shù)來(lái)收取手續(xù)費(fèi)的。 小白:那怎樣才可以免手續(xù)費(fèi)呢?這肯定需要條件的吧! 大東:不錯(cuò),在比特幣交易手續(xù)費(fèi)的設(shè)計(jì)中,每一個(gè)交易都會(huì)分配一個(gè)優(yōu)先級(jí),這個(gè)優(yōu)先級(jí)是由幣齡、交易的字節(jié)數(shù)和交易的數(shù)量來(lái)決定的,交易數(shù)量越大、幣齡(這些幣在區(qū)塊中存在的時(shí)間)越高優(yōu)先級(jí)就越高,就越有機(jī)會(huì)免交易手續(xù)費(fèi)。如果你需要大量的小額比特幣轉(zhuǎn)賬,又想免費(fèi)轉(zhuǎn)出,這時(shí)候你可以加一個(gè)數(shù)額大的、幣齡高的比特幣金額,就會(huì)將平均優(yōu)先級(jí)提高,從而可以免費(fèi)轉(zhuǎn)出比特幣。 小白:粉塵攻擊簡(jiǎn)直魔鬼!用少量的代幣就可以將交易網(wǎng)絡(luò)擁堵。真是用最少的錢(qián)干最厲害的事! 大東:粉塵攻擊的危害不僅如此,還記得剛開(kāi)頭我說(shuō)的粉塵攻擊可以竊取用戶的隱私嗎? 小白:主要通過(guò)什么方式竊取呢? 大東:黑客們向用戶的錢(qián)包地址發(fā)送“粉塵”,一旦用戶使用這些“粉塵”,這些微小金額就和用戶未花費(fèi)的的交易輸出(UTXO)混合在一起,黑客就可以追蹤用戶的錢(qián)包地址,以獲得用戶的身份,然后通過(guò)用戶隱私來(lái)威脅用戶。 小白:如果這些用戶不接受這些“粉塵”,這樣的話隱私也就不會(huì)被竊取了吧? 大東:事實(shí)證明,很多用戶根本不在意這些微小金額的“粉塵”,并極有可能以后將這些“粉塵”與UTXO混合在一起,這導(dǎo)致粉塵攻擊的成功率相當(dāng)高。 小白:東哥,這個(gè)粉塵攻擊只能針對(duì)用戶未花費(fèi)的的交易輸出(UTXO)嗎? 大東:沒(méi)錯(cuò),粉塵攻擊只針對(duì)UTXO模型的幣種進(jìn)行,比特幣使用的交易模型就是UTXO模型。 小白:東哥,能不能詳細(xì)的講解一下上邊的竊取隱私的過(guò)程? 大東:舉個(gè)例子你就明白了,假如有個(gè)比特幣愛(ài)好者叫大黃,他在錢(qián)包的一個(gè)BTC地址上存了500 BTC,其它地址上還有一些較小數(shù)額的BTC,用來(lái)平時(shí)轉(zhuǎn)到交易所交易、購(gòu)物等。 大黃HD錢(qián)包的快照(圖片來(lái)源于網(wǎng)絡(luò)) ![]() 小白:那接下來(lái)UTXO是如何運(yùn)作的? 大東:假如大黃要發(fā)送3.2 BTC到交易所,(UTXO-2)+(UTXO-4)= 3.3 BTC將被發(fā)送。交易的找零(找零 = 實(shí)際發(fā)送的UTXO總和 -(實(shí)際發(fā)送需求+交易費(fèi)))將會(huì)返回到大黃HD錢(qián)包里的全新地址上。比如交易費(fèi)為0.005BTC,找零=3.3 -(3.2+0.005)=0.095 BTC將會(huì)被返回到大黃錢(qián)包新生產(chǎn)的地址-4中。 (圖片來(lái)源于網(wǎng)絡(luò)) ![]() 小白:為什么不選那個(gè)有500BTC的轉(zhuǎn)賬呢? 大東:只有最接近發(fā)送金額的UTXO會(huì)被選中發(fā)送。如果大黃想要交易的始終都是小數(shù)額的BTC,那么500 BTC(UTXO-1)始終不會(huì)被花費(fèi),存儲(chǔ)500 BTC的地址-1不會(huì)被關(guān)聯(lián)到其他有UTXO被花費(fèi)的地址。 小白:那粉塵攻擊是怎樣發(fā)揮作用的呢? 大東:假如有個(gè)叫小黑的人,盯上了大黃存有500 BTC的地址-1,想要找到大黃的真實(shí)身份,于是她往地址-1發(fā)了一筆粉塵交易(0.000005 BTC,通常一百聰以內(nèi)的交易我們視為粉塵)。即使是粉塵,它也是一筆UTXO! (圖片來(lái)源于網(wǎng)絡(luò)) ![]() 小白:然后呢? 大東:如果大黃沒(méi)有察覺(jué)到粉塵交易,并繼續(xù)與交易所交易、購(gòu)物、向朋友支付數(shù)字貨幣。只要粉塵UTXO-6沒(méi)有被選中發(fā)送,實(shí)際上沒(méi)有什么大問(wèn)題。可是不同的HD錢(qián)包是可以定義不同的UTXO排序規(guī)則的,一旦粉塵UTXO-6隨某筆交易被選中并廣播到區(qū)塊鏈,事情就不可小看了。 小白:如果粉塵被廣播到區(qū)塊鏈,會(huì)發(fā)生什么嚴(yán)重的事情? 大東:假設(shè)粉塵UTXO-6和地址-2 的UTXO-3一起被選中發(fā)送到交易所,那么小黑就能夠推斷,地址-1和地址-2的所有活動(dòng)都是同一人(大黃)所為,然后小黑可以從地址-2在鏈上的所有歷史交易、訪問(wèn)的商店、付款記錄、與交易所的交易記錄等信息中確認(rèn)大黃的真實(shí)身份。 (圖片來(lái)源于網(wǎng)絡(luò)) ![]() 小白:歸根結(jié)底這是利用了用戶不關(guān)心自己錢(qián)包出現(xiàn)的微小代幣心理,從而竊取用戶隱私。 大東:多年來(lái),計(jì)算機(jī)科學(xué)家們奉獻(xiàn)大量的時(shí)間研究如何檢測(cè)和預(yù)防粉塵攻擊,各個(gè)研究成果具備不同程度性的有效性。 小白:快講講怎么破解! 粉塵攻擊原理圖(圖片來(lái)源于網(wǎng)絡(luò)) ![]() 三、應(yīng)對(duì)粉塵攻擊 大東:一種方法為每筆交易使用不同的地址。每個(gè)BCH錢(qián)包都可以創(chuàng)建很多的地址,每個(gè)錢(qián)包上的余額是輸入和UTXO的總和。這意味著你的2個(gè)BCH可以用1、0.5、0.25和0.25這樣的增量來(lái)表示,以得到總金額。如此一來(lái)輸入地址和輸出地址就已經(jīng)混淆,割裂兩者的關(guān)系,在具體的使用過(guò)程中,一次交易可能包含多個(gè)輸入和輸出,輸入和輸出之間不再存在一對(duì)一的對(duì)應(yīng)關(guān)系。 小白:這樣的話就沒(méi)有辦法通過(guò)“粉塵”追蹤用戶的資金流動(dòng)從而獲取用戶的隱私了! 大東:只是這樣一來(lái)操作上有一定的復(fù)雜性,如今應(yīng)用廣泛的混幣服務(wù)就是基于此原理的服務(wù),只是大大簡(jiǎn)化了用戶操作,用戶只需要點(diǎn)擊服務(wù)選項(xiàng),即可一鍵混幣,后臺(tái)會(huì)自動(dòng)進(jìn)行。 小白:有沒(méi)有比較簡(jiǎn)單的方法? 大東:現(xiàn)在還有一種簡(jiǎn)單的方法是將這些受到污染的粉塵金額標(biāo)記并隔離起來(lái)。自交易初,用戶就能發(fā)現(xiàn)這些來(lái)路不明的小額資金,并且不去使用它,徹底隔離它。 小白:但是這種操作應(yīng)該對(duì)用戶來(lái)說(shuō)很難吧?畢竟很多用戶難以甄別攻擊,并且難以將他們與UTXO隔離開(kāi)來(lái)。 大東:不錯(cuò),所以現(xiàn)在市面上很多錢(qián)包商提供服務(wù)允許你在隨機(jī)發(fā)送的幾“聰”BCH中添加描述或“標(biāo)記”,你可以選擇不去理會(huì)這些粉塵,這樣粉塵攻擊就與未受污染的金額隔離開(kāi)來(lái)。 |