国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

區(qū)塊鏈中硬分叉期間的防御方案

2019-05-17 02:45:00袁超
現(xiàn)代計算機(jī) 2019年9期
關(guān)鍵詞:攻擊者比特粉塵

袁超

(四川大學(xué)電子信息學(xué)院,成都610065)

1 介紹

區(qū)塊鏈技術(shù)近年來得到迅速的發(fā)展和廣泛的應(yīng)用。作為區(qū)塊鏈技術(shù)的底層實(shí)現(xiàn),中本聰提出的分布式記賬系統(tǒng)比特幣,可以在無權(quán)限設(shè)置的情況下利用POW(工作量證明)達(dá)成共識。但是比特幣的缺點(diǎn)也很明顯,在比特幣中,塊大小限制為1MB,平均塊挖掘時間為10分鐘。單個事務(wù)的大小在200字節(jié)到1K字節(jié)之間。在這些限制下,比特幣每秒只能驗(yàn)證3-7個事務(wù)[1],存在嚴(yán)重的網(wǎng)絡(luò)擁堵情況。為了解決該問題,一方面,比特幣Core開發(fā)組提出了隔離驗(yàn)證[2]和閃電網(wǎng)絡(luò)[3]鎖定區(qū)塊大小為1M的解決方案,另一方面,BitcoinABC開發(fā)組認(rèn)為隔離驗(yàn)證和閃電網(wǎng)絡(luò)確實(shí)是不錯的技術(shù),但并不是成熟的技術(shù),解決不了現(xiàn)階段比特幣網(wǎng)絡(luò)擁堵的問題。把區(qū)塊大小鎖定為1M也讓主鏈變得毫無價值,閃電網(wǎng)絡(luò)也會導(dǎo)致非常嚴(yán)重的中心化問題。主張將區(qū)塊大小進(jìn)行擴(kuò)容,將區(qū)塊上限由1MB提升為32MB。然而這些大區(qū)塊支持者中的激進(jìn)派發(fā)現(xiàn)在比特幣上實(shí)現(xiàn)大區(qū)塊無望,Core開發(fā)組是不會做出妥協(xié)的。一些開發(fā)者決定在2017年8月1日對比特幣進(jìn)行硬分叉創(chuàng)造一種新型的數(shù)字貨幣——比特幣現(xiàn)金B(yǎng)CH。BCH修改了比特幣的代碼,刪除了隔離驗(yàn)證(SegWit),取消了區(qū)塊大小1M的限制,提升了交易速度、降低轉(zhuǎn)賬費(fèi)用。這產(chǎn)生了比特幣的第一次硬分叉,并誕生了BCH(比特幣現(xiàn)金)。

歷史總是有驚人的相似之處,僅僅15個月后,BCH的硬分叉也已經(jīng)到來。實(shí)際上,這兩次硬分叉,都是源于社區(qū)的分裂。而兩次社區(qū)分裂的背后,都是改革派與“原教旨主義派”之爭。這一次改革派,是比特大陸為首的Bitcoin ABC社群陣營?!霸讨贾髁x派”,是CSW(Craig Steven Wright)主導(dǎo)的Bitcoin SV社群陣營。比特大陸投資的Bitcoin ABC開發(fā)團(tuán)隊(duì)認(rèn)為,在維持區(qū)塊大小在32MB的情況下,應(yīng)該讓BCH往基礎(chǔ)建設(shè)公鏈發(fā)展。這樣一來,BCH便能像以太坊一樣,開拓出更多應(yīng)用場景。以CSW主導(dǎo)的Bitcoin SV社群陣營,則希望BCH仍像當(dāng)年中本聰論文描述的那樣,對操作碼嚴(yán)格限制,專注在轉(zhuǎn)賬交易本身,并希望將區(qū)塊最終擴(kuò)容為128MB。最終,BCH于11月16日進(jìn)行了分叉創(chuàng)建出bchabc和bchsv兩條平行的區(qū)塊鏈,然而過程并不順利,在分叉期間整個區(qū)塊充斥著粉塵交易攻擊,會影響礦池的內(nèi)存池,從而導(dǎo)致大量的事務(wù)堆積和更高的采礦費(fèi)。更為嚴(yán)重的是重放交易攻擊。是主鏈分叉時候出現(xiàn)的一種特殊情況,分叉中兩條鏈上的地址和私鑰算法相同,交易格式也完全相同,導(dǎo)致在其中一條鏈上的交易在另一條鏈上很可能是完全合法的。所以當(dāng)在其中一條鏈上發(fā)起的交易,放到另一條鏈上去重新廣播,可能也會得到確認(rèn)。導(dǎo)致同一筆數(shù)字貨幣產(chǎn)生了兩次交易。

現(xiàn)有的研究中目前存在的論文主要是針對51%攻擊造成的重放攻擊,并提出解決方案,對于分叉過程中的重放攻擊最直接的方法就是分叉后對不同的鏈上的財產(chǎn)進(jìn)行轉(zhuǎn)移,不要存在分叉前的地址里。對于警惕性較低的用戶目前存在較大的威脅。

對于粉塵攻擊,現(xiàn)有的研究中暫未出現(xiàn)相關(guān)的論文,解決粉塵攻擊需要礦工們達(dá)成共識,拒絕打包交易量過低的垃圾交易,為了區(qū)塊鏈的價值更多地打包有意義的交易。然而目前并沒有一套有效的共識方案來解決這個問題。為了區(qū)塊鏈的健康發(fā)展,需要對礦工節(jié)點(diǎn)進(jìn)行改進(jìn)。

2 硬分叉期間的攻擊

2. 1 重放攻擊

2008年,中本聰提出一種完全通過點(diǎn)對點(diǎn)技術(shù)實(shí)現(xiàn)的電子現(xiàn)金系統(tǒng)(比特幣)。該方案的核心價值在于基于工作量證明的解決方案,使現(xiàn)金系統(tǒng)在點(diǎn)對點(diǎn)環(huán)境下運(yùn)行,并能夠防止雙花攻擊。如今比特幣已經(jīng)誕生十年,大量數(shù)字貨幣誕生,但對雙花攻擊的討論仍然停留在比特幣51%攻擊上。研究發(fā)現(xiàn),數(shù)字貨幣雙花攻擊還有很多種形式。本文介紹硬分叉途中產(chǎn)生的雙花攻擊,即區(qū)塊鏈上的重放攻擊,如:在BCH分叉完成后,BCH ABC公鏈出現(xiàn)3筆總計超5,000萬USDT超大額轉(zhuǎn)賬。凌晨02:41,開頭為qqfq7hhtp的地址向開頭為qzemyvck5的地址轉(zhuǎn)帳48009枚BCH;凌晨3點(diǎn)13分,開頭為qzdr8muc9的地址收到開頭為qr8e7zcay等地址轉(zhuǎn)來的80000枚BCH。值得一提的是,安全人員監(jiān)測到這兩筆大額轉(zhuǎn)賬在BCH SV公鏈上存在同樣交易,并且第一筆的交易哈希值完全一樣。此次雙花攻擊并沒有調(diào)用51%的算力,但是依舊會產(chǎn)生雙花。與區(qū)塊鏈內(nèi)發(fā)生的重放攻擊51%攻擊不同,這是存在分叉幣的情況下才會出現(xiàn)的重放攻擊。在進(jìn)行分叉產(chǎn)生新幣之后,代碼修改較少,導(dǎo)致在其中一條鏈上的交易在另一條鏈上很可能是完全合法的。所以在其中一條鏈上發(fā)起的交易,攻擊者可以復(fù)制到另一條鏈上重新廣播,也會得到確認(rèn)。這就是區(qū)塊鏈特色的“重放攻擊”。

2. 2 重放攻擊攻擊模型

普通用戶在主鏈分叉為兩條鏈時,同時擁有兩條鏈的資產(chǎn),分叉鏈上的重放攻擊可能導(dǎo)致一條鏈上的資產(chǎn)被盜取。在交易所中的分叉幣之間,不斷存取一種幣,可能會導(dǎo)致另一種分叉幣無故流失,這也可以通過重放攻擊實(shí)現(xiàn)。圖1描述了對用戶賬戶的重放攻擊。

圖1 在分叉鏈上進(jìn)行的重放攻擊

由于硬分叉的特性,普通的用戶賬戶會得到空投的分叉代幣,攻擊者通過在分叉區(qū)塊鏈上重放交易,從而在未經(jīng)用戶許可的情況下獲取用戶的分叉代幣。

2. 3 粉塵攻擊

在觀察區(qū)塊鏈BCH分叉過程中,除了重放攻擊外,還存在一種區(qū)塊鏈的攻擊——粉塵攻擊,惡意用戶使用低價值的粉塵交易充斥網(wǎng)絡(luò),使礦工的mempool被快速占用,導(dǎo)致新的正常交易轉(zhuǎn)發(fā)到礦工節(jié)點(diǎn)時無法處理,造成區(qū)塊的長時間堵塞;與此同時,為了搶占交易被打包的機(jī)會,市場會自發(fā)抬高交易手續(xù)費(fèi)。

由區(qū)塊鏈瀏覽器數(shù)據(jù)顯示,BCH在區(qū)塊高度556767處發(fā)生分叉。由于持續(xù)不斷的粉塵攻擊,區(qū)塊大小明顯擴(kuò)大,礦工節(jié)點(diǎn)mempool和采礦費(fèi)大小呈正相關(guān)擴(kuò)大。通過繪制圖來說明交易數(shù)量,mempool大小和平均交易費(fèi)的關(guān)系,顯示攻擊的效果。這些數(shù)據(jù)是通過爬取2018年11月6號556734區(qū)塊到556833 bch區(qū)塊瀏覽器上記錄的區(qū)塊大小,支付給礦工平均費(fèi)用和mempool大小,通過簡化,數(shù)據(jù)范圍在[0-1],并繪制出交易數(shù),mempool和采礦費(fèi)的關(guān)系圖。如圖1所示。

從圖2中可以看出粉塵攻擊造成的高交易數(shù)和mempool大小、采礦費(fèi)正相關(guān)??梢钥闯龇蹓m攻擊造成的影響是合法的用戶提出的交易在攻擊期間將支出更高的采礦費(fèi),此外還會導(dǎo)致整個區(qū)塊的堵塞,需要確認(rèn)的交易將由于區(qū)塊堵塞停留在區(qū)塊鏈中。

圖2 交易數(shù)、mempool和采礦費(fèi)

2. 4 粉塵攻擊模型

實(shí)現(xiàn)粉塵攻擊有多重手段,有的是作為交易的發(fā)起者,在全網(wǎng)發(fā)送很多手續(xù)費(fèi)高,但是轉(zhuǎn)賬金額非常小的無意義交易,礦工就會優(yōu)先打包這些交易,從而堵塞區(qū)塊鏈,此攻擊成本較高,技術(shù)要求較低,此次硬分叉期間就存在大量的高手續(xù)費(fèi)的無意義交易。還有一種成本較低的攻擊方案,攻擊者擁有比特幣網(wǎng)絡(luò)中的一個完整節(jié)點(diǎn),在其機(jī)器上有完整的區(qū)塊鏈和一個mempool,假設(shè)攻擊者錢包中的余額足夠大,可以分成大量的小額交易,每個小額交易都能支付采礦費(fèi)。攻擊者還控制了一組sybils賬戶(被惡意操控進(jìn)行協(xié)同攻擊的虛假賬戶),每個賬戶都有多個公共地址,攻擊者和sybil賬戶知道彼此的公共地址。此外攻擊者和sybils有客戶端軟件和腳本[1]能夠發(fā)起大量的“原始交易”[2]。當(dāng)具備這些條件后,將完整節(jié)點(diǎn)中挖掘出來的交易都分散輸入進(jìn)sybil的UTXO(未花費(fèi)的交易輸出)里,然后,所有的sybil賬戶都會生成“原始交易”以最小的價值進(jìn)行相互交換。交易率將遠(yuǎn)遠(yuǎn)高于網(wǎng)絡(luò)的吞吐量,導(dǎo)致交易積壓,從而增加了mempools的大小。

3 硬分叉期間的防護(hù)

3. 1 重放攻擊的解決方案

重放攻擊能成功的關(guān)鍵在于,兩條分叉鏈的代碼修改較少,同一條交易可能在兩條鏈上都是合法的。

比較高效的解決方案是開啟重放保護(hù),通過添加隨機(jī)數(shù)、時間戳,或者流水號,在兩條鏈間形成保護(hù),讓一條鏈上的事務(wù)在另一條鏈上無效被識別,以確保兩條數(shù)據(jù)共享鏈保持獨(dú)立運(yùn)行狀態(tài),并防止兩鏈間出現(xiàn)相互多次識別的情況。所以在區(qū)塊鏈發(fā)生硬分叉時除了用戶對鏈上的財產(chǎn)進(jìn)行轉(zhuǎn)移之外,還可以通過開啟重放保護(hù)的方式防御。

3. 2 粉塵攻擊的防御方案

為了對抗粉塵攻擊,提出一系列對于采礦節(jié)點(diǎn)的改進(jìn)。當(dāng)采礦節(jié)點(diǎn)正常運(yùn)行時,接收incoming transactions并存入mempool,當(dāng)檢測到 incoming transactions異常增多時,不直接存入mempool,而是存入本地緩存,進(jìn)行篩選。由于不同區(qū)塊鏈的大小不同,能夠抵御粉塵攻擊的程度也不同,bch區(qū)塊最大容量8MB,大約是40000筆交易。btc區(qū)塊最大容量1MB,大約3000比交易。由于單筆交易大小范圍在100byte-4000byte不等,以區(qū)塊容量的變化速率作為是否受到粉塵攻擊的標(biāo)準(zhǔn),2018年11月6號發(fā)生粉塵攻擊開始時區(qū)塊556765至556767中交易數(shù)由952迅速變成13202后變成20861,區(qū)塊大小也由0.3MB迅速變成4MB,所以本防御方案設(shè)定當(dāng)檢測到區(qū)塊大小變化超過5倍時(倍數(shù)越小檢測越嚴(yán)格),判定為可能受到粉塵攻擊?;蛘邊^(qū)塊大小達(dá)到最大容量80%時判定可能受到了粉塵攻擊。同樣當(dāng)發(fā)現(xiàn)區(qū)塊大小變化縮小超過5倍,或者區(qū)塊小于最大容量20%時判斷為恢復(fù)到正常區(qū)塊狀態(tài)。當(dāng)判定疑似遭受粉塵攻擊時,將incoming transactions存入緩存,并篩選。

篩選方法上,首先檢測incoming transactions是否屬于無意義交易(發(fā)起人與接收人一致),如果屬于無意義在區(qū)塊擁堵結(jié)束前將不會轉(zhuǎn)入mempool,在剔除掉無意義交易之后,提出了三種進(jìn)一步篩選設(shè)計:基于費(fèi)用、基于確認(rèn)數(shù),以及基于驗(yàn)證碼的篩選設(shè)計。

(1)基于費(fèi)用的設(shè)計

在基于費(fèi)用的設(shè)計中,針對攻擊者的兩種攻擊策略,對轉(zhuǎn)發(fā)費(fèi)和采礦費(fèi)設(shè)置最低和最高的閾值,最低閾值可以通過允許接受低手續(xù)的粉塵交易來抵制攻擊者的策略,最終目的是將其挖掘到區(qū)塊中。最高閾值可以過濾掉高手續(xù)費(fèi)的粉塵交易來抵制攻擊者的策略,過濾掉攻擊者的粉塵交易,從而減少mempool的大小。主要設(shè)計流程如圖3所示。

圖3 基于費(fèi)用的設(shè)計

(2)基于確認(rèn)數(shù)的設(shè)計

在基于確認(rèn)值的設(shè)計中,主要針對的是攻擊者低手續(xù)費(fèi)的攻擊策略,如圖4所示對每個傳入的交易,計算其父交易的數(shù)量,設(shè)置average age并將其初始化為0,接下來,通過每個父交易的確認(rèn)數(shù)總和除以父交易的總數(shù)來計算事務(wù)的平均確認(rèn)數(shù)。對每個進(jìn)入的交易獲得平均確認(rèn)數(shù)之后,申請一個mempool上的最小平均確認(rèn)數(shù)過濾器,最小平均確認(rèn)數(shù)可以取任何大于0的數(shù)。根據(jù)比特幣開發(fā)者指南[3],確認(rèn)數(shù)為6時被認(rèn)為是最合適的。任何交易只有滿足最小平均確認(rèn)數(shù),才會被mempool接收。通過這種方式攻擊者控制的采礦節(jié)點(diǎn)和Sybil節(jié)點(diǎn)生成的所有未確認(rèn)交易將會被mempool拒絕,如果攻擊者仍想要對網(wǎng)絡(luò)進(jìn)行粉塵攻擊,將不得不開采自己發(fā)出的所有交易并等待獲得符合要求的確認(rèn)值。因此,這增加了攻擊的成本并且減少了可以發(fā)起攻擊的時間窗口。

圖4 基于確認(rèn)年齡的設(shè)計

(3)基于驗(yàn)證碼的設(shè)計

在基于驗(yàn)證碼的設(shè)計中,主要是針對攻擊腳本的防御,當(dāng)采礦節(jié)點(diǎn)接收到由普通賬戶發(fā)起的交易時,為了保證是用戶發(fā)起而不是攻擊腳本批量發(fā)起,需要向賬戶客戶端發(fā)送6位的隨機(jī)驗(yàn)證碼,只要用戶接收到驗(yàn)證碼并將驗(yàn)證碼正確的返回給采礦節(jié)點(diǎn),采礦節(jié)點(diǎn)便將交易轉(zhuǎn)入mempool。通過添加一步驗(yàn)證碼的方法,使攻擊者的腳本失效,從而使攻擊者發(fā)起的粉塵攻擊無法進(jìn)入mempool。流程設(shè)計如圖5所示。

圖5 基于驗(yàn)證碼的設(shè)計

3. 3 實(shí)驗(yàn)和結(jié)果

進(jìn)行了三個實(shí)驗(yàn)分別測試三種方案的防御效果。生成了1800個符合區(qū)塊鏈格式的交易,其中300個是發(fā)起者等于接收者的無意義交易,300個是高額采礦費(fèi)率的惡意占用區(qū)塊資源的交易,300個是以最低費(fèi)率惡意占用mempool的交易,剩余的900個合法交易采礦費(fèi)分布在最小和最大采礦費(fèi)的范圍內(nèi)。

使用混淆矩陣,把合法交易定義為正面,惡意交易定義為負(fù)面,分別統(tǒng)計了不同采礦費(fèi)率下,不同平均年齡下的TP TN FN FP并計算出精準(zhǔn)度,準(zhǔn)確率和召回率,如圖6-圖8。

圖6 基于采礦費(fèi)的設(shè)計

圖7 基于平均年齡的設(shè)計

圖8 基于驗(yàn)證碼的設(shè)計

在丟棄粉塵攻擊數(shù)量上,基于驗(yàn)證碼的設(shè)計效果最好,并且對合法用戶影響最小,但是實(shí)現(xiàn)較麻煩,需要同時改進(jìn)采礦節(jié)點(diǎn)和SPV錢包節(jié)點(diǎn)。

在設(shè)計上更容易實(shí)現(xiàn)的是基于采礦費(fèi)的設(shè)計和基于平均年齡的設(shè)計。當(dāng)攻擊不嚴(yán)重時,基于費(fèi)用的設(shè)計在mempool大小的優(yōu)化中更有效,但是,會影響攻擊者和合法用戶。當(dāng)攻擊嚴(yán)重時,基于時間的設(shè)計幫助合法用戶同時丟棄最大量的粉塵交易更有效。

4 結(jié)語

在本文中,提出了區(qū)塊鏈硬分叉中的重放攻擊和粉塵攻擊,其中重放攻擊最有效的應(yīng)對方法是在硬分叉前通過隨機(jī)數(shù)、時間戳,或者流水號區(qū)分開兩條區(qū)塊鏈。對于粉塵攻擊設(shè)計了三種防御方案,其中基于驗(yàn)證碼的設(shè)計,對粉塵攻擊防御效果最好,但兼容性較差。相對兼容性較好的基于費(fèi)用的設(shè)計和基于平均年齡的設(shè)計中,當(dāng)攻擊不嚴(yán)重時基于費(fèi)用的設(shè)計防御效果更有效,但是會影響正常用戶,相反當(dāng)攻擊嚴(yán)重時,基于時間的設(shè)計防御效果更有效。

猜你喜歡
攻擊者比特粉塵
高壓粉塵防爆電機(jī)過厚粉塵層的形成與分析
基于微分博弈的追逃問題最優(yōu)策略設(shè)計
粉塵大戰(zhàn)
正面迎接批判
愛你(2018年16期)2018-06-21 03:28:44
光散射法粉塵儀在超低排放的應(yīng)用
比特幣還能投資嗎
海峽姐妹(2017年10期)2017-12-19 12:26:20
比特幣分裂
比特幣一年漲135%重回5530元
銀行家(2017年1期)2017-02-15 20:27:20
有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
粉塵爆炸不可小覷
南京市| 东乌珠穆沁旗| 南和县| 永吉县| 赤峰市| 隆林| 金阳县| 广丰县| 迁西县| 陆丰市| 镶黄旗| 邵阳市| 河津市| 洱源县| 建平县| 沙坪坝区| 常州市| 吉首市| 资源县| 凌云县| 信宜市| 红原县| 大新县| 鲁甸县| 瓮安县| 毕节市| 枣阳市| 东台市| 富川| 平南县| 无为县| 沧州市| 贵定县| 泗洪县| 萨迦县| 虎林市| 壤塘县| 托里县| 通辽市| 襄汾县| 陵川县|