日蝕攻擊是一種相對簡單的基礎攻擊,攻擊者可能會透過該攻擊方式乾擾網路上的節點。顧名思義,該攻擊能夠使對等網路中被攻擊節點無法獲取有效訊息,從而引發網路中斷或為更複雜的攻擊做準備。
從表面上看,日蝕攻擊(Eclipse Attack)與女巫攻擊(Sybil Attack)相似。儘管它們具有某些相似之處(攻擊者透過攻擊節點來擾亂網路),但它們最終的攻擊目標是不同的。日蝕攻擊的目標是單一節點(原因將在下文中說明),而女巫攻擊的目標是整個網路範圍,旨在篡改網路協定的信譽體系。
2015年所發表的《在比特幣對等網路上的日蝕攻擊》論文中,對該概念進行了詳盡的討論,其中來自波士頓大學和希伯來大學的研究人員報告了他們進行日蝕攻擊的實驗結果,以及與之對抗的防範措施。
比特幣礦工需要專用設備產生驗證新區塊,但是非挖礦(或完整)節點僅需要非常小的算力即可運作。透過這種方式,任何人都可以在廉價設備上運作節點,這也有助於比特幣的去中心化。軟體程式維護了與對等方同步的事務處理資料庫,以便與網路保持同步。
對大量節點連接的限制因素是頻寬。因此,儘管有大量設備可以運行該程序,但比特幣網路中設置了連接數量限制(最多只能連接125個),普通設備無法直接與其他設備進行互連。
在日蝕攻擊中,攻擊者會確保目標的所有連接都建立在攻擊者所控制的節點上。攻擊者將首先從自己的IP位址向目標位址發送泛洪,受害者可能會在程式重新啟動時連接到攻擊者的IP位址。可以強制重啟(即對目標進行DDoS攻擊),或僅等待程式自動重新啟動。
如果發生這種情況,毫無戒心的受害者就會聽從惡意節點的擺佈,攻擊者向它們提供了錯誤數據,他們無法從真實網絡中獲取到數據。
如果攻擊者通過消耗網路節點的資源,能夠使其從網路中分離,那麼他們就有動機實施此類攻擊。如果節點被隔離了,攻擊者就可以實施幾次連續攻擊。
如果獨立節點接受了未經確認的交易,那麼就會發生“雙花”風險。如果發生的交易在進入區塊之前(提交至區塊鏈),可能已經進行廣播了,那麼發送方就可以在其他地方輕鬆得進行一次新的交易,花費掉與此前交易相同的金額。如果新產生的交易手續費較高,這個時候礦工會優先處理該筆交易,並認為這筆交易是最先發生的,從而造成最先發生的交易無效。
某些商家和個人接受這些0確認交易。假設某個商人Bob,他銷售高端汽車。他不知道Alice已將將他的節點進行了日蝕攻擊,再看到她的豪華跑車訂單後,也沒有產生任何懷疑。 Alice創建了交易,Bob隨即將其廣播到網路。在看到付款消息即將被確認後,感到非常滿意,他將車鑰匙交給了Alice,Alice開車加速離開。
而實際上,交易並沒有被廣播到網路中,Bob只是將交易傳遞到了Alice的惡意節點中,而Alice所控制的惡意節點也不會將交易傳遞到真實節點中。因此,該筆交易會被認為無效,這個時候Alice在(真實)網絡上又支付了同樣的金額,可以是轉給她自己也可以是轉給其他人。即使最後在真實網路中看到了最初和Bob之間的初始交易,但由於Alice帳戶中的資金已經使用掉,該筆交易也無法被驗證。
需N次確認的“雙花”與無需確認的“雙花”相類似,只是涉及更多的準備工作。許多商家都希望付款被標記為有效之前能夠先等待一定數量的確認。為了解決這個問題,攻擊者必須使礦工和商戶節點都進行日蝕攻擊。如果攻擊者與商家建立了訂單,他們就會向(遭受日蝕攻擊)的礦工廣播交易。商家可以在區塊鏈網路中看到交易被確認,但由於礦工和商家所在的網路都被隔離了,因此該區塊鏈並不是大多數真實節點所能夠見證的。
攻擊者將該虛假的區塊鏈網路資訊傳送給商戶,商家在看到交易已經被確認後,就進行了商品的交接。而當這些遭受日蝕攻擊的節點重新加入真實網路後,真實的區塊鏈網路會認為這部分節點是無效的,從而將這部分節點進行孤立(這與51%攻擊相類似)。
遭受日蝕攻擊的節點會繼續運行,不會受到被網路隔離的影響。礦工將繼續在協議規定的規則範圍內對區塊進行驗證,但是添加的區塊將會在和真實網路節點進行通過的過程中進行丟棄。
從理論上講,對大部分礦工的大規模日蝕攻擊可用於促進51%攻擊。就目前的情況而言,即使是最有資源的攻擊者,接管大多數比特幣算力(約80TH/s)的成本也過於高昂,攻擊者至少需要以超過40TH/s的算力進行嘗試。
我們假設將這種算力分佈在10個參與者中(每個參與者大約擁有8TH/s),攻擊者可以透過將這些參與者從網絡隔離,大大降低51%攻擊的要求。如果其中的5個節點遭受日蝕攻擊,攻擊者就可以減少40TH/s的算力,用於來尋找下一個區塊,並且攻擊者現在只需要提高20TH/s的算力即可實現對節點的控制。
透過對目標實施日蝕攻擊,可以實現的其他破壞性活動,包括操縱節點進行非法挖礦活動,或利用礦工之間的算力競爭來獲取下一個區塊。
如果有足夠的IP位址,攻擊者就可以對任何節點實施日蝕攻擊。而防止這種情況發生的最直接方法是讓阻止節點的非法接入,並僅建立到特定節點(例如已被對等網路中的其他節點列入白名單的IP)的出站連接。但是,正如研究論文所指出的那樣,這並不是一種可以大規模實施的方案,如果所有參與者都採取這些措施,則新節點將無法加入網路。
作者曾對比特幣程式提出了的一些調整方案,而其中的一些也在白皮書發布後,整合到了比特幣程式中。透過對程式碼進行較小的修改,例如隨機選擇新連接和提升位址的儲存空間,這些措施都會使日蝕攻擊的成本不斷增加。
日蝕攻擊是在對等網路上進行的。作為一種可獨立攻擊部署的方式,它們會讓人感到厭煩。進行日蝕攻擊的真正目的,其實是為了實施其他能夠造成更大影響的攻擊,或是為攻擊者提供了在挖礦方面的優勢。
普遍來說,日蝕攻擊尚未造成嚴重影響,儘管區塊鏈網路中已部署了防範措施,但威脅仍然存在。日蝕攻擊與比特幣和其他大部分加密貨幣所面臨的大多數攻擊一樣,最好的防禦措施是讓惡意攻擊者無利可圖。