目錄
日蝕攻擊的工作原理
比特幣礦工需要專用設備生成驗證新區塊,但是非挖礦(或完整)節點僅需要非常小的算力即可運行。通過這種方式,任何人都可以在廉價設備上運營節點,這也有助於比特幣的去中心化。軟件程式維護了與對等方同步的事務處理資料庫,以便與網路保持同步。
對大量節點連接的限制因素是帶寬。因此,儘管有大量設備可以運行該程式,但比特幣網路中設置了連接數量限制(最多只能連接125個),普通設備無法直接與其他設備進行互連。
如果發生這種情況,毫無戒心的受害者就會聽從惡意節點的擺佈,攻擊者向它們提供了錯誤資料,他們無法從真實網路中獲取到資料。
日蝕攻擊造成的後果
如果攻擊者通過消耗網路節點的資源,能夠使其從網路中分離,那麼他們就有動機實施此類攻擊。如果節點被隔離了,攻擊者就可以實施幾次連續攻擊。
無需確認的“雙花”
某些商戶和個人接受這些0確認交易。假設某個商人Bob,他銷售高端汽車。他不知道Alice已將將他的節點進行了日蝕攻擊,再看到她的豪華跑車訂單後,也沒有產生任何懷疑。 Alice創建了交易,Bob隨即將其廣播到網路。在看到付款消息即將被確認後,感到非常滿意,他將車鑰匙交給了Alice,Alice開車加速離開。
而實際上,交易並沒有被廣播到網路中,Bob只是將交易傳遞到了Alice的惡意節點中,而Alice所控制的惡意節點也不會將交易傳遞到真實節點中。因此,該筆交易會被認為無效,這個時候Alice在(真實)網路上又支付了同樣的金額,可以是轉給她自己也可以是轉給其他人。即使最後在真實網路中看到了最初和Bob之間的初始交易,但由於Alice賬戶中的資金已經使用掉,該筆交易也無法被驗證。
需N次確認的“雙花”
削弱礦工之間的競爭
遭受日蝕攻擊的節點會繼續運行,不會受到被網路隔離的影響。礦工將繼續在協議規定的規則範圍內對區塊進行驗證,但是添加的區塊將會在和真實網路節點進行通過的過程中進行丟棄。
我們假設將這種算力分佈在10個參與者中(每個參與者大約擁有8TH/s),攻擊者可以通過將這些參與者從網路隔離,大大降低51%攻擊的要求。如果其中的5個節點遭受日蝕攻擊,攻擊者就可以減少40TH/s的算力,用於來尋找下一個區塊,並且攻擊者現在只需要提高20TH/s的算力即可實現對節點的控制。
減緩日蝕攻擊的影響
如果擁有足夠多的IP地址,攻擊者就可以對任何節點實施日蝕攻擊。而防止這種情況發生的最直接方法是讓阻止節點的非法接入,並僅建立到特定節點(例如已被對等網路中的其他節點列入白名單的IP)的出站連接。但是,正如研究論文所指出的那樣,這並不是一種可以大規模實施的方案,如果所有參與者都採取這些措施,則新節點將無法加入到網路。
總結
日蝕攻擊是在對等網路上進行的。作為一種可獨立攻擊部署的方式,它們會讓人感到厭煩。進行日蝕攻擊的真正目的,其實是為了實施其他能夠造成更大影響的攻擊,或者為攻擊者提供了在挖礦方面的優勢。
普遍來說,日蝕攻擊尚未造成嚴重影響,儘管區塊鍊網路中已部署了防範措施,但威脅仍然存在。日蝕攻擊與比特幣和其他大部分加密貨幣所面臨的大多數攻擊一樣,最好的防禦措施是讓惡意攻擊者無利可圖。