?

區塊鏈網絡安全保障:攻擊與防御

2021-02-28 04:46江沛佩王騫陳艷姣李琦沈超
通信學報 2021年1期
關鍵詞:攻擊者礦工比特

江沛佩,王騫,陳艷姣,李琦,沈超

(1.空天信息安全與可信計算教育部重點實驗室,湖北 武漢 430072;2.武漢大學國家網絡安全學院,湖北 武漢 430072;3.武漢大學計算機學院,湖北 武漢 430072;4.清華大學網絡科學與網絡空間研究院,北京 100084;5.北京信息科學與技術國家研究中心,北京 100084;6.西安交通大學網絡空間安全學院,陜西 西安 710049)

1 引言

自2009 年面世以來,比特幣[1-2]作為首個完全去中心化的加密貨幣在學業界和工業界越來越受到關注。比特幣交易的底層數據結構是區塊鏈,大量參與者在區塊鏈上創建交易記錄,不需要任何可信第三方參與。區塊鏈作為以比特幣為代表的數字加密貨幣體系的核心支撐技術,逐漸成為一種日益普及、全新的去中心化基礎架構與分布式計算范式,并引領了人類信用進化史的新一代革新。從技術層面講,區塊鏈技術實現了交易的去中心化和一定的匿名性,非實名和交易安全是區塊鏈技術最大的優勢。除了虛擬貨幣以外,區塊鏈還在食品、醫療、汽車、運輸業等領域提供數據溯源、公平交易等技術支持[3],例如,文獻[4]利用區塊鏈技術實現了對物流系統中交易的監管,其監管架構和我國管理體系吻合,是報道可見的第一個落地的可監管區塊鏈系統。目前,區塊鏈的廣泛運用引起了相關政府部門、金融行業機構、科技企業和資本市場的高度關注。

然而,隨著區塊鏈的快速發展與普及,其潛在的安全漏洞也逐漸暴露出來。2020 年7 月底,西班牙加密貨幣交易平臺2gether 遭攻擊,損失約140 萬美元[5]。最近,在以太經典(ETC,Ethereum classic)平臺上爆發的一起51%攻擊導致大約價值560 萬美元的加密貨幣被雙倍消費[6]。由此可見,區塊鏈技術的漏洞可能導致無法挽回的財產損失和隱私泄露。目前,國內研究者針對區塊鏈安全問題進行了系統的綜述[7-10],但這些工作與本文的側重點和覆蓋面有所差別。例如,文獻[7]側重于宏觀層面的區塊鏈技術發展;文獻[9-10]側重于介紹區塊鏈威脅和漏洞相關研究,沒有詳細調研針對區塊鏈威脅的具體防御措施。本文除了調研關于區塊鏈安全漏洞的最新進展外,還詳細介紹了目前最先進的防御方法,系統地調研了區塊鏈系統的安全性問題。作為一個集成框架,區塊鏈系統可分為4 層:數據結構層、網絡層、共識層和應用層。本文從區塊鏈系統結構角度出發,深入分析數據結構層、網絡層、共識層和應用層的安全漏洞、攻擊原理以及對應的防御措施。

在數據結構層,最主要的安全威脅源于區塊狀態的不一致性和底層密碼協議的脆弱性。區塊鏈的底層數據結構由區塊組成,區塊之間通過哈希指針鏈接。由于可信中心節點的缺失,區塊鏈節點之間可能會存在狀態的不一致性,這為分叉攻擊的實施帶來了可能性。同時,區塊鏈網絡還存在吞吐量有限、效率低的問題,這削弱了現有區塊鏈平臺的適用性。因此,研究者致力于研究設計可擴展區塊鏈系統,遺憾的是,可擴展區塊鏈的設計加重了區塊鏈的不一致性。針對這一問題,研究者提出了一系列同時保證區塊鏈一致性和可擴展性的協議[11-14]。另外,區塊鏈的安全性由底層密碼協議保證,密碼協議的漏洞若被攻擊者利用[15-16],會對區塊鏈中數據的真實性、私密性造成危害,甚至可能造成嚴重的財產損失。

在網絡層,攻擊的主要目的是破壞區塊傳播所需的網絡基礎設施,其中路由攻擊[17]是最常見的攻擊之一。它會導致挖礦計算資源浪費,甚至為雙重支付攻擊提供便利。

在共識層,人們需要著重關注礦池的安全問題。隨著區塊鏈全網計算能力的不斷增強,采礦難度不斷升級,獨立礦工的收益越來越難以保障。為了實現穩定的收入流,礦工們聯合挖礦,組成礦池。然而,礦池的出現引入了再中心化的威脅,一定程度上破壞了區塊鏈系統的安全支柱,這有利于實施51%攻擊和雙重支付攻擊[18-19]。同時,礦池技術的發展也引起了激烈的競爭和攻擊,如自私挖礦[20]、塊克制(BWH,block withholding)攻擊[21]、塊克制后分叉(FAW,fork after withholding)攻擊[22]等,這些攻擊將會導致挖礦資源浪費。

在應用層,隨著加密貨幣的不斷發展和廣泛應用,市場對更透明、更智能、更高效的交易需求逐漸增強,這催生了鏈下支付通道和智能合約的出現。智能合約被視為區塊鏈2.0 的標志[23],然而,智能合約的漏洞可能引發安全問題和隱私泄露問題,如交易跟蹤、支付中止和蟲洞攻擊等[24-26]。隨著智能合約的日益普及,其安全性已經引起了廣泛關注[27-30]。另一方面,匿名貨幣系統的出現進一步加強了加密貨幣的匿名性,但現有的匿名貨幣系統仍存在隱私泄露問題[31-33]。

2 區塊鏈系統模型

區塊鏈系統是多種技術和機制的巧妙結合,可分為數據結構層、網絡層、共識層和應用層4 層,如圖1 所示?;趨^塊鏈特殊的數據結構、網絡結構和共識協議,區塊鏈具有分散化、不可篡改性、可追溯性和透明性等特性。本節將從區塊鏈層次結構的角度來概述區塊鏈采用的工作機制,從而幫助讀者深入理解各個層次的安全威脅和防御。

圖1 區塊鏈系統架構

2.1 數據結構層

區塊鏈底層的數據結構是區塊,區塊之間通過哈希指針鏈接并形成區塊鏈網絡。區塊由區塊頭和區塊體構成。區塊頭中包含關于該區塊的主要信息,如上一個塊的哈希值、默克爾樹根和塊時間戳等。根據區塊頭中的哈希值,可以定位到上一個區塊的地址。區塊體包含了實際數據,如交易信息等,區塊體的內容由區塊所有者通過私鑰進行簽名。由于哈希函數具有單向性和抗碰撞性,并且數字簽名具有不可偽造性,區塊鏈的區塊內容是不可變且防篡改的。區塊鏈中另一個基礎數據結構是默爾克樹。默克爾樹是一個由哈希值組成的二叉樹,它的每一個節點都是由子節點經過哈希函數得到的。在區塊鏈系統中,默爾克樹被用來驗證交易的完整性,自下而上逐層計算默爾克樹的哈希值即可快速驗證交易。

2.2 網絡層

區塊鏈系統網絡層通信的基礎結構是基于TCP 連接的非結構化對等(P2P,peer-to-peer)網絡。非結構化網絡易于構造,并且對高度動態的網絡拓撲(例如,對等者的頻繁進出等)具有很強的穩健性。由于區塊鏈網絡的目標是盡可能快地分發信息,以達成對區塊鏈的共識,因此在挖礦過程中,新發現的區塊會在整個網絡中通過泛洪傳播。

2.3 共識層

1) 挖礦過程

在共識層中,分布式的參與者對區塊鏈狀態達成一致的過程被叫作挖礦。具體來說,為了在區塊鏈網絡中達成一致意見,礦工需要運行一個具有容錯性質的共識協議,以確保他們都同意附加到區塊鏈條目的順序。如果要向區塊鏈添加新區塊,每個礦工都必須遵循共識協議中指定的一組規則。區塊鏈通過使用工作量證明(PoW,proof of work)機制來實現分布式共識,該機制要求參與者通過破解密碼謎題來證明自己的計算能力。成功計算出解決方案的參與者將生成一個區塊,并獲得鑄造該比特幣的獎勵。

在加密貨幣平臺中,貨幣的交換以交易鏈的形式表示。交易鏈的完整性、真實性和正確性均由分布式礦工驗證,他們是去中心化系統的安全支柱。具體來說,挖礦的主要過程如下。

①礦工將大量待驗證的事務捆綁在一個稱為塊的單元中,并在給定塊的情況下執行PoW算法。

② 礦工在解開了這個難題后,立即在整個網絡上發布關于該區塊的廣播,以獲得采礦獎勵。

③在成功添加到分布式公共賬本(即區塊鏈)之前,該塊將被網絡中大多數的礦工驗證。

④ 當挖掘到的區塊成功添加到區塊鏈中時,挖掘該塊的礦工將獲得一個區塊的獎勵。

2) 礦池

解開謎題的礦工將獲得豐厚的回報,這吸引了大量的礦工參與,顯著提高了比特幣網絡的整體計算能力。密碼謎題的難度會隨時間變化,系統會根據實際情況將挖掘一個區塊的平均時間調整到幾乎不變(大約10 min)。由于生成塊的概率與計算能力成正比,單個礦工在有限的計算能力下獲得獎勵的概率非常低。針對這一局限性,礦工們形成礦池,將群眾的力量聚集在一起。在礦池中,礦工們可以解決更簡單的密碼謎題,并將解決方案(也叫作份額)提交給礦池管理員。然后,礦池管理員將檢查該份額是一個部分工作證明(PPoW,partial proof of work)還是一個完整工作證明(FPoW,full proof of work)。注意到,PPoW 對應簡單的密碼謎題,FPoW 對應原始的密碼謎題。接著,管理員分發正比于預估計算能力的獎勵給礦工。最終,每個礦工就可以穩定地獲得與預期相符的報酬。

2.4 應用層

1) 鏈下支付通道

目前,比特幣網絡的最大吞吐量為每秒7 筆交易(TPS,transaction per second),這意味著用戶可能需要等待數十分鐘甚至更長的時間才能確認交易。顯然,這遠遠不能滿足實際需求。針對這一問題,研究者探究了一系列提高區塊鏈系統可擴展性的方案。提高吞吐量的方法之一是構建鏈下交易機制[34],在用戶之間建立支付通道,以處理頻繁的微交易。鏈下支付通道的工作流程如圖2 所示。在鏈下支付通道中,只有在打開和關閉通道時才會訪問區塊鏈。提交開啟交易后,用戶將資金存入相互認可的地址中,并在關閉通道時以最接近的余額返還資金。此外,支付通道網絡(PCN,payment channel network)[35]使沒有直聯通道的用戶能通過網絡中的一個路徑彼此連接。

圖2 鏈下支付通道的基本執行流程

2) 匿名貨幣

雖然傳統加密貨幣能在一定程度上提供交易匿名性,但實際上比特幣網絡中的假名地址是偽匿名的。攻擊者可以從公開賬本中挖掘出許多關于交易的敏感信息,比如交易用戶真實身份等。針對這一問題,研究者提出了全新的分布式匿名交易加密貨幣,如Dash[36]、Zcash[37]、Monero[38]等。這些匿名貨幣利用zk-SNARKs[39]和環簽名[40]等密碼學工具來保護交易的不可追溯性。

3) 智能合約

在應用層,最具影響力的技術之一是智能合約[23],它是在以太坊區塊鏈中一段特定地址上的程序。以太坊區塊鏈是目前最受歡迎的支持智能合約的去中心化平臺。智能合約由合約中可執行單元的函數和智能合約狀態數據組成。在智能合約中,程序代碼記錄多方之間的邏輯合約條款,并預定義觸發條件和響應動作。智能合約中函數是由時間或事件(例如添加到區塊鏈中的事務)觸發的,并由達成共識的礦工存儲和執行,執行的正確性由區塊鏈的共識協議保證。此外,智能合約還可以接收、存儲和發送自己的值。理想情況下,可以認為智能合約是由一個可信的全局機器執行的,它將誠實地執行每條指令。在智能合約的輔助下,金融交易規則可以在沒有可靠第三方的情況下執行。

3 區塊鏈安全威脅及攻擊

去中心化是區塊鏈系統最吸引人的特性之一,但這一特性也帶來了潛在威脅。在區塊鏈自由市場中,惡意參與者可能會利用區塊鏈系統的潛在威脅來獲取非法利益。本節將從數據結構層、網絡層、共識層、應用層討論針對區塊鏈的安全威脅,并在表1 中進行了總結。

3.1 數據結構層安全威脅

區塊鏈的基本組成部分為區塊。在交易過程中,不斷有新的區塊鏈接到區塊鏈中,而鏈接過程存在區塊鏈狀態不一致和分叉的威脅。另外,區塊鏈底層高度依賴密碼算法,攻擊者可以利用密碼系統的漏洞造成用戶私鑰泄露,從而引發財產損失等安全問題。

1) 區塊鏈狀態不一致性

由于區塊鏈系統中缺乏可信中心節點,交易信息由多個節點共同維護,而這種自由的交易增加了區塊鏈狀態的不確定性。具體來說,區塊鏈的安全性建立在絕大多數礦工或計算能力是可信的并且工作在最長的鏈上這一假設。但實際上,區塊鏈系統的一致性是具有不確定性和概率性的,它需要通過長時間的時延來確認交易,以避免攻擊者篡改和利用。不一致的一個主要后果是分叉。如果某個惡意的礦工能成功分叉出一條合法的鏈,其他所有礦工將切換到這條新的最長鏈上[21]。這樣一來,所有只發生在舊鏈上的交易都將被取消,從而導致重復消費(即雙花攻擊[41-42])和交易反轉等一系列問題,造成財產損失。

2) 用戶私鑰泄露

在比特幣交易系統中,交易過程是將資產的所有權從發送方地址轉移到接收方的公共地址,該交易內容由簽名者使用私鑰簽名。通常,用戶通過比特幣錢包存儲私鑰,比特幣錢包是一種樹狀層次化確定性結構,其私鑰和地址由一個主種子生成。在比特幣錢包標準BIP32 架構中[43],給定主公鑰和子私鑰,攻擊者可以非常容易地恢復出主私鑰。Courtois等[15]通過分析比特幣錢包密鑰管理方案中的隨機數和隨機事件里的關聯性,提出了一種私鑰恢復組合攻擊。這種攻擊能夠破壞存儲在系統中的密鑰安全性,更嚴重的是,父節點私鑰泄露將直接導致子節點私鑰泄露,這也被叫作特權升級攻擊。另一方面,區塊鏈底層所使用的橢圓曲線數字簽名算法(ECDSA,elliptic curve digital signature algorithm)中隨機數的重用也可能被攻擊者分析、利用,從而使用戶私鑰暴露[16,44-45]。如果攻擊者獲取了受害用戶的私鑰,他/她就能偽造該用戶的簽名并完成任意交易,比如將受害用戶的資產轉移到非法賬戶上。

表1 區塊鏈安全威脅和防御方法

3.2 網絡層安全威脅

在網絡層,區塊鏈網絡的基礎網絡基礎設施漏洞和自身P2P 網絡結構是引發安全問題的主要原因。

路由攻擊[17]是一種被廣泛研究的網絡攻擊,在路由攻擊中,自主系統通過劫持邊界網關協議(BGP,border gateway protocol)[46]來攔截和操縱比特幣流量。Apostolaki 等[17]指出,網絡基礎設施具有2 個有利于路由攻擊的特點:第一,少數幾個自主系統承載大部分比特幣節點;第二,路由可以攔截到大量比特幣節點的連接?;谶@2 個特點,可以進行分割攻擊和時延攻擊。在分割攻擊中,AS 層攻擊者通過劫持邊界網關協議,從區塊鏈網絡中隔離一組節點P,這些節點P在總挖掘能力中占有相當大的比例。通過利用集中的比特幣礦池,攻擊者只需劫持39個前綴就可以隔離占總挖掘能力近50%的節點。分割攻擊要求攻擊者完全控制受害者的流量,而時延攻擊則只需時延區塊向單個節點的傳播,甚至可能只攔截一個連接。由于區塊鏈流量是未加密的,且節點在向一個節點請求阻塞后20 min 內不會再向另一個節點請求阻塞,攻擊者可以通過攔截區塊鏈流量來延遲或阻塞在某些連接上的傳播。

通過路由攻擊,攻擊者可以隔離網絡的一部分節點或時延區塊傳播,這會造成巨大的挖礦能力浪費和收入損失,并使網絡暴露于各種各樣的漏洞中,如雙花攻擊[41-42]等。

3.3 共識層安全威脅

區塊鏈的實現很大程度上得益于共識層的設計。在這一層中,區塊鏈在一個分布式去中心化的賬本上運行,鏈中的所有節點通過共識機制保持統一運行狀態。目前,共識層中的大多數安全威脅都是隨著礦池的出現而產生的。

1) 再集中

隨著開采難度的增加,為了保證個體礦工的穩定收入,越來越多的大型比特幣礦池隨之形成。然而,這違反了區塊鏈去中心化的原則。如果網絡中超過一半的計算能力由單一的礦池運營商控制,區塊鏈將會面臨51%攻擊的威脅。51%攻擊指的是攻擊者控制著比特幣網絡中超過51%的采礦能力。顯然,將算力集中到一個礦池中有利于實現51%攻擊。礦池運營者可以利用池中大量參與者的強大計算能力發起大規模攻擊,如雙花攻擊[41-42]、網絡分割[17]和拒絕服務(DoS,denial-of-service)攻擊[47-48]等。此外,由于礦池運營商肩負著分配資源和評估礦池參與者工作量的工作,惡意的礦池運營商可能會有不當行為,例如非法審查區塊中的交易等。除了惡意運營商外,礦池中也可能存在惡意礦工,他們可能偽造多個節點,從而發起女巫攻擊[49],女巫攻擊同樣有利于51%攻擊和分叉攻擊的實現。

2) 礦池間的惡性競爭

礦池之間競爭激烈,礦工可能會為了在競爭中獲得優勢而采取各種攻擊手段。一個典型的單人挖礦攻擊是自私挖礦[20]。自私的礦工通過選擇性地傳播被挖掘的塊來使其他誠實礦工的塊失效,從而蓄意生成分叉。礦池中另一個常見的攻擊是BWH 攻擊[21]。在BWH 中,來自攻擊礦池的礦工潛入受害礦池中,在挖礦過程中,攻擊者只發送部分工作證明,不發送完整工作證明,最終攻擊者可以通過分攤其他礦工發現的完整工作證明從受害池中獲取不該屬于他/她的報酬。顯然,這種攻擊方法“損人不利己”,獲得的效益很少,甚至可能低于攻擊者本該得到的報酬。Kwon 等[22]將BWH 與自私挖礦相結合,提出了一種新型攻擊,名為FAW 攻擊,進一步提高了攻擊的效益。與BWH 中立即丟棄完整工作證明不同的是,在FAW 攻擊中,攻擊者將保留完整工作證明塊。如果一個礦工在攻擊礦池和受害礦池之外生成了有效塊,攻擊者將把這個塊提交給受害礦池的礦池運營商,當礦池運營商傳播這個塊時,會導致蓄意分叉。如果大多數礦工選擇了攻擊者區塊的分支,那么受害礦池和攻擊者均將獲得獎勵。由于FAW 攻擊的收益對計算能力和網絡容量要求不高,因此它比自私挖礦更實用。當2 個礦池均采用FAW 時,規模更大的礦池總是受益,小池總是損失,這也打破了BWH 中雙輸的礦工困境。不過,FAW 和BWH 在考慮到算力調整策略的情況下無法達到最優收益,Gao 等[50]提出了算力調整克制(PAW,power adjusting withholding)攻擊,能達到更高的收益。

3.4 應用層安全威脅

在應用層,近期研究主要集中在提高性能和拓寬區塊鏈系統的應用潛力上[34,51],下面,討論與之密切相關的安全問題。

1) 支付通道的隱私和安全問題

鏈下支付通道為比特幣的交易帶來了便捷性,然而,鏈下支付過程存在著各種潛在的隱私泄露風險。首先,同一通道中的交易是可鏈接的,這使交易跟蹤成為可能。其次,在PCN 中,當2 個沒有直聯通道的用戶利用中介用戶幫助完成交易時,很難對中介用戶保密2 個用戶的身份和交易金額,因為支付路徑的唯一標識符隱含了用戶和交易信息。更嚴重的是,當多個事務共享一個容量有限的通道時,所有的支付都將被終止,并導致PCN 的死鎖[25]。同時,蟲洞攻擊[26]使攻擊者能通過隔離中間用戶并與惡意礦工合謀來竊取合法礦工的交易費用。因此,為了確保鏈下支付通道的安全使用,支付通道的隱私和安全問題是值得關注和研究的。

2) 匿名貨幣交易隱私泄露

匿名貨幣在一定程度上保護了交易的私密性,然而,最近的一些研究發現目前的解決方案并不完善,仍存在隱私泄露問題。Kappos 等[31]系統地分析了Zcash 中交易的匿名性,通過研究Zcash 的透明交易和隱蔽礦池交互,Kappos 等發現利用簡單的試探法就可以將隱蔽池中69%的值和交易聯系起來。Biryukov 等[32]則提出了幾種“指紋”識別用戶交易的攻擊。由于比特幣交易中的數額可以細分到非常高的精度,交易數額可以被攻擊者用作該交易的指紋,從而追溯交易的內在聯系。同時,通過觀察隱蔽交易輸入和輸出的數量(該信息在Zcash Sapling版本中是公開的,目前版本已經修復),攻擊者可以向目標地址發送大量的小額比特幣,并跟蹤涉及該地址的后續交易。最近,一種遠程側信道攻擊[33]分析了匿名交易的證明周期,最終利用零知識證明所需時間的不同、ping 的回應時間等側信道信息來推斷交易發出者和接受者的身份。以上列舉的幾種攻擊方法說明現有匿名加密貨幣系統無法達到完全的匿名性,因此,完善匿名貨幣架構、提高設計的安全性是至關重要的。

3) 智能合約漏洞

在應用層,智能合約也成為安全漏洞的滋生地,經過研究者的大量研究,智能合約的安全漏洞已充分暴露[52]。造成巨大損失的安全漏洞之一是時間限制。時間限制確定了當前狀態下允許的操作,一般來說,時間限制是由所有礦工一致同意的塊的時間戳決定。在區塊中使用相同的時間戳能確保智能合約在礦工中執行結果的一致性。然而,由于時間戳的選擇存在一定的不確定性,擁有合約中一定份額的攻擊者可以通過選擇有利于自己利潤的時間戳在挖礦中取得優勢。

另一個更嚴重的安全漏洞是重入問題[53]。理論上,當調用智能合約的非遞歸部分時,不應該在終止之前重新進入它,從而保證事務的原子性和順序性。然而,某些指令下的回退機制(例如CALL 和CALLCODE 指令)允許攻擊者重新進入調用函數。這會導致意外的行為和調用循環。此外,諸如DELEGATECALL、SELFDESTRUCT、CALL 和SSTORE 等指令,如果在智能合約中被濫用,可能會造成財產損失。然而,在智能合約的預期行為和實際行為之間很難發現指令的濫用和不匹配。更嚴重的是,區塊鏈的不變性意味著在部署后智能合約的缺陷得到修復的可能性微乎其微。

4 區塊鏈安全對策

本節將探討針對區塊鏈系統潛在安全問題的對策,以防御第3 節中所闡述的攻擊。

4.1 數據結構層安全對策

1) 高效保持一致性

如3.1 節所述,區塊的不一致性會引起區塊鏈結構分叉等問題,而保證一致性會影響到區塊鏈系統的運行效率,從而削弱可伸縮性。然而,為提高性能而設計的新方案可能會面臨更嚴重的不一致性問題。

為了提高交易的一致性同時保證高吞吐量,Syta 等[54]提出了一種可擴展的集體簽名協議Cosi來提高交易的確認效率。在Cosi 中,首先由領導者要求驗證某個區塊,然后一群證人利用溝通樹和施諾爾多重簽名[55]共同簽署該區塊。生成一個單聚合集體簽名后,所有共同簽署人就可以通過樹外的驗證者來驗證它,從而減少了每次交易的成本和時延。在 Cosi 的基礎上,Kogias 等[11]設計了ByzCoin——一個具有較強一致性的可擴展區塊鏈架構。如圖3 所示,為了減少確認時延,ByzCoin中的塊被分為微小塊和關鍵塊。同時,ByzCoin 利用生成樹拓撲來提高吞吐量。有了這些安全措施,當攻擊者掌握的計算能力不超過1/4 時,該系統就可以抵御多重攻擊,例如雙重支付和蓄意分叉等。然而,底層的CoSi 協議會使ByzCoin 變得不可靠,同時會暴露較高的出錯概率。因此,文獻[12]對CoSi協議進行了改進,構建了穩健生成樹拓撲,并使用BLS 多重簽名[56]替代了之前的Schnorr 多重簽名,使ByzCoin 更加可靠。BLS 多重簽名可以通過生成樹在單輪內完成簽名,這樣減少了消息的傳輸,從而降低了失敗概率。

圖3 Byzcoin 的基礎框架

另一個提高區塊鏈吞吐量的解決方案是分片[50,57]機制,它將處理交易的開銷分割為多個較小的節點組[13-14]。對于基于分片的區塊鏈系統,分片之間的不一致性稱為拜占庭故障(BF,Byzantine fault)[58]。為了克服拜占庭故障,RapidChain[13]在協議層對拜占庭故障進行處理。RapidChain 在分片中建立了一個參考委員會,它們需要接收到足夠多相同的關于同一區塊的消息來驗證領導者節點,并在較小的委員會中實現1/3 的總彈性。RapidChain 能高彈性地對抗拜占庭故障,可以容忍少于1/3 的破壞節點,優于之前的方案[50,59(]這些方案可以容忍不超過1/4的破壞節點)。隨后,ChainSpace 實現了一個基于分片的智能合約平臺,并使用提出的S-BAC 協議來保持節點之間的一致性[15]。在ChainSpace 中,審計者可以發現試圖將無效交易或對象引入誠實分片中的惡意分片。文獻[60]對實用拜占庭容錯協議進行了改進,降低了節點間通信成本,同時結合信譽模型,在一定程度上防御了女巫攻擊。然而,之前的分片方案要么不能支持完整的分片,要么降低了分片后的攻擊難度??紤]到這一問題,Wang 等[61]提出了Monoxide 系統,該系統通過引入異步一致性區域的概念,能在不影響去中心化和安全性的情況下對區塊鏈系統進行線性擴展。在每個分片中,Monoxide 采用Chu-ko-nu 挖礦技術來確保每個區域的有效挖掘能力相當,使攻擊者對任意區域的攻擊與對整個網絡的攻擊一樣困難。

2) 加強密鑰管理和密碼系統安全性

針對3.1 節所述的安全漏洞,BIP32 架構[43]加強了密鑰生成函數,其中,子密鑰的生成不再直接依賴于父節點的公鑰,而是結合父節點的擴展私鑰和索引來生成子密鑰,該操作能有效防止父節點密鑰的泄露。不過這種方案使子節點和父節點的公鑰失去了鏈接性,即無法從父節點公鑰生成子節點。Gutoski 等[62]借鑒了冗余的思想,存儲多個主私鑰,從而增強了比特幣錢包對主私鑰泄露的容忍性。但這種防御手段仍無法抵抗特權升級攻擊。Fan 等[63]設計了一種新型的HD 錢包方案,該方案使用單向陷門函數處理私鑰,進而對所有子節點隱藏私鑰,能有效抵抗特權升級攻擊。

4.2 網絡層安全對策

為了防止路由攻擊,從部署的角度劃分,可以實行短期和長期對策[17]。短期對策更容易部署,不需要對協議進行任何更改。在區塊鏈網絡中,如果來往于一個節點的流量經過多個不同的路徑,攻擊者必須知道相關的IP 地址,否則就會摧毀所有的路由。因此,如果節點所有者能增加節點連接的多樣性,攻擊將變得極其困難。此外,節點還可以監控相關的統計數據,以檢測往返時間的突然變化、連接的分布情況等。檢測到不尋常事件的節點可以建立額外的隨機連接來保護自己不受攻擊。

從長遠來看,對比特幣通信進行加密可以防止信息泄露,例如采用消息認證碼(MAC,message authentication code)可以防止消息被篡改;使用P2P流量加密協議[64],可以防止攻擊者獲取關鍵信息。這2 種對策都增加了時延攻擊的難度。此外,比特幣用戶可以要求多個對等方提供某個區塊,以免被阻斷或錯過區塊。文獻[65]提出了一種通用的檢測方法,該工作對挖礦全過程進行了狀態模擬,并通過分析區塊鏈當前的狀態檢測,判斷當前區塊鏈系統所面臨的攻擊力度。

4.3 共識層安全對策

1) 確保區塊鏈的分散化

為了解決共識協議(例如工作量證明或權益證明)的再集中化問題,Borge 等[19]提出了全新的個人身份證明機制(PoP,proof-of-personhood)并設計了一種名為PoPCoin 的加密貨幣。個人身份證明協議利用集體簽名和環簽名將在線身份和離線實體結合起來,使加密貨幣重新分散化。在PoPCoin 中,系統為每個用戶分配了一個加密的身份令牌,同時不泄露關于個人的敏感信息。這樣一來,既保證了問責性,又保證了匿名性。PoPCoin 將加密貨幣的鑄造與用戶實體結合,并使每個礦工以相同的速度鑄造新幣,這使虛擬用戶與現實世界緊密聯系,從而有利于抵御女巫攻擊[49]。

PoPCoin 提供了一種與真人綁定的去中心化貨幣鑄造機制,而SmartPool[18]則探索了去中心化礦池的可行性,它的核心思想是利用智能合約替代之前的礦池運營商。為了保證采礦獎勵分配的公平性,SmartPool 使用概率驗證技術來確保惡意礦工不會獲得額外利益。這樣一來,區塊鏈安全將依賴于整個網絡和以太坊的共識機制,而不是單一實體,同時,所需費用也會比普通礦池低。

2) 阻止FAW 攻擊

要檢測一個礦池是否被攻擊,可以比較礦工提交的PPoW 和FPoW。然而,簡單的檢測攻擊是不夠的,因為攻擊者還可以使用女巫節點獲得額外的獎勵。一個可行的解決方案是定期更新beacon 值[22],如果一個區塊包含未更新的beacon 值,那么它就是不合法的。另一種方法是引入參與費用來減少女巫節點的數量,但這可能會降低礦池對礦工的吸引力。另外,更有利于FPoW 的獎勵分配方式也有助于激勵礦工們誠實挖礦。

4.4 應用層安全對策

1) 鏈下支付通道的保密性和匿名性

近年來,大量工作致力于分析和提升鏈下支付通道的安全性。為了構建具有良好保密性的支付通道,Green 等[24]提出了盲鏈輕量交易(BOLT,blind off-chain light-weight transaction),斷開了統一支付通道中交易的聯系。作者設計了3 種支付通道:單向支付通道、雙向支付通道和間接支付渠道,并討論了每種類型的安全風險。BOLT 能在商家不知道付費者身份的情況下創建匿名支付通道。不過在更一般的情況下,交易路徑中會存在多個中介,為了保護多跳支付網絡的隱私,Malavolta 等[25]設計了多跳哈希時間鎖定合約(HTLC,multi-hop hashed time lock contract)。作者在通用可組合性框架的基礎上提出了Fulgor 和Rayo 這2 個協議。Fulgor 是PCN上首個保護隱私的支付協議,但它是一個阻塞式協議,容易造成死鎖;Rayo 是一個非阻塞式協議,解決了死鎖問題?;谶@2 個協議,HTLC 能保證支付通道途徑的其他用戶無法獲取交易隱私信息。然而,目前保證支付渠道安全的解決方案,要么是不兼容的[24],要么是低效的[25]。鑒于上述缺點,Malavolta 等[26]進一步提出一種名為匿名多跳鎖(AMHL,anonymous multi-hop lock)的新機制,構建了一種具有高互操作性的實用隱私保護PCN,該方案通過犧牲額外的一輪通信避免蟲洞攻擊。表2對以上3 種方案進行了比較。

2) 匿名貨幣增強

針對指紋分析攻擊,Kappos 等[31]提出,如果用戶與礦池的交互行為沒有規律,該攻擊的效率會大大降低。因此可以采取均等支付的方式來抵抗該攻擊,即用戶均在相同的時間間隔內交易相同數額的資金。這種防御方法能有效抵抗指紋分析攻擊[31-32]對用戶特有行為的分析。與側信道攻擊的防御思路類似,文獻[33]提出可以在底層使用無差別加密算法進行基本操作,這樣一來,攻擊者無法通過加解密的時間差異側面推測出敏感信息。但以上的增強方案會使匿名貨幣系統效率大大降低,因此,如何在保證效率的情況下設計出匿名性好的加密貨幣系統是目前學術界和工業界的一大挑戰。

3) 智能合約加強

為了解決智能合約的安全漏洞,研究者試圖從各個方面加強智能合約中的安全短板。Kalra 等[27]設計了ZEUS,實現了智能合約的自動形式化驗證。它制定了規范的Solidity[66](一種用于區塊鏈的高級編程語言)語義和策略來確定合約是否可以接受,并提供了從Solidity 到LLVM 的位碼轉換程序。ZEUS 在給定策略規范的情況下能自動插入驗證條件。相較于支持 LLVM 級別檢測的 ZEUS,TEETHER[28]則致力于字節碼級別的驗證,可以自動檢測第三方漏洞。與開發階段的調試工具ZEUS不同,TEETHER 可以使用符號執行,在不訪問合約源代碼的情況下,在以太機上檢測現有合約的漏洞。通過形成程序的控制流圖(GFC,control flow graph),TEETHER 對程序的輸出進行分析,以發現其潛在的缺陷路徑。TEETHER 和ZEUS 有不同的設計目標,TEETHER 只關注惡意轉賬行為,而ZEUS 更關注智能合約的正確性和公平性。

然而,當惡意行為正在進行時,TEETHER 和ZEUS 的檢測將失去作用。為了解決這個問題,Rodler 等[29]設計了Sereum 來實時檢測重入攻擊,該攻擊能導致存儲變量的改變和進程中合約狀態的惡意更新?;贓VM 字節碼指令級別的運行時監視器,Sereum 采用污點跟蹤的方法監控變量更新,可以有效地檢測可疑行為,防止了基本的和高級的重入攻擊。同時,Sereum 對EVM 進行了擴展,引入了用于監視和防御的污染引擎和攻擊檢測器。Sereum 能動態地檢測重入攻擊,但對其他類型的攻擊無能為力。Zhang 等[30]設計了TxSpector,它通過記錄字節級的交易進程并構造執行流圖(EFG,execution flow graph)來提取數據之間的邏輯關系,最后用戶能根據自己制定的規則來進行實時檢測,該通用框架可以檢測重入攻擊、DoS 等多種攻擊。

表2 3 種鏈下支付通道方案的比較

5 區塊鏈安全技術的研究展望

針對前文所總結的區塊鏈系統的安全問題,本節將討論關于加強區塊鏈安全與防護工作的4 個研究方向。

5.1 防御網絡層攻擊

利用邊界網關協議劫持等網絡攻擊,攻擊者可以在控制網絡運營商的情況下延遲網絡中消息的發送,并在以太坊平臺上發起平衡攻擊。網絡是區塊鏈交易的底層基礎,在區塊鏈上進行交易時必須考慮網絡布局的影響。因此,研究調查更多針對網絡的攻擊效果并進一步研究BGP 劫持帶來的解決安全問題仍是必要的。

5.2 改進共識層協議

為了實現區塊鏈系統的穩健性和可擴展性,需要在共識機制的安全性和有效性之間進行權衡。集體簽名可以提高基于生成樹拓撲的可伸縮性,但樹結構可能會受到惡意領導節點和中心化的影響[11]。因此,有必要對防范惡意領導和集體簽名去中心化進行深入分析。此外,盡管最近的研究在減少女巫節點攻擊上取得了一些進展[26],但目前的研究仍然缺乏能足以防御各種攻擊的系統且實用的共識協議。

5.3 加強應用層智能合約

1) 提高鏈下支付通道的隱私性和匿名性

PCN 目前已經被廣泛用來減輕區塊鏈網絡的負擔,并有許多研究致力于建立具有隱私保護的PCN 以確保匿名性。然而,PCN 中還存在許多仍未被攻擊者利用的弱點,如路由的龐大規模、網絡的形成和流動性等。這些弱點一旦加以利用,很有可能對區塊鏈網絡形成巨大的安全威脅。另一個問題是PCN內部和外部的隱私泄露。HTLC 作為鏈下支付通道安全措施的核心,其通道路徑具有獨特性和固定性,但這一操作會公開交易中涉及的用戶身份。當PCN含有多個中介點時,保持來自中間節點的交易量是一個未解決的問題。此外,根據文獻[25],必須以匿名為代價來維護同步。因此,如何找到一種同時保證同步和匿名性的方法是一個有待解決的問題。

2) 智能合約的安全性

智能合約被認為是最具顛覆性的應用之一,其安全漏洞給大量的投資者和區塊鏈社區投下陰影。Solidity 作為智能合約開發中最常用的語言之一,由于它的特性和安全防范的缺乏,尤其是在公共環境下,Solidity 被認為是不安全的。為了進一步提高智能合約的安全性,一種更安全、對編碼人員更有約束的語言是目前的迫切需求。另外,在部署后,由于區塊鏈的不可篡改性,智能合約一旦公開將是不可變的。但是,在智能合約執行期間可能會發現致命的錯誤。因此,在不修改智能合約的情況下,設計出一種修復漏洞機制是困難但必要的。Krupp 等[28]進一步證明了通過智能合約的字節碼暴露漏洞是可行的,因此對字節碼層的保護需要進行更多的研究。

5.4 加強匿名貨幣安全

匿名貨幣架構目前還存在許多問題,無法達到完全匿名性,例如,攻擊者可以通過側信道、交易指紋等信息跟蹤交易。然而,保護側信道信息的泄露是困難的,而且可能會帶來效率的下降,因此可以考慮使用不經意隨機存儲(ORAM,Oblivious RAM)技術和差分隱私技術來保護交易的敏感信息。另外,如何設計并在區塊鏈系統上應用一種加密時間不固定并且高效的底層加密算法是一種非常有潛力的研究方向。

6 結束語

本文主要關注區塊鏈系統在不同層次上的安全和隱私問題,從區塊鏈的數據結構層、網絡層、共識層和應用層4 個層次分別介紹和分析了區塊鏈系統現有的安全問題及前沿的防御對策。最后,總結了該研究領域的挑戰和潛力,并展望了區塊鏈安全未來可能的研究方向。希望本文能為今后區塊鏈安全及相關研究提供指導。

猜你喜歡
攻擊者礦工比特
基于新SEIRS 的礦工不安全行為傳播分析
基于貝葉斯博弈的防御資源調配模型研究
金牌挖礦工
礦工
正面迎接批判
正面迎接批判
比特幣還能投資嗎
比特幣分裂
比特幣一年漲135%重回5530元
神秘的比特幣
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合