區塊鏈的網路層級的弱點與攻擊
本文將介紹區塊鏈技術的標準網路層級的攻擊與緩解措施.
區塊鏈在網路上的運作方式會有以下狀況
- 對網路的行為和連結性做出假設
- 即使“區塊鏈”本身是安全的,“網路”也可能容易受攻擊
而可以聚焦在網路層級的攻擊會分為
- 內部:針對區塊鏈的peer-to-peer網路如何運作
- 外部:針對Internet
51%的攻擊
51% 的攻擊是區塊鏈的最簡單的方法之一,因為它利用了共識演算法的合法功能。在PoW區塊鏈中,區塊鏈的狀態由多數人決定,因為如果區塊鏈出現分歧,其背後工作量(累積運算能量最大的)較大的分支將會是正式版本。如果攻擊者控制了 PoW 區塊鏈 51% 的運算資源,他們就控制了整個區塊鏈。
執行 51% 攻擊需要攻擊者購買、租用或竊取足夠的運算資源,以擁有比區塊鍊網路的其他人加起來還要多的運算資源。一旦他們控制了區塊鏈,他們就可以進行雙重花費的攻擊。
檢查點(Checkpointing)的這一個機制主要在防止 51% 的攻擊。通過在區塊鏈歷史資料中每隔一段時間存儲一個區塊,並拒絕接受跟這些區塊的不一樣區塊鏈,它們可以防止攻擊者重寫帳本歷史。但是,不同的區塊鏈是可以合法存在的,因此在防止攻擊和區塊鏈的合法運行之間有一條底線。檢查點是存在會有中心化或分裂網路的風險。所謂中心化是單一個節點產生和分發檢查點,而分裂是指多個節點可能在不同的鏈上產生檢查點。
DoS攻擊
在DoS攻擊中,攻擊者試圖降低服務的可用性或使其完全無法運行。在傳統的中心化網路中,DoS攻擊是針對網路的瓶頸或單點故障。區塊鏈被設計為去中心化且沒有單點故障,但是DoS攻擊仍然對區塊鏈是有效的。
DoS攻擊的細節取決於區塊鏈技術以及其作業中出現的瓶頸和單點故障的位置。DoS攻擊類型的範例包括:
- 產生大量交易:用交易塞爆網路,以增加等待加到區塊的交易的排隊長度
- 人工的方式增加difficulty:暫時增加PoW區塊鏈的運算能力藉以以推高difficulty,然後移除增加的運算資源
- Block Forger DoS:對 PoS 區塊鏈上的下一個區塊建立者執行傳統的 DoS 攻擊,不讓區塊被加到鏈中.而是由攻擊者來製作下一個區塊.
- 許可制區塊鏈MSP DoS:對許可制區塊鏈MSP 執行DoS攻擊,不讓一般使用者訪問區塊鏈
以下為用不同的緩解方式緩解各種類型的DoS攻擊:
- 產生大量交易:有意的建立區塊以讓排隊長度縮短
- 人工增加difficulty:對difficulty增加間隔,以盡量減少攻擊影響
- PoS 和 MSP DoS:對節點實施傳統的 DoS 保護
蝕刻攻擊(Eclipse Attacks)
區塊鏈是在peer-to-peer的網路上運作,其中每個節點都連接到一定數量的其他節點。區塊鏈網路是故意不做節點間的完全連接,因為這會大大增加overhead。在 蝕刻攻擊中,攻擊者控制節點與網路的所有連接,從而允許攻擊者完全控制這個節點對分佈式帳本和網路操作。成功的蝕刻攻擊讓攻擊者對孤立的節點進行雙重花費攻擊,幫助攻擊者執行DoS攻擊,或讓攻擊者使用節點的運算資源為攻擊者在區塊鏈共識演算法中取得利益。
一次成功的蝕刻攻擊需要攻擊者掌握位置、能力、規模或惡意軟體。位置(Location)在這種類型的攻擊中發揮很大的作用,因為攻擊者可能有能力在使用者的訊息到達區塊鏈網路的其他人之前攔截它們(例如在router or gateway攔截它們)。如果攻擊者擁有 ISP 的能力,他們就可以完全控制使用者的通訊。擁有大量資源的攻擊者可以實施大規模攻擊,他們在區塊鏈上建立大量帳戶,希望使用者隨機選擇的所有連接都將連接到攻擊者控制的節點。最後,攻擊者可以用惡意軟體感染使用者的電腦並使用它來控制他們的網路通訊。
以下方式為降低有效蝕刻攻擊的可能性:
- 網路連接數(connection)增加:降低攻擊者控制使用者連接的所有節點的可能性
- 白名單:有一個已知的受信任節點清單,並始終連接到至少一個這一類的節點
- 隨機的重新連結:讓這一類的攻擊是短暫且可被偵測的
- 許可制的私有區塊鏈:降低網路上惡意節點的可能性,並使大規模的攻擊更加困難
重播攻擊(Replay Attack)
區塊鏈上的交易包括發送者的數位簽章。 這樣做的目的是確保交易是由發送方產生的(因為簽章的不可否認性),並且在傳送過程中沒有被修改。 攻擊者無法偽造數位簽章,這樣做就無法產生假交易。在重播攻擊中,攻擊者拿到現有交易資料並將其重新提交到區塊鏈中,讓它成為一個新交易。 由於原始交易是合法的,因此數位簽章將是有效的並為區塊鏈所接受。 通過重播向攻擊者發送資金的交易,攻擊者會得到兩次的資金。
為了防止這種攻擊,區塊鏈可以在每筆交易中包含nonces或唯一值。 如果重播攻擊的交易沒有一個新的 nonce ,交易將被拒絕。 如果攻擊者試圖更改 nonce 並重播它,因為這樣數位簽章將會無效,交易也不被承認。
路由攻擊(Routing Attack)
與大多數區塊鏈攻擊不同,路由攻擊針對的是區塊鏈用於peer-to-peer通訊的底層網路。 如果攻擊者可以控制兩組節點之間的所有網路通訊,他們就可以切開網路。 這種控制路由的方式將有助於執行
- 51% 攻擊
- DoS攻擊
- 雙重花費攻擊
Internet 使用BGP來找尋不同電腦之間的路由。 如果攻擊者在包含區塊鏈網路節點的中間之間發布最短路由,則很可能在這些節點之間流動的所有流量都將流經攻擊者,就可以讓攻擊者將這兩個組節點切開。
只有當攻擊者可以切開兩組節點的所有網路連接時,路由攻擊才會成功。以下幾種方式可以降低攻擊成功率:
- Multihomed Nodes:如果一個節點有兩個以上的Internet Gateway可以連到Internet,哪攻擊者切開網路的機會就很低
- 固定路由選擇:如果一個節點使用已知的、可信任的路由與其他網段中的節點通信,攻擊者就無法使用 BGP 來破壞通訊
- 網路監控:攻擊者的重新路由和監控可能會顯著增加網路的延遲,對此進行監控可能可以發現攻擊
- Encrypted Authenticated Communications:加密和認證確保攻擊者無法監控和更改節點之間的通信
女巫攻擊(Sybil Attacks)
這是攻擊者在區塊鍊網路上建立大量的帳號。 這可以協助
- 蝕刻攻擊
- 路由攻擊
- PoS攻擊(操縱基於幣齡的共識選擇)
要執行女巫攻擊,攻擊者只需要建立和操作大量區塊鏈帳號的能力。 可以使用
- 殭屍網路
- 虛擬化技術
- 惡意軟體
來實現這一點。防止女巫攻擊的最佳方法是使用許可制的私有區塊鏈,其中access control限制了攻擊者在區塊鏈上建立帳號的能力。
以上介紹的攻擊,不論哪一種。基於賽局理論的觀點,若攻擊的效益遠低於攻擊者所需的資源,或是初始目的就沒有效益。哪麼此種攻擊發生的可能性就很小。