行業(yè)資訊
區(qū)塊鏈中的日蝕攻擊是什么?作為簡單的基礎(chǔ)攻擊,干擾被攻擊者網(wǎng)絡(luò)上的節(jié)點(diǎn)。日蝕攻擊(Eclipse Attack)是比特幣中的一種攻擊手段,最早在2015年于《Eclipse Attacks on Bitcoin's Peer-to-Peer Network》(比特幣的點(diǎn)對點(diǎn)網(wǎng)絡(luò)中的日蝕攻擊)一文中被提出。日蝕攻擊的手段不同于我們常見的51%攻擊,其表現(xiàn)為對特定節(jié)點(diǎn)或節(jié)點(diǎn)集群進(jìn)行網(wǎng)絡(luò)攻擊,讓網(wǎng)絡(luò)出現(xiàn)“分區(qū)”以此達(dá)到雙花等目的。想要理解日蝕攻擊并不難,只要對區(qū)塊鏈挖礦、交易和網(wǎng)絡(luò)結(jié)構(gòu)有所理解即可。
國外服務(wù)器免費(fèi)測試:http://www.ukunilife.com/cloud/usa.html
從表面上看,日蝕攻擊(Eclipse Attack)與女巫攻擊(Sybil Attack)相似。盡管它們具有某些相似之處(攻擊者通過攻擊節(jié)點(diǎn)擾亂網(wǎng)絡(luò)),但它們最終的攻擊目標(biāo)是不同的。日蝕攻擊的目標(biāo)是單個節(jié)點(diǎn)(原因?qū)⒃谙挛闹姓f明),而女巫攻擊的目標(biāo)是整個網(wǎng)絡(luò)范圍,旨在篡改網(wǎng)絡(luò)協(xié)議的信譽(yù)體系。
一、針對區(qū)塊鏈的日蝕攻擊在哪個階段?
我們以比特幣作為例子:
比特幣作為一個采用點(diǎn)對點(diǎn)網(wǎng)絡(luò)的區(qū)塊鏈應(yīng)用,礦工需要專用設(shè)備生成驗(yàn)證新區(qū)塊,但是非挖礦(或完整)節(jié)點(diǎn)僅需要非常小的算力即可運(yùn)行。通過這種方式,任何人都可以在廉價(jià)設(shè)備上運(yùn)營節(jié)點(diǎn),這也有助于比特幣的去中心化。軟件程序維護(hù)了與對等方同步的事務(wù)處理數(shù)據(jù)庫,以便與網(wǎng)絡(luò)保持同步。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)相互是平等的,相互之間也能無障礙地進(jìn)行溝通鏈接,當(dāng)然這只是理論情況。
實(shí)際上,由于網(wǎng)絡(luò)帶寬限制和算力分布限制,比特幣限制了單個節(jié)點(diǎn)可接收信息和主動鏈接其他節(jié)點(diǎn)的上限。對于接受信息,單個節(jié)點(diǎn)最多只能接收117個節(jié)點(diǎn)的信息;對于主動鏈接其他節(jié)點(diǎn),單個節(jié)點(diǎn)只能主動聯(lián)系其他8個節(jié)點(diǎn)。而日蝕攻擊的重點(diǎn)便是對單個節(jié)點(diǎn)所鏈接的和所接收的節(jié)點(diǎn)信息。
1、如果一個節(jié)點(diǎn)所接收信息的117個節(jié)點(diǎn)和對外鏈接的8個節(jié)點(diǎn)全部都是由惡意節(jié)點(diǎn)操控的話,相當(dāng)于該節(jié)點(diǎn)被惡意者所孤立,其所有接受的信息都受到攻擊者控制,這種情況我們便稱該節(jié)點(diǎn)遭受了“日蝕攻擊”,看起來和傳統(tǒng)安全領(lǐng)域的中間人攻擊類似。
2、如果惡意者可以控制更多的節(jié)點(diǎn),對更多的正常節(jié)點(diǎn)發(fā)起日蝕攻擊,那么惡意者將可以把比特幣網(wǎng)絡(luò)拆分為兩個不同的分區(qū),就像分叉一樣。
3、如果惡意者掌握了足夠的帶寬資源,且自身擁有全網(wǎng)40%的算力,它可以將比特幣網(wǎng)絡(luò)拆分為兩個分區(qū),假設(shè)兩個分區(qū)各占有全網(wǎng)30%的算力,惡意者不僅可以通過隔離兩個分區(qū)之間的信息溝通,并且還能依靠這40%的算力在兩個分區(qū)中都發(fā)起51%攻擊(惡意者在每個分區(qū)的算力占比都是4/7)。
4、如果惡意者只有網(wǎng)絡(luò)帶寬資源而沒有算力,依然可以實(shí)現(xiàn)雙花攻擊。假設(shè)惡意者通過日蝕攻擊將網(wǎng)絡(luò)拆分為兩個分區(qū),一個分區(qū)占有20%算力而另一個占有80%算力,此時(shí)惡意者在先在20%算力分區(qū)發(fā)起一次交易,同時(shí)也在80%分區(qū)發(fā)起一次轉(zhuǎn)賬給自己的交易。
在日蝕攻擊的影響下,兩個分區(qū)無法溝通,故只能依據(jù)自身所在分區(qū)的算力進(jìn)行挖礦,由于80%算力分區(qū)占有絕對算力優(yōu)勢,其區(qū)塊高度早晚會超過20%算力分區(qū),當(dāng)惡意者解除日蝕攻擊后,首先發(fā)送在20%分區(qū)上的交易將會因?yàn)樽铋L鏈原則被廢棄,而80%分區(qū)上的雙花交易則會被接受。惡意者通過日蝕攻擊完成了無需算力占比的雙花攻擊。
蝕攻擊并非理論上存在,在現(xiàn)實(shí)中也有過試驗(yàn)《Eclipse Attacks on Bitcoin's Peer-to-Peer Network》論文中便通過生成僵尸網(wǎng)絡(luò),利用IP地址對比特幣部分節(jié)點(diǎn)成功發(fā)起了近1小時(shí)的日蝕攻擊。盡管目前比特幣已經(jīng)根據(jù)論文團(tuán)隊(duì)意見對日蝕攻擊進(jìn)行了防護(hù),日蝕攻擊的風(fēng)險(xiǎn)仍然值得所有工作量證明區(qū)塊鏈考慮。
在日蝕攻擊中,攻擊者會確保目標(biāo)的所有連接都建立在攻擊者所控制的節(jié)點(diǎn)上。攻擊者將首先從自己的IP地址向目標(biāo)地址發(fā)送泛洪,受害者可能會在程序重啟時(shí)連接到攻擊者的IP地址。可以強(qiáng)制重啟(即對目標(biāo)進(jìn)行DDoS攻擊),或者僅等待程序自動重啟。
如果攻擊者通過消耗網(wǎng)絡(luò)節(jié)點(diǎn)的資源,能夠使其從網(wǎng)絡(luò)中分離,那么他們就有動機(jī)實(shí)施此類攻擊。如果節(jié)點(diǎn)被隔離了,攻擊者就可以實(shí)施幾次連續(xù)攻擊。
二、日蝕攻擊的核心元素:
對于區(qū)塊鏈的惡意攻擊,相信最為人熟知的便是51%攻擊——在工作量證明中,攻擊者擁有全網(wǎng)50%以上的算力便可通過雙重花費(fèi)行為進(jìn)行欺詐,實(shí)現(xiàn)對交易數(shù)據(jù)的“篡改”。這一點(diǎn)最早在比特幣的白皮書中便有所提及,一般人們也會認(rèn)為比特幣系統(tǒng)(乃至于大多數(shù)工作量證明區(qū)塊鏈)的安全算力閾值為51%,也讓礦工和用戶有意識的確保某一個體或集體不能控制比特幣50%以上的算力。
但實(shí)際上,比特幣的安全算力閾值并非50%而是33%,原因在于通過“自私挖礦”,礦工通過有意識地隱藏發(fā)掘出的區(qū)塊,可以將對網(wǎng)絡(luò)發(fā)起攻擊的門檻由50%降低到33%。
在自私挖礦中,只要惡意者的算力超過了全網(wǎng)的1/3(33%),那么其連續(xù)挖掘到兩個區(qū)塊的概率與其他人連續(xù)挖掘到兩個區(qū)塊的概率比值接近1/4。只要能嘗試在挖掘到第一個區(qū)塊時(shí)隱藏不廣播,當(dāng)你的算力超過了全網(wǎng)1/3時(shí),作惡就存在收益。自私挖礦不僅削弱了比特幣(也是工作量證明)的安全界限,由于該算力投入到了“私有鏈”的挖掘中,也削弱了整個網(wǎng)絡(luò)的算力上限。
降低區(qū)塊鏈網(wǎng)絡(luò)安全界限的方式除了自私挖礦外,另一種方案便是本文所提到的日蝕攻擊了。
三、防御日蝕攻擊的一些例子:
日蝕攻擊的例子有很多,日蝕攻擊對所有工作量證明區(qū)塊鏈都有影響,不僅僅是比特幣,以太坊也面臨日蝕攻擊的風(fēng)險(xiǎn)。