以太坊的節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制基于Kademlia
發(fā)布時(shí)間:2019/9/10 11:34:41 訪問(wèn)次數(shù):2099
以太坊的節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制基于Kademlia,但其目的卻不同,Kademlia旨在成為在分布式對(duì)等網(wǎng)絡(luò)中存儲(chǔ)和查找內(nèi)容的手段,而以太坊僅用于發(fā)現(xiàn)新的節(jié)點(diǎn)。由于以太坊的節(jié)點(diǎn)是由其公鑰表示的,并且不受IP限制,因此在一個(gè)機(jī)器上可以同時(shí)存在很多節(jié)點(diǎn)。攻擊者在很少的服務(wù)器上制作出很多的節(jié)點(diǎn),并積極的ping受害者的服務(wù)器。通過(guò)Kademlia協(xié)議,攻擊者的節(jié)點(diǎn)信息將存儲(chǔ)并填充在受害者節(jié)點(diǎn)列表中。下一步就是讓受害者重啟機(jī)器,手段包括斷電、ddos攻擊等等。重啟后,攻擊者再不停的ping被害者的節(jié)點(diǎn)以建立tcp連接,一旦被害者所有的tcp連接都是攻擊者制造的,那么就達(dá)到了把被害者與正常的網(wǎng)絡(luò)隔離的目的,當(dāng)然最大的目的應(yīng)該還是為了雙花。
網(wǎng)上有很多關(guān)于日蝕攻擊的詳細(xì)介紹,在這里不做贅述。
在剛才提到的論文中,提到了以太坊的geth1.8.0解決了日蝕攻擊,于是作者拿1.8.0和1.7.3做對(duì)比,理清了以太坊解決這個(gè)問(wèn)題的做法。
如果說(shuō)互聯(lián)網(wǎng)是信息的載體,那么區(qū)塊鏈就是價(jià)值的載體,所有的Money都存儲(chǔ)在網(wǎng)絡(luò)之上,早就被黑客們覬覦了很久。
不過(guò),幸運(yùn)的是,至今還沒(méi)有黑客可以攻破過(guò)比特幣的網(wǎng)絡(luò),使之癱瘓,簡(jiǎn)單的依靠算力來(lái)實(shí)施51%攻擊的話,成本大的驚人,而且攻破變得無(wú)利可圖。
除了我們所熟知的51%算力攻擊之外,其實(shí)還有一種叫作日蝕攻擊的存在,它的神奇之處在于并不需要大的算力便可以完成雙花攻擊。
那么,這是怎么一回事呢?
日蝕攻擊
波士頓大學(xué)副教授Sharon Goldberg曾發(fā)表過(guò)一篇題為“對(duì)以太坊點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)進(jìn)行的低資源日蝕攻擊”的論文,介紹了攻擊手法。
日蝕攻擊是來(lái)自網(wǎng)絡(luò)層的攻擊,它攻擊的點(diǎn)不是整個(gè)網(wǎng)絡(luò),不會(huì)使網(wǎng)絡(luò)癱瘓,而是單個(gè)或少數(shù)的節(jié)點(diǎn),使整個(gè)p2p網(wǎng)絡(luò)被隔離開(kāi)。
說(shuō)到這里,我們先了解什么是p2p網(wǎng)絡(luò)。
以上就是一個(gè)p2p網(wǎng)絡(luò),整個(gè)網(wǎng)絡(luò)是由一個(gè)一個(gè)對(duì)等的節(jié)點(diǎn)連續(xù)而成的,每個(gè)節(jié)點(diǎn)就是我們說(shuō)的一個(gè)區(qū)塊帳本。
那么,當(dāng)你啟動(dòng)一個(gè)新節(jié)點(diǎn)的時(shí)候,你是怎么知道這個(gè)網(wǎng)絡(luò)在哪,怎么加入網(wǎng)絡(luò)呢?
所以,在程序當(dāng)中有配置一些種子節(jié)點(diǎn)IP,通過(guò)這些種子節(jié)點(diǎn)IP建立TCP連接,然后再定期的與種子節(jié)點(diǎn)交換各自已連接的其它節(jié)點(diǎn)IP,這樣你就有可能連接到除種子節(jié)點(diǎn)以外的節(jié)點(diǎn)了。
同時(shí),每個(gè)節(jié)點(diǎn)都在本地維護(hù)了一個(gè)與自己連接的節(jié)點(diǎn)IP列表。
在交換節(jié)點(diǎn)列表中,其實(shí)就是很多不同策略的?梢噪S機(jī)找一個(gè)節(jié)點(diǎn)連接,也可以按一特定算法帥選出。其最好的結(jié)果當(dāng)然是要足夠的隨機(jī),分散化。
以太坊的節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制采用了Kademlia協(xié)議,也叫K桶算法,這個(gè)協(xié)議比較復(fù)雜,財(cái)神也是看了幾遍也沒(méi)看太懂。但是它用公鑰生成節(jié)點(diǎn)ID,并與其它節(jié)點(diǎn)采用異或取值計(jì)算節(jié)點(diǎn)與節(jié)點(diǎn)的邏輯距離,來(lái)分散在不同的桶子里。
它有一個(gè)缺點(diǎn)就是,與IP地址無(wú)關(guān)。因此一臺(tái)機(jī)器上便可以運(yùn)行很多的節(jié)點(diǎn)(作惡成本低),我們稱這些為“作惡節(jié)點(diǎn)”吧。作惡節(jié)點(diǎn)不斷的與某個(gè)受害節(jié)點(diǎn)相連接,然后把受害節(jié)點(diǎn)本地保存的列表中其它的IP都擠出去,
因?yàn)镵桶算法能保存的節(jié)點(diǎn)信息有限,當(dāng)受害節(jié)點(diǎn)的本地列表全部被替換為“作惡節(jié)點(diǎn)”的IP時(shí),那么就等于把這個(gè)節(jié)點(diǎn)與整個(gè)p2p網(wǎng)絡(luò)隔離開(kāi)了。
然后,只要受害節(jié)點(diǎn)重啟程序,它就會(huì)斷開(kāi)之前的連接,并在本地列表中選出部分節(jié)點(diǎn)進(jìn)行TCP連接,但是無(wú)論選誰(shuí),都是“作惡節(jié)點(diǎn)”。受害節(jié)點(diǎn)發(fā)出的所有交易信息,均只能發(fā)給作惡節(jié)點(diǎn),同時(shí)它接收的區(qū)塊也是作惡節(jié)點(diǎn)傳輸來(lái)的。
“日蝕攻擊”能造成哪些后果
如“日蝕攻擊”成功實(shí)施,那么惡意方就能“選擇受害者的挖礦能力并用它攻擊區(qū)塊鏈的共識(shí)算法”或者實(shí)現(xiàn)“雙花攻擊和自私挖礦”。
另外,研究人員解釋稱,“日蝕攻擊”能誘騙受害者查看不正確的以太網(wǎng)交易細(xì)節(jié)并誘騙賣家向攻擊者發(fā)送尚未完成交易的產(chǎn)品。
最后但并非最不重要的一點(diǎn)是,“日蝕攻擊”還能通過(guò)覆蓋被遮蔽節(jié)點(diǎn)的區(qū)塊鏈視圖針對(duì)以太坊合約發(fā)動(dòng)攻擊,從而延遲該節(jié)點(diǎn)對(duì)可能為智能合約內(nèi)部計(jì)算所使用的多種參數(shù)的視圖,導(dǎo)致產(chǎn)生遭攻擊者利用的不正確的智能合約內(nèi)容。
修復(fù)方案已發(fā)布
研究人員不僅發(fā)布了自己的研究成果,還和以太坊基金會(huì)一起默默地修復(fù)了這些問(wèn)題。
研究人員表示已經(jīng)推薦了多種應(yīng)對(duì)措施,而且開(kāi)發(fā)人員已經(jīng)將其中一些建議應(yīng)用在了兩周前發(fā)布的在以太坊節(jié)點(diǎn)上運(yùn)行的軟件geth 1.8.0上。
這些應(yīng)對(duì)措施雖然不能完全阻止“日蝕攻擊”,但它們把執(zhí)行此類攻擊所需的惡意節(jié)點(diǎn)數(shù)量從兩個(gè)增加到數(shù)千個(gè)。
更多詳情可查看由Marcus等人撰寫(xiě)的論文《針對(duì)以太坊對(duì)等網(wǎng)絡(luò)的低資源日蝕攻擊》。
下圖就是一個(gè)日蝕攻擊圖,受害節(jié)點(diǎn)連續(xù)的所有節(jié)點(diǎn)均來(lái)自作惡節(jié)點(diǎn)。
簡(jiǎn)單攻擊手法:便是直接黑了你的電腦,把你節(jié)點(diǎn)的配置文件給改了,讓你只能連接作惡節(jié)點(diǎn)。
復(fù)雜的辦法是:黑客知道你的IP地址后,不斷的用作惡節(jié)點(diǎn)與你建立連接,然后把你本地的K桶列表填滿,把其它正常的節(jié)點(diǎn)都擠出去了(漏洞),然后再ddos攻擊迫使你覺(jué)得電腦太卡了,一旦你重啟了便會(huì)重新連接其它節(jié)點(diǎn),但是從你的本地列表中選出來(lái)節(jié)點(diǎn)全是被感染的作惡節(jié)點(diǎn)。(這一切都是神不知鬼不覺(jué))
這時(shí),作惡節(jié)點(diǎn)只便可以構(gòu)造一些非法的交易,比如大額轉(zhuǎn)帳給受害節(jié)點(diǎn),并且傳給它后續(xù)的區(qū)塊,以讓受害節(jié)點(diǎn)以為區(qū)塊已經(jīng)被確認(rèn)了,以為自己收到ETH。
這時(shí),作惡節(jié)點(diǎn)仍可雙花這些ETH。受害節(jié)點(diǎn)連接的只是一個(gè)小的網(wǎng)絡(luò),與外面的帳本并不是同步的,但你發(fā)現(xiàn)的時(shí)候可能已經(jīng)晚了。
好在,這個(gè)漏洞被發(fā)現(xiàn)后,在Geth 1.8.1 版本后便修復(fù)了。
而比特幣網(wǎng)絡(luò)是否也存在日蝕攻擊呢?當(dāng)然,任何一個(gè)網(wǎng)絡(luò)都會(huì)存在日蝕攻擊。不過(guò)比特幣網(wǎng)絡(luò)需要大量真實(shí)擁有IP地址的節(jié)點(diǎn),攻擊才有效,這也就是說(shuō)攻擊成本依然很高。
所以,我們?cè)诮邮执箢~轉(zhuǎn)帳的時(shí)間,應(yīng)該去主流的區(qū)塊鏈瀏覽器當(dāng)中確認(rèn)一下是否到帳,不要以錢(qián)包接收成功為準(zhǔn)。在開(kāi)發(fā)主鏈的過(guò)程當(dāng)中,也應(yīng)該考慮到這一點(diǎn)。
免責(zé)聲明:
凡標(biāo)注“來(lái)源:互聯(lián)網(wǎng)轉(zhuǎn)載”的文章均來(lái)自其他媒體,轉(zhuǎn)載的目的在于傳遞更多信息,并不代表本站觀點(diǎn),圖片來(lái)源于網(wǎng)絡(luò)收集整理,版權(quán)歸原作者所有;如果發(fā)現(xiàn)本站有涉嫌抄襲,侵權(quán)內(nèi)容,請(qǐng)發(fā)送郵件:602684288@qq舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),立刻刪除涉嫌侵權(quán)內(nèi)容。
以太坊的節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制基于Kademlia,但其目的卻不同,Kademlia旨在成為在分布式對(duì)等網(wǎng)絡(luò)中存儲(chǔ)和查找內(nèi)容的手段,而以太坊僅用于發(fā)現(xiàn)新的節(jié)點(diǎn)。由于以太坊的節(jié)點(diǎn)是由其公鑰表示的,并且不受IP限制,因此在一個(gè)機(jī)器上可以同時(shí)存在很多節(jié)點(diǎn)。攻擊者在很少的服務(wù)器上制作出很多的節(jié)點(diǎn),并積極的ping受害者的服務(wù)器。通過(guò)Kademlia協(xié)議,攻擊者的節(jié)點(diǎn)信息將存儲(chǔ)并填充在受害者節(jié)點(diǎn)列表中。下一步就是讓受害者重啟機(jī)器,手段包括斷電、ddos攻擊等等。重啟后,攻擊者再不停的ping被害者的節(jié)點(diǎn)以建立tcp連接,一旦被害者所有的tcp連接都是攻擊者制造的,那么就達(dá)到了把被害者與正常的網(wǎng)絡(luò)隔離的目的,當(dāng)然最大的目的應(yīng)該還是為了雙花。
網(wǎng)上有很多關(guān)于日蝕攻擊的詳細(xì)介紹,在這里不做贅述。
在剛才提到的論文中,提到了以太坊的geth1.8.0解決了日蝕攻擊,于是作者拿1.8.0和1.7.3做對(duì)比,理清了以太坊解決這個(gè)問(wèn)題的做法。
如果說(shuō)互聯(lián)網(wǎng)是信息的載體,那么區(qū)塊鏈就是價(jià)值的載體,所有的Money都存儲(chǔ)在網(wǎng)絡(luò)之上,早就被黑客們覬覦了很久。
不過(guò),幸運(yùn)的是,至今還沒(méi)有黑客可以攻破過(guò)比特幣的網(wǎng)絡(luò),使之癱瘓,簡(jiǎn)單的依靠算力來(lái)實(shí)施51%攻擊的話,成本大的驚人,而且攻破變得無(wú)利可圖。
除了我們所熟知的51%算力攻擊之外,其實(shí)還有一種叫作日蝕攻擊的存在,它的神奇之處在于并不需要大的算力便可以完成雙花攻擊。
那么,這是怎么一回事呢?
日蝕攻擊
波士頓大學(xué)副教授Sharon Goldberg曾發(fā)表過(guò)一篇題為“對(duì)以太坊點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)進(jìn)行的低資源日蝕攻擊”的論文,介紹了攻擊手法。
日蝕攻擊是來(lái)自網(wǎng)絡(luò)層的攻擊,它攻擊的點(diǎn)不是整個(gè)網(wǎng)絡(luò),不會(huì)使網(wǎng)絡(luò)癱瘓,而是單個(gè)或少數(shù)的節(jié)點(diǎn),使整個(gè)p2p網(wǎng)絡(luò)被隔離開(kāi)。
說(shuō)到這里,我們先了解什么是p2p網(wǎng)絡(luò)。
以上就是一個(gè)p2p網(wǎng)絡(luò),整個(gè)網(wǎng)絡(luò)是由一個(gè)一個(gè)對(duì)等的節(jié)點(diǎn)連續(xù)而成的,每個(gè)節(jié)點(diǎn)就是我們說(shuō)的一個(gè)區(qū)塊帳本。
那么,當(dāng)你啟動(dòng)一個(gè)新節(jié)點(diǎn)的時(shí)候,你是怎么知道這個(gè)網(wǎng)絡(luò)在哪,怎么加入網(wǎng)絡(luò)呢?
所以,在程序當(dāng)中有配置一些種子節(jié)點(diǎn)IP,通過(guò)這些種子節(jié)點(diǎn)IP建立TCP連接,然后再定期的與種子節(jié)點(diǎn)交換各自已連接的其它節(jié)點(diǎn)IP,這樣你就有可能連接到除種子節(jié)點(diǎn)以外的節(jié)點(diǎn)了。
同時(shí),每個(gè)節(jié)點(diǎn)都在本地維護(hù)了一個(gè)與自己連接的節(jié)點(diǎn)IP列表。
在交換節(jié)點(diǎn)列表中,其實(shí)就是很多不同策略的?梢噪S機(jī)找一個(gè)節(jié)點(diǎn)連接,也可以按一特定算法帥選出。其最好的結(jié)果當(dāng)然是要足夠的隨機(jī),分散化。
以太坊的節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制采用了Kademlia協(xié)議,也叫K桶算法,這個(gè)協(xié)議比較復(fù)雜,財(cái)神也是看了幾遍也沒(méi)看太懂。但是它用公鑰生成節(jié)點(diǎn)ID,并與其它節(jié)點(diǎn)采用異或取值計(jì)算節(jié)點(diǎn)與節(jié)點(diǎn)的邏輯距離,來(lái)分散在不同的桶子里。
它有一個(gè)缺點(diǎn)就是,與IP地址無(wú)關(guān)。因此一臺(tái)機(jī)器上便可以運(yùn)行很多的節(jié)點(diǎn)(作惡成本低),我們稱這些為“作惡節(jié)點(diǎn)”吧。作惡節(jié)點(diǎn)不斷的與某個(gè)受害節(jié)點(diǎn)相連接,然后把受害節(jié)點(diǎn)本地保存的列表中其它的IP都擠出去,
因?yàn)镵桶算法能保存的節(jié)點(diǎn)信息有限,當(dāng)受害節(jié)點(diǎn)的本地列表全部被替換為“作惡節(jié)點(diǎn)”的IP時(shí),那么就等于把這個(gè)節(jié)點(diǎn)與整個(gè)p2p網(wǎng)絡(luò)隔離開(kāi)了。
然后,只要受害節(jié)點(diǎn)重啟程序,它就會(huì)斷開(kāi)之前的連接,并在本地列表中選出部分節(jié)點(diǎn)進(jìn)行TCP連接,但是無(wú)論選誰(shuí),都是“作惡節(jié)點(diǎn)”。受害節(jié)點(diǎn)發(fā)出的所有交易信息,均只能發(fā)給作惡節(jié)點(diǎn),同時(shí)它接收的區(qū)塊也是作惡節(jié)點(diǎn)傳輸來(lái)的。
“日蝕攻擊”能造成哪些后果
如“日蝕攻擊”成功實(shí)施,那么惡意方就能“選擇受害者的挖礦能力并用它攻擊區(qū)塊鏈的共識(shí)算法”或者實(shí)現(xiàn)“雙花攻擊和自私挖礦”。
另外,研究人員解釋稱,“日蝕攻擊”能誘騙受害者查看不正確的以太網(wǎng)交易細(xì)節(jié)并誘騙賣家向攻擊者發(fā)送尚未完成交易的產(chǎn)品。
最后但并非最不重要的一點(diǎn)是,“日蝕攻擊”還能通過(guò)覆蓋被遮蔽節(jié)點(diǎn)的區(qū)塊鏈視圖針對(duì)以太坊合約發(fā)動(dòng)攻擊,從而延遲該節(jié)點(diǎn)對(duì)可能為智能合約內(nèi)部計(jì)算所使用的多種參數(shù)的視圖,導(dǎo)致產(chǎn)生遭攻擊者利用的不正確的智能合約內(nèi)容。
修復(fù)方案已發(fā)布
研究人員不僅發(fā)布了自己的研究成果,還和以太坊基金會(huì)一起默默地修復(fù)了這些問(wèn)題。
研究人員表示已經(jīng)推薦了多種應(yīng)對(duì)措施,而且開(kāi)發(fā)人員已經(jīng)將其中一些建議應(yīng)用在了兩周前發(fā)布的在以太坊節(jié)點(diǎn)上運(yùn)行的軟件geth 1.8.0上。
這些應(yīng)對(duì)措施雖然不能完全阻止“日蝕攻擊”,但它們把執(zhí)行此類攻擊所需的惡意節(jié)點(diǎn)數(shù)量從兩個(gè)增加到數(shù)千個(gè)。
更多詳情可查看由Marcus等人撰寫(xiě)的論文《針對(duì)以太坊對(duì)等網(wǎng)絡(luò)的低資源日蝕攻擊》。
下圖就是一個(gè)日蝕攻擊圖,受害節(jié)點(diǎn)連續(xù)的所有節(jié)點(diǎn)均來(lái)自作惡節(jié)點(diǎn)。
簡(jiǎn)單攻擊手法:便是直接黑了你的電腦,把你節(jié)點(diǎn)的配置文件給改了,讓你只能連接作惡節(jié)點(diǎn)。
復(fù)雜的辦法是:黑客知道你的IP地址后,不斷的用作惡節(jié)點(diǎn)與你建立連接,然后把你本地的K桶列表填滿,把其它正常的節(jié)點(diǎn)都擠出去了(漏洞),然后再ddos攻擊迫使你覺(jué)得電腦太卡了,一旦你重啟了便會(huì)重新連接其它節(jié)點(diǎn),但是從你的本地列表中選出來(lái)節(jié)點(diǎn)全是被感染的作惡節(jié)點(diǎn)。(這一切都是神不知鬼不覺(jué))
這時(shí),作惡節(jié)點(diǎn)只便可以構(gòu)造一些非法的交易,比如大額轉(zhuǎn)帳給受害節(jié)點(diǎn),并且傳給它后續(xù)的區(qū)塊,以讓受害節(jié)點(diǎn)以為區(qū)塊已經(jīng)被確認(rèn)了,以為自己收到ETH。
這時(shí),作惡節(jié)點(diǎn)仍可雙花這些ETH。受害節(jié)點(diǎn)連接的只是一個(gè)小的網(wǎng)絡(luò),與外面的帳本并不是同步的,但你發(fā)現(xiàn)的時(shí)候可能已經(jīng)晚了。
好在,這個(gè)漏洞被發(fā)現(xiàn)后,在Geth 1.8.1 版本后便修復(fù)了。
而比特幣網(wǎng)絡(luò)是否也存在日蝕攻擊呢?當(dāng)然,任何一個(gè)網(wǎng)絡(luò)都會(huì)存在日蝕攻擊。不過(guò)比特幣網(wǎng)絡(luò)需要大量真實(shí)擁有IP地址的節(jié)點(diǎn),攻擊才有效,這也就是說(shuō)攻擊成本依然很高。
所以,我們?cè)诮邮执箢~轉(zhuǎn)帳的時(shí)間,應(yīng)該去主流的區(qū)塊鏈瀏覽器當(dāng)中確認(rèn)一下是否到帳,不要以錢(qián)包接收成功為準(zhǔn)。在開(kāi)發(fā)主鏈的過(guò)程當(dāng)中,也應(yīng)該考慮到這一點(diǎn)。
免責(zé)聲明:
凡標(biāo)注“來(lái)源:互聯(lián)網(wǎng)轉(zhuǎn)載”的文章均來(lái)自其他媒體,轉(zhuǎn)載的目的在于傳遞更多信息,并不代表本站觀點(diǎn),圖片來(lái)源于網(wǎng)絡(luò)收集整理,版權(quán)歸原作者所有;如果發(fā)現(xiàn)本站有涉嫌抄襲,侵權(quán)內(nèi)容,請(qǐng)發(fā)送郵件:602684288@qq舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),立刻刪除涉嫌侵權(quán)內(nèi)容。
熱門(mén)點(diǎn)擊
- 顯示技術(shù)中的顯示器件種類繁多,
- IC 7400工作及其應(yīng)用
- 數(shù)據(jù)采集系統(tǒng)是智能儀器的重要組成部分
- 華為手機(jī)芯片一部分是自己生產(chǎn)的稱為“華為麒麟
- 零序電容電流補(bǔ)償法
- 差分對(duì)的詳細(xì)分析線電感和電容的分析
- 各種電子電路都需要直流電源供電
- 2020年,中國(guó)芯片產(chǎn)業(yè)與國(guó)際先進(jìn)水平之間的
- 邏輯分析儀的分類
- OPT3007超薄環(huán)境光傳感器
推薦技術(shù)資料
- 單片機(jī)版光立方的制作
- N視頻: http://v.youku.comN_sh... [詳細(xì)]
- Nuclei lntellig
- RISC-V子系統(tǒng)模式技術(shù)結(jié)構(gòu)
- 物理量子比特量子芯片Willo
- MPS電源管理一站式解決方案詳情
- 薄緩沖層AlGaN/GaN外延
- 2024年全球第三代半導(dǎo)體行業(yè)十大事件
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究