日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

浅谈几种区块链网络攻击以及防御方案之日蚀攻击

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈几种区块链网络攻击以及防御方案之日蚀攻击 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

舊博文,搬到 csdn
原文:http://rebootcat.com/2020/04/12/network_attack_of_blockchain_eclipse_attack/

寫在前面的話

自比特幣誕生到現在,比特幣(網絡)經歷過大大小小非常多次的攻擊,尤其在比特幣誕生之初的幾年,并且隨著比特幣價格的一路飆漲,黑客針對比特幣網絡的攻擊就一直沒有停止過。據估算,目前大約有 350 ~ 400 萬比特幣永久丟失,價值大約 240 ~ 280 億美元。當然其中不只有由于黑客的攻擊導致的丟失,畢竟比特幣最初的幾年很多人都沒有意識到比特幣的價值,很多的私鑰都遺失了。

本文就談一下目前幾種區塊鏈網絡攻擊,以及其防御方案。

本文盡量用簡單易懂的白話來描述,也僅代表我個人的看法,歡迎探討

同系列:

  • 淺談幾種區塊鏈網絡攻擊以及防御方案之51%攻擊
  • 淺談幾種區塊鏈網絡攻擊以及防御方案之日蝕攻擊
  • 淺談幾種區塊鏈網絡攻擊以及防御方案之女巫攻擊
  • 淺談幾種區塊鏈網絡攻擊以及防御方案之拒絕服務攻擊
  • 淺談幾種區塊鏈網絡攻擊以及防御方案之其它網絡攻擊

日蝕攻擊(Eclipse Attack)

P2P 網絡

概念

在介紹什么是日蝕攻擊之前,有必要先對區塊鏈系統的底層 P2P 網絡做一個簡單的介紹,因為日蝕攻擊就是利用了 P2P 網絡的特性來進行的攻擊。

P2P 即 Peer to Peer,中文意思是對等網絡,它是分布式系統和計算機網絡相結合的產物。對等的意思就是網絡中的節點角色、地位是平等的,任何節點具有極強的自由,可以任意加入、離開網絡。這跟傳統的 C/S 模型的結構有很大區別,任何節點既是 client ,也是 server,或者說網絡中沒有 server 節點,任何節點 down 掉不會對整個網絡產生致命的影響,具有極強的伸縮性。

P2P 網絡從誕生到現在經過了幾個階段,分別是混合式 P2P,無結構化 P2P以及結構化 P2P。

  • 混合式:顧名思義,P2P 網絡混合了傳統的 C/S 模型,網絡中有角色充當 server 角色
  • 無結構化:也就是網狀結構模型,純分布式網絡,典型代表就是比特幣網絡,節點之間以一種隨機的,松散的方式組織在一起
  • 結構化:節點按照一定規則組織在一起,路由算法比較精準,比如 DHT 算法

混合式

無結構化
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL3NtYXVneC9NeWJsb2dJbWdIb3N0aW5nL3JlYm9vdGNhdC9uZXR3b3JrX2F0dGFja19vZl9ibG9ja2NoYWluX2VjbGlwc2VfYXR0YWNrLzMucG5n?x-oss-process=image/format,png)
結構化(kademlia算法)

路由表(鄰居表)

P2P 網絡里一個比較重要的概念就是路由表,或者說鄰居表。路由表里面保存了網絡里面的一些節點,具體數量從幾個到幾十個不等。路由表中的這些節點可以看做是這個節點與這個 P2P 網絡建立關聯的重要依據,或者說表示節點到這個 P2P 網絡的一些入口。這個節點想要發送任何信息需要先轉發給路由表中的節點,再由它們負責轉發消息。這就是路由表的作用。

那么無論是哪一種結構的 P2P 網絡,每個節點都有一個類似于路由表的概念,本質上就是跟這個網絡中的多個節點建立了一些聯系,然后后續的所有收發包都交由這些鄰居代為收發。

所以對于 P2P 網絡里的一個節點來說,它看不到網絡的全貌,只能看到網絡的局部信息。并且由于路由表的存在,哪怕路由表中只保存了一個入口節點,這個節點也能服務于整個 P2P 網絡,其他節點也能通過一定的方式找到這個節點。

NAT 穿透

NAT 穿透不是 P2P 網絡的一個必要特性,如果 P2P 網絡中都是公網節點(具有公網IP),其實是不需要 NAT 穿透的。那么如果有一些私網節點(局域網節點)也加入到了這個 P2P 網絡中,由于不能互通,導致其他節點無法發現這些私網節點,最后帶來的結果就是這個私網節點能夠成功發送信息到這個 P2P 網絡中,但是可能卻無法收到來自 P2P 網絡里的消息。注意這里的用詞是可能,因為存在一些場景是有可能收到的。

關于 NAT 穿透我有另外的博客介紹 NAT 穿透方面的東西,這里就不做展開講了。

什么是日蝕攻擊

上面介紹了關于 P2P 網絡的一些知識和概念,下面開始正式介紹日蝕攻擊。

日蝕,同日食,是指月球運動到地球和太陽的中間,如果三者正好在一條直線上,月球就會擋住太陽射向地球的光,月球身后的黑影正好落到地球上,這時發生日食現象。月球就切斷了地球和太陽之間的(太陽光)聯系。

再來看什么是日蝕攻擊,日蝕攻擊針對特定的某個節點,通過一些方法,填滿被攻擊節點的路由表,以便切斷它們與其他對等點的所有入站/出站通信(這會有效地窒息受害者)。上面提到路由表的概念,路由表里的節點是這個 P2P 網絡的入口節點,任何收發消息都要經過路由表中的節點。攻擊者通過某種方式填滿了被攻擊的節點,理論上就是控制了這個節點進出網絡的信息,造成被攻擊節點被 “偽隔離”的現象。

我覺得用日蝕來形象化的比喻這種攻擊還是很合適的,本質上就是隔離了這個節點或者說用惡意節點包圍了受害節點。

那么會造成什么后果呢?

  • 阻止受害節點查看真實的區塊鏈信息
  • 隔離網絡中多個節點,以達到分裂網絡的可能
  • 用少于 51% 的算力發起 51% 攻擊

上面的幾點其實比較好理解的,受害節點被惡意節點包圍之后,惡意節點可以選擇性的給受害節點發包或者篡改真實的數據包,本質上就是讓這個節點誤以為自己還在這個網絡中挖礦,然而真實情況是它已經從網絡中隔離開來了。

如果受害節點很多的情況,從整個網絡全局來看就是被隔離成多個部分,網絡實際上已經被分裂了。那么就可以實施分裂網絡的 51%攻擊,只需要用比原來 51%攻擊更少的算力就行。

關于 51%攻擊可以查看這篇博文 淺談幾種區塊鏈網絡攻擊以及防御方案之51%攻擊。

如何發起日蝕攻擊

由于每種區塊鏈底層的 P2P 網絡模型可能不一樣,所以就以以太坊為例來做說明。

以太坊 kademlia網絡原理

以太坊底層的 P2P 網絡采用的是 kademlia 算法,kademlia 網絡是一種結構化的 P2P 網絡,網絡中的節點按照一定的規則組織在一起。

kademlia 算法中的核心特點是用異或來定義兩個節點的距離,這種距離與實際的物理距離沒有任何關系

每個節點的路由表會保存不同距離的節點,這個距離的最小值當然是 0,也就是它自己,這個距離的最大值跟節點 ID 的長度有關系(NodeID)。NodeID 是一段具有特定長度的字符串,每個節點具有唯一的 NodeID,用 NodeID 來作為這個節點在 P2P 網絡中的身份信息。比如:

NodeID:   DEA25B0AF6CC5EA9DA4961DBC5FFEB97

假設 NodeID 長度為 N bit(對于上面的 NodeID 來說 N 為 32 * 8 = 256),那么這個距離的最大值就是 N -1,即距離范圍在 [0, N)。

kademlia 網絡中的節點的路由表中會保存每一個距離的節點,數量在 1 個以上,這個值稱為為 α 值。也就是說與自己的 NodeID 距離為 1 的會保存 α 個,距離為 2 的會保存 α 個,以此類推,直到距離為 N-1 的節點會保存 α 個。實際情況是距離越大,能找到符合要求的節點的概率也就越大,想一想為什么?

這里每一個距離稱為一個 Bucket,每一個 Bucket 里保存著 [0, α] 個距離匹配的節點。

通過上述對 kademlia 算法的簡要描述可以得出一個結論,知道一個節點的 NodeID,就能夠計算出這個節點的路由表中的每一個 Bucket 中應該填入什么樣的 NodeID。而這就是日蝕攻擊的核心依據。

發起日蝕攻擊

當我們知道目標節點的 NodeID 之后,就可以通過一定的方式去偽造生成滿足不同 Bucket 的 NodeID,當這個目標節點重啟之后,馬上以這些 NodeID 啟動節點去連接目標節點,由于 kademlia 的特性,這些特意偽造的 NodeID 肯定會被填入目標節點的路由表中,從而把路由表占滿,以達到日蝕攻擊的目的。

至于讓目標節點重啟,可以等待目標節點自動重啟或者采用 DOS 攻擊迫使目標節點重啟,當重啟之后馬上進行上面的操作就可以完成日蝕攻擊。

當成功發起日蝕攻擊之后,隨后就能隔離節點,篡改目標節點的收發數據包了。

如何防御日蝕攻擊

根據上述的討論知道,想要避免日蝕攻擊由很多種辦法:(可能只適用于 kademlia 網絡)

  • 提高節點進入網絡的準入門檻

節點進入 P2P 網絡需要一定的門檻,不論是以時間為代價還是以 Stake 或是工作證明為代價,這樣就能有效防止大批量偽造節點進入網絡,從而從源頭上避免日蝕攻擊

  • 針對同一個 IP 段的節點做連接限制

攻擊者很可能利用有限的 IP (1 ~ 2 個)偽造大量節點,發起日蝕攻擊,那么對于目標節點來說,看到的節點都是來自于這個 IP,多半可以說明這是惡意節點。那么只需要對來自同一個 IP 段的節點做一定數量的限制,比如 最多 2 個,那么也能顯著提高攻擊者的攻擊成本

  • 對節點主動建立連接和被動建立連接的數量做一定的均衡

發起日蝕攻擊,需要主動占滿目標節點的路由表,也就是主動與目標節點建立連接,即便不是這樣,也有方法讓目標節點主動建立連接到惡意節點。所以對于進出的連接數,做一定的均衡能有效避免日蝕攻擊的發生

  • NodeID 重啟之后變化

進行日蝕攻擊的前提是需要知道目標節點的 NodeID,并且迫使目標節點重啟,然后以事先根據目標節點 NodeID 計算好的偽造節點發起連接,達成日蝕攻擊。所以如果節點重啟之后 NodeID 變為與原來不再一致,那么攻擊者事先計算偽造的節點就變得毫無可用之地了。

  • 其他輔助措施

比如節點實時檢測,發現惡意節點進行廣播,并采取一定的懲罰措施等。

寫在最后

最后我們再來簡單對比一下比特幣和以太坊對日蝕攻擊的反應。

由于以太坊采用的是結構化的 P2P 網絡,并且采用了 kademlia 算法,那么知道了 NodeID,基本上就大致能知道這個路由表中應該填入一些什么類型的節點;

而對于比特幣來說,由于比特幣的 P2P 網絡采用的是無結構的模型,節點之間以隨機,松散的方式進行組織。想要通過類似以太坊日蝕攻擊的方法去攻擊比特幣網絡,不太行得通,因為比特幣節點不關心你的 NodeID。但是還是有辦法迫使比特幣節點只與惡意節點建立連接的。

Blog:

  • rebootcat.com

  • email: linuxcode2niki@gmail.com

2020-04-12 于杭州
By 史矛革

總結

以上是生活随笔為你收集整理的浅谈几种区块链网络攻击以及防御方案之日蚀攻击的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。