?

區塊鏈安全問題研究綜述*

2024-01-24 14:40沈傳年
計算機工程與科學 2024年1期
關鍵詞:挖礦哈希攻擊者

沈傳年

(國家計算機網絡應急技術處理協調中心上海分中心,上海 201315)

1 引言

自2008年Nakamoto[1]首次提出比特幣概念至今,已歷時15年,在這期間,以比特幣為代表的數字貨幣的發展規模和社會影響力不斷擴大,其底層核心技術區塊鏈[2]憑借其去中心化、去信任化、不可篡改、可追溯、匿名性等技術特點,為經濟社會發展中的存證問題、信任問題、數據治理問題等提供了新的解決思路。目前區塊鏈技術的應用場景已延伸至數字金融、數字政務、物聯網、智能制造、供應鏈管理等眾多領域,區塊鏈正推動從“信息互聯網”向“價值互聯網”的重大轉變[3],引領著全球新一輪技術創新和產業變革。多個國家已將其重要性提升至國家戰略層級。日本于2017年實施了《支付服務法案》;德國于2019年發布《德國國家區塊鏈戰略》;美國國會于2019年批準了《區塊鏈促進法案》;2019年10月24日,中國共產黨中央委員會政治局就區塊鏈技術發展現狀和趨勢進行第十八次集體學習時強調“區塊鏈技術的集成應用在新的技術革新和產業變革中起著重要作用,要把區塊鏈作為核心技術和自主創新的重要突破口”。

縱觀區塊鏈的發展,大致可以分為3個階段:(1)區塊鏈技術在以比特幣為代表的數字貨幣領域的應用被稱為區塊鏈1.0。在這一階段,區塊鏈主要應用于金融領域數字貨幣的支付。(2)以以太坊[4]為代表的通過將可編程化的智能合約[5]引入區塊鏈的應用被稱為區塊鏈2.0。智能合約的引入使得區塊鏈的應用范圍從貨幣支付擴展至其他金融領域,開拓了數字貨幣以外的泛金融應用。(3)區塊鏈技術在金融領域以外的其他領域的應用被稱為區塊鏈3.0。在這一階段,區塊鏈的應用范圍將進一步擴展至政府、能源、醫療、物流、制造業等新領域,通過區塊鏈技術改變現有業務模式已成為各行業領域新的發展趨勢。區塊鏈不同階段的發展成果相互影響相互促進,不斷推動著區塊鏈技術向前發展。

然而,隨著區塊鏈技術研究的持續深入和應用領域的不斷拓展,區塊鏈因其底層技術的缺陷[6]和應用場景的復雜多樣性等而導致的安全問題也逐漸顯露。針對區塊鏈的安全事件數量正呈現逐年遞增的高發態勢,區塊鏈發展史上具有代表性的重大安全事件如表1所示。安全問題已成為當前制約區塊鏈發展的重要因素[7]。因此,加強對區塊鏈安全問題的研究已經成為業界關注的重點。

本文第2節介紹區塊鏈的相關知識,包括區塊鏈的基本概念和體系架構;第3節參照區塊鏈的體系架構,分別從數據層、網絡層、共識層、激勵層、合約層、應用層以及跨鏈7個方面對區塊鏈的安全問題和防范策略進行分析;第4節從政策監管和技術監管2個方面對區塊鏈的安全監管進行探討;第5節對全文進行總結。

2 區塊鏈相關知識

2.1 區塊鏈基本概念

目前,業界對區塊鏈的定義并無統一標準,雖然不同機構組織對區塊鏈的定義不同,但其本質上基本相似,即區塊鏈是一種將數據區塊根據時間先后順序相連接的鏈式數據結構,通過塊鏈式數據結構來存儲和驗證數據,通過分布式節點共識機制[8]來生成和更新數據,并以密碼學算法來確保數據不可偽造、不可虛構和不可篡改的去中心化、去信任化的分布式存儲和計算范式。根據準入機制以及網絡中心化程度的不同,一般情況下可將區塊鏈系統分為公有鏈、聯盟鏈和私有鏈。區塊鏈分類比較如表2所示。

2.2 區塊鏈體系架構

從以比特幣為代表的區塊鏈1.0,到以引入智能合約的以太坊為代表的區塊鏈2.0,再到以去中心化應用為代表的區塊鏈3.0,盡管區塊鏈在不同發展階段的具體體現有所不同,但其在整體體系架構上依然保持著諸多的共同之處。如圖1所示,區塊鏈的體系架構主要包括數據層、網絡層、共識層、激勵層、合約層和應用層。

Table 1 Overview of some major blockchain security incidents表1 區塊鏈部分重大安全事件概覽

Table 2 Comparison of public blockchain,consortium blockchain and private blockchain表2 公有鏈、聯盟鏈和私有鏈對比

Figure 1 Architecture of blockchain圖1 區塊鏈體系架構

(1)數據層。數據層作為區塊鏈的最底層,通過數據區塊、鏈式結構、非對稱加密、時間戳、哈希函數和Merkle樹[14]等相關支撐技術來構造區塊鏈的數據結構,并實現區塊鏈數據存儲和賬戶交易的安全性。

(2)網絡層。網絡層實現了區塊鏈節點之間的組網和數據傳輸功能,其功能模塊主要包括P2P(Peer-to-Peer)網絡、通信機制和驗證機制。在區塊鏈網絡中,節點可自由加入或退出P2P網絡,鏈中所有節點均可對等進行路由、校驗和記賬等操作,可以有效避免單點或部分節點故障問題,任意節點之間可直接進行交易,無需中心節點的干預。

(3)共識層。共識層能夠使得高度分散的節點在去中心化的區塊鏈系統中對于區塊數據的有效性達成共識,從而確保新區塊可以被準確地追加到區塊鏈中。一般情況下,不同區塊鏈系統所使用的共識算法也不相同,公有鏈由于對一致性、正確性要求較低,通常使用最終一致性共識算法[15];而聯盟鏈和私有鏈由于對一致性、正確性要求較高,通常使用強一致性共識算法[15],實際使用中應結合具體應用場景需求進行選擇。

(4)激勵層。激勵層通過激勵機制使得共識節點積極參與區塊計算以便贏得記賬權,從而能夠維持區塊鏈賬本的持續更新。激勵層主要包括激勵機制和分配制度等。并不是所有區塊鏈系統都使用激勵機制,激勵機制一般應用于公有鏈中,聯盟鏈和私有鏈是否使用激勵機制需要根據實際情況決定,因為聯盟鏈和私有鏈中的節點由內部指定的或由利益共同體所組成,一般無需激勵。

(5)合約層。合約層在區塊鏈系統去中心化、可溯源、不可篡改等特性的基礎上為區塊鏈系統增加了高度靈活可編程的特性,從而極大地擴展了區塊鏈的應用范疇。合約層主要包括編程語言、算法機制、智能合約等。智能合約由互不信任的多方用戶共同協商制定,合約中明確規定了交易各方的權利及義務,并針對這些權利及義務進行編程,代碼中包含了合約條款的觸發條件和響應規則。

(6)應用層。應用層通過調用合約層的智能合約接口,使得用戶可以自定義發起和執行合約,以適配區塊鏈不同應用場景需求,為用戶提供數字貨幣、物聯網、公共服務等多種去中心化的服務和應用,能夠實現各種應用場景下區塊鏈應用案例的落地,極大地豐富了整個區塊鏈的生態應用。

3 區塊鏈安全問題

區塊鏈技術在設計之初就從不同層級采用相關技術為整個系統提供了一定的安全保障。然而,隨著區塊鏈技術的快速發展和廣泛應用,其安全問題也越發突出。近年來,區塊鏈領域的安全事件不斷發生,且涉及的金額巨大,安全問題已成為制約區塊鏈技術深入發展和規?;瘧玫闹匾蛩?。本節將參照區塊鏈的體系架構,分別從數據層、網絡層、共識層、激勵層、合約層、應用層以及跨鏈7個方面對區塊鏈的安全問題和防范策略進行分析。區塊鏈安全問題詳細分類如圖2所示。

Figure 2 Classification of blockchain security problems圖2 區塊鏈安全問題分類

3.1 數據層安全問題

數據層封裝了區塊鏈底層數據區塊、鏈式結構、哈希算法、時間戳等基礎數據和加密算法,是整個區塊鏈中最底層的結構,也是實現其他5層結構的基礎,其安全性決定了整個區塊鏈的安全。數據層雖然使用了大量的加密算法來確保區塊數據的不可篡改性和隱私安全性,但其仍然面臨著量子計算攻擊、哈希碰撞攻擊、用戶密鑰泄露等方面的安全問題。

3.1.1 量子計算攻擊

在數據層中用戶通過哈希函數和非對稱加密技術進行安全交互,即用哈希算法進行挖礦,用非對稱加密技術提供數字簽名,這可以有效保證用戶的身份認證和交易安全。但是,隨著量子計算技術的快速發展,基于Grover算法和Shor算法[16]的量子計算正對哈希函數和公鑰密碼算法構成極大的潛在威脅。對于哈希函數,量子計算可以通過Grover算法加速哈希的生成,以達到重新創建區塊鏈的目的,同時還可以在保持數據完整性的前提下,通過哈希沖突檢測來替換區塊數據結構。而對于公鑰密碼算法,量子計算可以通過Shor算法在多項式時間內攻破諸如橢圓曲線數字簽名算法ECDSA(Elliptic Curve Digital Signature Algorithm)[17]等公鑰密碼算法。因此,區塊鏈技術必須提前布局時能夠對抗量子計算攻擊(Quantum Computing Attack)的新型加密技術,否則,隨著未來量子計算技術的成熟應用,基于現有加密技術的區塊鏈系統將可能完全失去安全性。量子計算對現行密碼體制的影響如表3所示。

Table 3 Impact of quantum computing on current cryptography表3 量子計算對現行密碼體制的影響

防范策略:針對量子計算攻擊,雖然現階段量子計算還不足以對區塊鏈中的加密算法構成嚴重威脅,但必須加快預研抗量子計算攻擊的后量子密碼PQC(Post-Quantum Cryptography)算法。目前美國IBM公司研制的CRYSTALS-Kyber算法(用于密鑰封裝)和CRYSTALS-Dilithium算法(用于數字簽名)、法國Thales公司研制的Falcon算法(用于數字簽名)、德國英飛凌公司研制的SPHINCS+算法(用于數字簽名)已入選美國國家標準與技術研究所NIST(National Institute of Standards and Technology) PQC(Post-Quantum Cryptography)標準化算法[18]。

3.1.2 哈希碰撞攻擊

哈希是指將任意長度的不同輸入映射成固定長度的且獨一無二的輸出值(又稱哈希值)。如果攻擊者針對哈希函數的特性,通過尋找算法的弱點來構造函數,使得不同輸入均得到相同的哈希值,當這些值保存至哈希表中時,哈希表就會退化為單鏈表,而哈希表各種操作的時間會因此提升一個數量級,從而消耗系統大量的CPU資源,系統將失去快速響應請求的能力,最終達到拒絕服務攻擊的目的,這就是哈希碰撞攻擊(Hash Collision Attack)。哈希碰撞攻擊主要發生于散列函數中,目前比較典型的案例有“MD5摘要算法碰撞”[19]和“SHA1摘要算法碰撞”[20]。

防范策略:針對哈希碰撞攻擊,一方面可通過提高哈希函數設計復雜度來對抗攻擊;另一方面可使用開放地址法[21]、鏈地址法、再散列函數法等解決哈希碰撞攻擊。

3.1.3 用戶密鑰泄露

當前,基于區塊鏈技術的數字貨幣交易平臺發展迅猛,但是各平臺在安全性方面的投入相對有限,這也導致相關安全事件不斷發生。根據歐科云鏈研究院發布的《2022年全球區塊鏈生態安全態勢報告》,用戶私鑰泄露和私鑰丟失是導致2022年區塊鏈生態安全事件發生的首要原因,由此導致的資產損失高達9.3億美元,約占全年安全事件總損失的40%。目前區塊鏈系統尚缺乏有效的密鑰管理體制。一方面,區塊鏈系統的去中心化特性使得密鑰只能由節點自行保管,缺少傳統意義上的由中心節點參與密鑰管理的平臺管控;另一方面,區塊鏈系統的不可篡改特性也會使得用戶密鑰一旦泄露或丟失,用戶將失去對賬戶資產的控制,給用戶帶來不可逆轉的資產損失。

防范策略:針對用戶密鑰泄露,可通過第三方機構托管或門限簽名技術等方式來確保用戶密鑰的安全性。

3.2 網絡層安全問題

網絡層作為區塊鏈系統信息傳輸的基礎層級,主要通過P2P網絡組網方式、特定信息傳播協議以及數據驗證機制等功能模塊,使得區塊鏈網絡中的每個節點都能夠合法、平等地加入并參與共識和記賬。由于區塊鏈網絡層包含了多種網絡技術,而各網絡技術本身存在著這樣或那樣的安全問題,這就會給區塊鏈網絡層帶來相關安全風險。目前區塊鏈網絡層常見的安全問題包括P2P網絡安全攻擊、BGP(Border Gateway Protocol)劫持攻擊、節點漏洞攻擊以及分布式拒絕服務攻擊等。

3.2.1 P2P網絡安全攻擊

區塊鏈的底層網絡技術采用的是P2P網絡。由于P2P網絡提供的是一種分布式、自組織的連接模式,缺少傳統中心化網絡中的節點身份認證、網絡入侵檢測、通信數據驗證等安全機制,這就使得區塊鏈網絡中的節點極易遭受惡意攻擊。惡意節點可以輕易發布非法內容,且由于不易被檢測到,可以快速不受限制地進行傳播;惡意節點還可以通過偽裝自己來對區塊鏈網絡發動攻擊,并且可以自由加入或退出網絡。

防范策略:針對P2P網絡安全攻擊,可通過限制未經授權的節點接入區塊鏈網絡、增加網絡異常行為檢測、修改節點連接設置等措施解決可能面臨的被攻擊風險。

3.2.2 BGP劫持攻擊

邊界網關協議BGP是一種實現了自治系統之間的路由可達,并能夠計算最優路徑的距離矢量路由協議。BGP劫持攻擊(BGP Hijacking Attack)是指攻擊者通過錯誤地宣布實際上并不擁有或控制的路由信息來惡意操控互聯網流量的路由,來對區塊鏈節點的流量進行誤導和攔截。區塊鏈節點的流量一旦被攻擊者所接管,將會破壞區塊鏈的共識機制和交易進程,對區塊鏈網絡的運行造成嚴重影響。

防范策略:針對BGP劫持攻擊,由于目前大多數比特幣節點都托管在少數幾個特定的互聯網服務提供商上,因此可建立專門用于區塊鏈的去中心化網絡,從而減少攻擊者通過節點劫持給區塊鏈網絡帶來的嚴重影響。

3.2.3 節點漏洞攻擊

區塊鏈網絡中的節點是驗證和處理區塊鏈網絡交易信息的關鍵部分,由于去中心化等特點,區塊鏈網絡中只要有一個節點出現安全漏洞,就可能導致成千上萬個節點遭受攻擊,甚至可能造成整個區塊鏈網絡癱瘓。攻擊者可以通過對區塊鏈網絡中的節點進行掃描來實施探測攻擊,以獲取節點的IP地址,并借助IP地址分析出網絡的規模以及節點的物理分布情況,甚至能夠搜索出節點的身份信息。攻擊者還可以通過主動獲取和被動監聽的方法來獲得節點的網絡拓撲結構,基于這些網絡拓撲結構推測出目標節點的路由信息,并通過對其相鄰節點的控制來實施對目標節點的攻擊。

防范策略:針對節點漏洞攻擊,一方面可加強對惡意節點的檢測,并將檢測到的惡意節點加入黑名單,以防止其繼續搜集節點信息;另一方面為了避免攻擊者通過發現網絡拓撲結構來獲取節點的身份信息,可以將區塊鏈運行在洋蔥網絡[22]、Riffle、I2P(Invisible Internet Project)等具有隱私保護功能的網絡上。

3.2.4 分布式拒絕服務攻擊

分布式拒絕服務攻擊(Distributed Denial of Service Attack)由位于不同地點的多個攻擊者同時對一個或多個目標實施攻擊,或者由攻擊者通過控制不同地點的多臺計算機來同時攻擊目標對象。在區塊鏈網絡中,攻擊者通過利用大量分布在世界各地的不同節點向目標對象發送合法的請求,以達到大量占用區塊鏈網絡節點資源的目的,使得合法用戶節點無法提供正常服務。攻擊者通過DDoS(Distributed Denial of Service)攻擊不但能夠影響區塊鏈網絡的運行速度,甚至還可以直接使網絡癱瘓,導致諸如礦池脫機、目標節點離線等安全問題。

防范策略:針對分布式拒絕服務攻擊,一方面可加強對網絡攻擊流量的監控識別,及時發現并清洗攻擊流量;另一方面可通過工作量證明等方式限制攻擊者對節點資源的惡意占用,只有通過工作量證明的用戶才能向驗證節點發送交易。

3.3 共識層安全問題

區塊鏈現有的共識機制主要包括工作量證明PoW(Proof of Work)、權益證明PoS(Proof of Stake)、股份授權證明DPoS(Delegated Proof of Stake)和實用拜占庭容錯PBFT(Practical Byzantine Fault Tolerance)等。由于在實際應用場景中可能會出現惡意攻擊、延時等復雜情況,區塊鏈系統中的眾多共識機制都存在局限性,并不適用于所有的應用場景。根據區塊鏈所使用的共識機制的不同,攻擊者會采取不同的攻擊手段來阻止全網節點達成共識。目前常見的攻擊方式包括女巫攻擊、雙花攻擊、自私挖礦攻擊、幣齡累計攻擊和預計算攻擊等。

3.3.1 女巫攻擊

女巫攻擊(Sybil Attack)是對區塊鏈中同一節點數據需要備份到其他不同分布式節點這一數據冗余機制的一種攻擊方式。女巫攻擊通過在區塊鏈網絡中創建一個惡意節點的多重偽裝身份的節點,并將這些具有偽裝身份的節點在整個區塊鏈網絡中進行廣播,當區塊鏈網絡中的可靠節點需要借助這些偽裝節點進行信息查詢驗證時,惡意節點就能操控偽裝節點向可靠節點提供虛假信息甚至拒絕提供信息,當區塊鏈網絡中的偽裝節點數量超過可靠節點數量時,攻擊者就可以操控區塊鏈的投票選舉,憑借領先的投票優勢擊退可靠節點,并拒絕新的節點加入區塊鏈網絡,以達到對整個區塊鏈系統的控制,從而實施諸如更改交易記錄、逆轉交易等惡意行為。值得注意的是,公有鏈由于其共識機制不依賴于節點數量,因此一般不會存在女巫攻擊的風險,而聯盟鏈由于需將節點數量控制在一定的范圍以提高其共識效率,這就為女巫攻擊提供了存在空間。

防范策略:針對女巫攻擊,一是可通過加入身份認證機制,使得新節點只有獲得網絡中絕大多數可靠節點的認證共識后,才能加入區塊鏈網絡,從而避免攻擊者偽造節點身份;二是可提高節點申請多身份的門檻,通過提高攻擊者的攻擊成本,在一定程度上緩解女巫攻擊;三是可使用適當的共識算法監控節點行為,重點監控只轉發來自同一個用戶的節點。

3.3.2 雙花攻擊

雙花攻擊(Double Spending Attack)主要是針對PoW共識機制的一種攻擊方式,攻擊者借助交易驗證時間存在延遲等因素,不斷發起和撤銷交易,以達到反復利用同一筆數字資產從而實現非法獲利的目的。目前,雙花攻擊主要有5種形式的攻擊方式,即51%攻擊(51% Attack)、Vector76攻擊(Vector76 Attack)、種族攻擊(Race Attack)、芬妮攻擊(Finney Attack)以及替代歷史攻擊(Alternative History Attack)。以51%攻擊為例,攻擊者利用同一筆數字資產同2個節點對象進行交易,攻擊者首先向節點1發起交易A,將一定數量的代幣投放至交易所,當交易A被確認后,對所投放代幣進行兌換,交易A被記錄進區塊鏈;同時攻擊者向節點2發起交易B,由于攻擊者擁有較強的算力,當其算力超過51%時,能夠通過分叉[23]創建一條新鏈進行挖礦,而根據區塊鏈的最長鏈原則[10],當新鏈長度超過原先主鏈時,原鏈作廢,新鏈成為主鏈,交易B被確認,交易A變為無效。原鏈所投放的代幣將重回攻擊者賬戶,但攻擊者卻已獲得了此前交易的兌換金,從而成功實現雙花。

防范策略:針對雙花攻擊,以51%攻擊為例,51%攻擊得以成功實施的關鍵在于算力過于集中,因此可通過擴大節點規模等方式使得算力盡可能分散。

3.3.3 自私挖礦攻擊

自私挖礦攻擊(Selfish Mining Attack)是Eyal 等[24]最早針對比特幣提出的一種攻擊方式。以比特幣區塊鏈為例,在自私挖礦攻擊中,當攻擊者先于誠實礦工挖到新區塊后,選擇不立即在區塊鏈上向其他礦工公布自己挖到的區塊,而是在挖到區塊之后繼續進行挖礦,直到攻擊者挖到第2個新區塊。當誠實礦工在原鏈基礎上挖到新區塊時,攻擊者會突然釋放之前保留的新區塊,形成區塊鏈分叉。由于攻擊者挖到的新區塊比誠實礦工的多,因此攻擊者的私鏈長度大于主鏈長度,根據最長鏈原則,攻擊者私鏈成為新的主鏈,誠實礦工不得不依附在由攻擊者控制的新主鏈上進行挖礦。攻擊者通過浪費誠實礦工的算力使自己獲得額外收益,降低了誠實礦工挖礦的積極性,同時也會引發越來越多的礦工進行效仿。在自私挖礦攻擊的基礎上,研究者又提出了自私挖礦的多種變種攻擊,主要包括自持攻擊(Self Holding Attack)、間歇自私挖礦攻擊(Intermittent Selfish Mining Attack)以及頑固挖掘攻擊(Stubborn Mining Attack)。自持攻擊是一種基于自私挖礦攻擊和扣塊攻擊的組合攻擊模型,該組合攻擊在攻擊者算力較小的情況下也能獲得較自私挖礦攻擊更高的收益。間歇自私挖礦攻擊是指攻擊者在難度調整后,即使不執行自私挖礦攻擊,也能夠比誠實挖礦獲得更多收益,即便在最保守的情況下,間歇自私礦工只要具備37%的算力,其單位時間內獲得的收益也比他們的公平份額要多。頑固挖掘攻擊則要求攻擊者在落后時也不要放棄,要加強與誠實礦工的合作,通過更加頻繁地在其私鏈上挖礦來增加收益。

防范策略:針對自私挖礦攻擊,Grunspan等[25]提出了一種新的挖礦難度調整公式,該公式在難度調整公式中加入了孤塊數量,這樣雖然無法完全避免自私挖礦攻擊,但即便在發生挖礦難度調整的情況下,也能使得自私挖礦不會比誠實挖礦更具優勢。

3.3.4 幣齡累計攻擊

幣齡累計攻擊(Coin Age Accumulation Attack)主要是針對“PoS+PoW”混合共識機制的一種攻擊方式。在這種共識機制下,挖礦難度不僅與節點的算力有關,還與節點賬戶上持有貨幣的數量和持幣時間有關。節點持幣數量越多,持幣時間越長,節點所持有的幣齡就越多,其挖礦難度也就越低,挖到區塊的可能性就越高,這也容易導致部分攻擊節點如果持有足夠多的貨幣,可能會增加足夠長的持幣時間,通過累計足夠多的幣齡來競爭記賬權。

防范策略:針對幣齡累計攻擊,可通過對用戶持有的幣齡設置最大上限或者取消幣齡作為競爭記賬權的重要參考因素,從而解決幣齡累計攻擊問題。

3.3.5 預計算攻擊

預計算攻擊(Precomputing Attack)主要是針對PoS共識機制的一種攻擊方式。在PoS共識機制中,當前區塊的生成難度取決于前一區塊的哈希值,如果攻擊者擁有足夠多的算力和權益,在生成區塊的過程中,可以通過隨機試錯的方式對第n個區塊的哈希值進行控制,直到攻擊者計算出第n+1個區塊的哈希值。通過這種攻擊方式,攻擊者可以獲取對應的區塊獎勵。

防范策略:針對預計算攻擊,關鍵需要阻斷當前區塊的生成難度與前一區塊哈希值之間的關聯關系,使得僅通過前一區塊的哈希值無法控制當前區塊的生成難度。

3.4 激勵層安全問題

激勵層的作用是對區塊鏈網絡中參與交易驗證和生成區塊的節點進行獎勵,在此過程中,惡意節點可能會通過一些違規方式來追求更高收益。目前激勵層常見的安全問題包括扣塊攻擊、跳池攻擊和無利益攻擊等。

3.4.1 扣塊攻擊

扣塊攻擊(Block Withholding Attack)是指已加入聯合采礦池的惡意礦工在成功挖到新區塊后,選擇將哈希值扣下,不向全網公布挖到的新區塊,導致礦池的全部挖礦產出小于所擁有算力的理論產出。惡意礦工實施扣塊攻擊不僅會影響自身的挖礦收益,還會浪費礦池的算力資源,降低礦池的整體收益,且礦池收益的損失要比惡意礦工自身收益的損失大得多,這也直接影響了礦池中誠實礦工的收益。如果目標礦池的競爭對手派出惡意礦工加入到該礦池,通過惡意礦工對目標礦池實施扣塊攻擊,將會導致通過降低目標礦池中誠實礦工的收益來迫使誠實礦工跳出目標礦池。在扣塊攻擊的基礎上,研究者又提出了扣塊攻擊的多種變種攻擊,主要包括分叉后扣塊攻擊(Fork After Withholding Attack)、間歇扣塊攻擊(Intermittent Block Withholding Attack)、叔塊扣塊攻擊(Uncle-Block Attack)、算力調整扣塊攻擊(Power Adjusting Attack)以及混合塊扣塊攻擊(Mixed Block Withholding Attack)。分叉后扣塊攻擊是指攻擊者將其算力分配到誠實挖礦和滲透挖礦之間,當攻擊者發現完整工作量證明FPoW(Full Proof of Work)作為滲透礦工時不會將其傳播給礦池管理者,而當外部誠實礦工發布信息時,便會立即將FPoW傳播給礦池管理者以產生分叉,從而浪費系統算力資源。間歇扣塊攻擊是指攻擊者根據難度調整周期間歇性實施的攻擊,攻擊者暫停攻擊的原因包括礦池更新、雇傭變化、遇到對抗扣塊攻擊等,即使攻擊者的獎勵率不斷變化,間歇扣塊攻擊的獎勵率也要高于傳統扣塊攻擊的。叔塊扣塊攻擊使得攻擊者在網絡環境對其不利的情況下攻擊也能有效,而且影響力越大的叔塊扣塊攻擊對易受攻擊的區塊鏈系統造成的風險也越大?;旌蠅K扣塊攻擊是指攻擊者通過強化學習在扣塊攻擊、分叉后扣塊攻擊和功率自適應扣塊攻擊之間智能切換最佳行為,以獲得最大回報。

防范策略:針對扣塊攻擊,一方面礦池可以通過監測礦工的算力和工作量來避免礦工進行扣塊攻擊;另一方面可設置獎懲機制,獎勵誠實礦工舉報實施扣塊攻擊行為的惡意礦工,將被舉報的惡意礦工清除出礦池,不再允許其加入。

3.4.2 跳池攻擊

跳池攻擊(Pool Hopping Attack)是礦工通過選擇最佳跳槽策略為自己獲得最大化利益的攻擊方式。礦工在礦池提供挖礦獎勵較少時離開礦池,而在礦池提供挖礦獎勵較高時又重新加入礦池,這種選擇性地離開和重新加入礦池的操作能夠讓礦工獲得的回報比他們實際貢獻算力所得的回報還要多。礦工離開礦池不可避免地會降低礦池的整體哈希能力,可能會導致競爭對手在其之前完成對新區塊的挖掘。

防范策略:針對跳池攻擊,一方面礦池可以采用諸如PPS(Pay Per Share)、PPLNS(Pay Per Last N Shares)等更優的收益結算模式;另一方面可以強制礦工將代幣存放在第三方托管中,并要求礦工只能留在一個礦池,如果中途放棄挖礦將損失所存放的代幣。

3.4.3 無利益攻擊

無利益攻擊(Nothing at Stake Attack)是一種針對PoS下激勵機制的攻擊方式。在PoS共識機制中,PoS通過權益來實現共識,相比較PoW通過算力實現共識,節省了大量的資源成本,這就使得節點當生成區塊時可以獲得獎勵,而作惡時卻不會受到任何損失。當區塊鏈出現分叉時,由于節點不知道哪個分叉是對的,為了利益最大化,最佳策略是在每一個分叉上都進行挖礦。無論最后哪一個分叉勝出為主鏈,節點都能夠獲得收益而不會有任何成本損失。無利益攻擊會使得逐利節點將多個分叉的長度維持相似,從而導致鏈中其他節點無法對主鏈達成共識[26]。

防范策略:針對無利益攻擊,可以讓節點在參與創建和驗證區塊前必須向系統繳納一定數額的押金,當系統檢測出節點有雙簽行為時則認為其在進行無利益攻擊,系統將扣除其繳納的押金,通過懲罰機制來有效防范無利益攻擊。

3.5 合約層安全問題

智能合約是以以太坊為代表的一種由Solidity語言編寫并通過以太坊虛擬機EVM(Ethereum Virtual Machine)來執行的代碼,用戶可以自定義互不信任的參與方之間的交易規則,當鏈上交易進行時,所有節點都執行相同的代碼功能。智能合約一方面具有去信任、可定制、經濟高效等優點;另一方面由于其運行過程不可更改等特性,一旦合約出現漏洞,將會導致嚴重的安全威脅。近年來,區塊鏈安全事件爆發式增長,以2018年為例,因智能合約安全問題引發的資產損失已躍居為所有安全問題之首,從The DAO(Decentralized Autonomous Organization)攻擊[27]到BEC(BEauty Chain)漏洞[28],再到EOS(Enterprise Operation System)漏洞[29],智能合約已成為區塊鏈安全問題的高發地。本文以以太坊智能合約為例,通過分析過往智能合約安全事件,簡要介紹以下8種常見的智能合約安全問題,具體安全問題描述如表4所示。

3.5.1 整數溢出攻擊

整數溢出攻擊(Integer Overflow Attack)不僅在整個計算機信息系統中普遍存在,在由Solidity語言編寫的智能合約中更是多次出現整數溢出問題導致的重大安全事件。例如2018年的BEC漏洞,攻擊者利用整數溢出造成的程序漏洞(batchTransfer批量轉賬函數)成功獲取了巨額BEC幣。智能合約的整數溢出問題主要是由Solidity語言的整數類型所致,無論是uint8還是uint256,其整數型變量都存在一定的范圍,當存儲的數值超出變量類型所能表示的最大值或最小值時,溢出就會發生。整數溢出一般包括上溢和下溢2種情況。整數上溢是指數值的增量超出了所能存儲的最大值;整數下溢是指數值的減量超出了所能存儲的最小值。無論是上溢還是下溢都會使得智能合約中的相應判斷機制失效,從而給整個合約的安全帶來嚴重威脅。

Table 4 Classification of smart contract security problems表4 智能合約安全問題分類

防范策略:針對整數溢出攻擊,一方面可使用OpenZeppelin[30]建立SafeMath 庫進行程序編寫;另一方面可對運算邏輯進行驗證。

3.5.2 拒絕服務攻擊

拒絕服務攻擊(Denial of Service Attack)是以太坊智能合約中較為常見的攻擊手段。針對智能合約的拒絕服務攻擊屬于利用協議漏洞進行的攻擊,攻擊者通過破壞合約代碼的執行邏輯,來不斷消耗調用合約所需要的ETH(ETHer)、Gas等資源,使得智能合約在一段時間內甚至是永久性地無法被用戶使用,從而導致智能合約中的ETH永遠無法被提取出來。拒絕服務攻擊的代表案例包括KotET(King of the Ether Throne)安全漏洞事件[31]。2016年2月,區塊鏈游戲KotET因遭到拒絕服務攻擊,導致游戲玩家無論發送多少ETH給智能合約都無法成功競爭游戲中的“王位”;同年6月,GovernMental合約代幣也遭到拒絕服務攻擊,因其使用的250萬個Gas遠遠超出了合約所能負載的上限,導致1 100個ETH被困在了合約中。

防范策略:針對拒絕服務攻擊,一方面可通過引入時間機制,使得合約即便執行超時或者操作失敗也能夠繼續執行下去;另一方面可增設多個Owner 賬戶共同治理合約,必要時可考慮使用多簽名請求方式來加強權限控制。

3.5.3 無法獲取異常攻擊

在以太坊中,智能合約的執行一般需要調用其他合約,而能否返回被調用合約的異常執行狀態對智能合約的順利執行至關重要,尤其是在智能合約執行過程中,當執行智能合約的Gas消耗完畢、調用堆棧溢出或者執行到throw語句[32]時,如果被調用的合約在執行過程中出現異常,一般情況下會立即終止合約的執行并返回一個異常錯誤標識符(false)。但是,以太坊智能合約由于使用的Solidity語言缺少一個統一的方法來處理異常,會直接導致智能合約無法獲取被調用合約中出現的異常信息,從而影響智能合約的正常執行。

防范策略:針對無法獲取異常攻擊,在調用低級別函數后需對其返回值進行檢查,以便及時發現異常并進行處理。

3.5.4 重入攻擊

在以太坊中,智能合約可以通過函數調用或者發送以太幣來執行對其他外部合約代碼的調用,而這些外部調用很可能會被攻擊者所劫持,使得被攻擊的智能合約強制執行攻擊者所想要的危險操作。當智能合約進行跨合約轉賬操作時,一般先為接收方進行轉賬再更新其余額狀態,如果惡意接收方在接收轉賬的同時再次調用轉賬函數,并不斷重復該操作,可能會使接收方的余額狀態一直保持不變,但卻能不斷獲取被轉賬方的資產,最終導致被轉賬方的余額不足,從而實現重入攻擊(Reentrancy Attack)。重入攻擊的代表案例就是The DAO攻擊,該攻擊不僅在當時造成了巨額以太幣資產損失,還直接導致了原來的以太坊硬分叉[33]為以太坊和以太坊經典。

防范策略:針對重入攻擊,一方面轉賬操作盡量使用transfer等函數;另一方面如果使用低級別調用函數,需在內部狀態更改后再進行函數調用。

3.5.5 短地址攻擊

短地址攻擊(Short Address Attack)是利用EVM中對輸入字節自動補全機制來實施攻擊的一種形式,一般出現在代幣標準協議ERC-20(Ethereum Request for Command 20)智能合約中。當智能合約在調用ERC-20合約中的transfer 函數進行轉賬時,如果攻擊者刻意選擇以0結尾的地址,并且在傳入地址參數時把地址末位的0省去,EVM在解析ABI(Application Binary Interface)字符時發現輸入的合約地址長度沒有達到所要求的20字節。當地址長度小于20字節時,EVM會根據解析情況自動借用地址后面的數據對缺失的字節位在數據末尾進行補0操作以達到預期長度,即通過數據段的0來補齊地址段的0,這樣直接導致表示轉賬金額的數據段變短,此時EVM便會將數據段缺失的字節位在末尾用0自動補齊,從而使得轉賬金額瞬間暴增。攻擊者通過該方式就可以對交易實施攻擊以達到盜取更多資產的目的。

防范策略:針對短地址攻擊,需要嚴格檢查用戶輸入數據的有效性。

3.5.6 調用棧深度溢出攻擊

智能合約在對其他合約進行調用或者進行自身調用時,以太坊虛擬機調用棧深度將增加1[34],而以太坊虛擬機調用棧的最大深度為1 024,如果攻擊者惡意迭代調用合約1 023次后,再發起交易觸發調用受害者的智能合約,使其突破調用棧最大深度而產生溢出,從而使得合約出現異常。如果受害者的智能合約無法對該異常進行處理,攻擊者將通過調用棧深度溢出成功實施攻擊。

防范策略:針對調用棧深度溢出攻擊,需對頻繁地重復調用合約的操作行為進行嚴格檢查。

3.5.7 時間戳依賴攻擊

智能合約有時會通過當前區塊的時間戳來作為執行合約操作的觸發條件,如果時間戳不同,智能合約產生的相應執行結果也會有所差異。通常來說,當節點在處理一個新的區塊時,會為這個新區塊設置一個時間戳,如果新區塊的時間戳滿足大于上一個區塊的時間戳、且時間戳的變化范圍小于900 s的條件,那么這個新區塊的時間戳就是合規的。但是,如果有攻擊者通過惡意改變時間戳來控制智能合約的執行,便會使得智能合約的輸出結果對自己有利,從而造成嚴重的安全漏洞,這就是時間戳依賴攻擊(Timestamp Dependency Attack)。

防范策略:針對時間戳依賴攻擊,時間戳應用可考慮使用外部第三方服務。

3.5.8 交易順序依賴攻擊

在區塊鏈中,當交易被傳播出去進入尚未被確認的交易池時,一般都是被礦工隨機地包含在一個區塊中,交易被打包在區塊中的順序與區塊中交易的最終執行順序可能完全不同。如果一個區塊中包含的2個不同交易同時調用了一個智能合約,對于交易用戶而言并不能知曉其各自調用的合約當前處于什么狀態,交易用戶期望的合約調用狀態與合約實際執行狀態可能存在差異。而合約的最終執行狀態完全依賴于礦工所選擇的交易執行順序,某些合約對交易的執行順序要求較高,這就導致一旦交易執行順序有誤,會對合約的正常執行帶來嚴重的安全漏洞,以致影響交易的最終執行結果。如果攻擊者監聽到區塊中對應合約的交易,便可以通過懸賞合約、減少合約回報等方式發起惡意交易,擾亂交易順序,最終達到改變當前合約狀態,成功實施攻擊的目的。

防范策略:針對交易順序依賴攻擊,可比較2個交易中的賬戶信息、問題正確答案等的哈希值是否匹配,如果匹配則給提交正確答案的用戶發放獎勵。

3.6 應用層安全問題

應用層作為區塊鏈為用戶提供各種業務場景服務的應用載體,其安全性與區塊鏈技術本身關系不大,主要在于使用區塊鏈的對象類型。根據可能導致應用層出現安全威脅的潛在因素,可以將應用層的安全問題分為由用戶行為導致的安全攻擊和由第三方機構導致的安全攻擊2種情況。

3.6.1 由用戶行為導致的安全攻擊

普通用戶在使用區塊鏈技術時,可能會面臨用戶私鑰被竊取攻擊的風險,區塊鏈中用戶的私鑰只能由用戶自己保管,而用戶的安全意識不夠、自身的行為疏忽以及攻擊者采用諸如字典攻擊[35]等方式都可能導致用戶私鑰被竊取,用戶私鑰一旦丟失,用戶將失去對自己賬戶資產的控制,造成嚴重的資產損失。

防范策略:針對由用戶行為導致的安全攻擊,用戶應提高風險防范意識,一方面在進行信息交互時可通過數字證書認證等方式確認對方的身份,以防攻擊者篡改信息;另一方面要妥善保管好用戶私鑰,防止被攻擊者竊取。

3.6.2 由第三方機構導致的安全攻擊

在區塊鏈應用層,用戶很多情況下都需要借助提供區塊鏈服務的第三方機構來開展區塊鏈應用,這些第三方機構很有可能因為缺乏有效的安全防護措施而被攻擊者實施漏洞攻擊,從而導致用戶個人隱私信息被泄露。以加密數字貨幣錢包為例,其熱錢包[36]在使用過程中需要一直保持聯網在線狀態,由于有的交易平臺只使用單個私鑰來保護熱錢包,攻擊者極易通過在線訪問或竊取私鑰來破解熱錢包;而冷錢包雖然可以通過非聯網在線狀態有效避免外部攻擊,但也可能因其自身硬件等方面的設計漏洞而帶來安全隱患。

防范策略:針對由第三方機構導致的安全攻擊,理論上來講難以完全消除其安全風險,但可以通過諸如增強應用層軟件保護等方式在一定程度上加以防范。

3.7 跨鏈安全問題

隨著區塊鏈技術的深入發展以及不斷應用,適用于不同應用場景需求的區塊鏈網絡應運而生[37]?;诓煌夹g架構的區塊鏈之間相互獨立,導致區塊鏈的“價值孤島”效應凸顯,而跨鏈技術作為實現不同區塊鏈之間安全高效的業務協同及價值流通的重要技術手段,有效解決了平行鏈之間互聯互通的需求,大幅提升了單個區塊鏈的數據使用價值和可擴展性。然而,跨鏈技術及應用目前還處于起步階段,由于其在跨鏈資產管理、交易性能等方面還有較大提升空間,因此尚未獲得廣泛應用。尤其是近年來,跨鏈應用領域頻繁發生重大安全事件,使得跨鏈安全問題已成為制約跨鏈技術進一步發展的重要因素。本文將重點對7種跨鏈安全問題進行分析,其中前3種屬于跨鏈主要機制的安全問題,后4種屬于跨鏈過程中的共性安全問題。

3.7.1 公證人機制安全

公證人機制(Notary Scheme)[38]是目前應用最為廣泛、也是技術實現最為簡單的一種跨鏈機制,其無需考慮不同區塊鏈的底層結構差異。公證人機制由于引入了受信的第三方機構,中心化風險較高,雖然已有比較成熟的選舉策略,但其跨鏈價值轉移完全依賴于第三方公證人的誠實程度,只有當第三方公證人完全真實可靠,才能確??珂溄灰椎陌踩?。盡管公證人機制中的多簽名公證人機制、分布式簽名公證人機制能夠在一定程度上增強其安全性,但并沒有完全解決中心化依賴問題,其共謀風險依舊存在[39]。

防范策略:針對公證人機制中存在中心化風險的問題,可將公證人機制與側鏈、哈希鎖定等技術相結合,以進一步弱化其中心化風險。

3.7.2 側鏈/中繼安全

側鏈(Side Chain)是與主鏈相互獨立的區塊鏈系統,用戶可以使用主鏈的代幣在側鏈上進行跨鏈交易。由于側鏈和主鏈是相互獨立的,因此其安全機制也相互獨立。主鏈的安全優勢在側鏈上無法有效體現,在跨鏈交易過程中,側鏈只需要讀取所有的區塊頭信息來對交易信息進行驗證,無法像主鏈節點那樣可以獲取全鏈網絡上所有的交易數據信息。因此,也就無法做到對主鏈全部交易信息的全面驗證和追溯[40],無法對諸如雙花攻擊等一些常見的惡意攻擊行為進行有效識別。而中繼鏈(Relay Chain)作為一種有效融合公證人機制和側鏈機制的第三方公有鏈,其安全性由主鏈自行驗證,因此安全性較側鏈有較大提升。不過,中繼鏈與各平行鏈的安全性一定程度上會受鏈雙方的影響[41]。

防范策略:針對側鏈/中繼鏈中存在的安全問題,一方面可通過有效激勵礦工進行交易一致性驗證來提高側鏈的安全性;另一方面可通過中繼鏈與各平行鏈之間共享安全來確保中繼鏈的安全性。

3.7.3 哈希鎖定安全

哈希鎖定(Hash-locking)通過哈希鎖和時間鎖相結合的方式,使得交易雙方在資產鎖定的前提下,在規定時間內提供正確的哈希值來完成交易,以保證跨鏈交易的原子性,參與交易的雙方無需相互信任,不需要將資產托管給第三方公證人。通過資產鎖定實現質押,有效避免了故意拖延交易等惡意行為,安全性相對較高。但是,哈希鎖定的安全性一定程度上也會受到哈希鎖和時間鎖機制的影響。一方面,哈希鎖定的時間鎖在有效避免惡意拖延交易行為的同時,也給惡意交易方創造了新的安全風險。如果惡意交易方在較短時間內創建大量跨鏈交易,并讓所有交易同時超時,網絡中將會產生大量由于超時而無法完成的交易信息,這將導致其他正常交易信息被阻塞,從而影響全鏈網絡的運行。另一方面,跨鏈交易中,哈希鎖定必須確保交易資產在規定時間內處于鎖定狀態,而在鎖定期內,交易雙方為了能及時對交易反饋結果進行驗證,必須以“熱錢包”的方式始終保持在線連接網絡的狀態,這就增加了“熱錢包”被黑客攻擊致使資產被盜的風險。

防范策略:針對哈希鎖定中因鏈超時可能導致的系統阻塞問題以及“熱錢包”可能導致用戶資產被盜的問題,一方面可設置跨鏈交易超時處理機制,若系統檢測到大量跨鏈交易超時,及時對其執行回滾操作,將交易恢復到之前的狀態;另一方面應避免將大額資產存放于“熱錢包”,通過將大額資產存放在“冷錢包”中,用于交易的小額資產存放在“熱錢包”中,來降低由于“熱錢包”被攻擊而導致的資產損失風險。

3.7.4 長程攻擊

長程攻擊(Long Range Attack)主要是針對在跨鏈中使用PoS共識機制區塊鏈網絡的一種攻擊方式。長程攻擊之所以存在,是因為權益證明協議具有弱主觀性,即區塊鏈網絡中的新節點或長期離線的節點加入網絡中時,無法分辨出哪些分支從屬于主鏈。在長程攻擊中,惡意節點如果想要篡改區塊鏈賬本信息,至少需要擁有51%的算力,這在P2P網絡中顯然難以實現。為了達成該目的,惡意節點會預先計算生成出大量區塊,然后在某一時刻集中公開,這些突然增加的大量區塊將形成一條從區塊鏈首區塊開始的最長分支鏈。根據最長鏈原則,原始區塊鏈出現重組,新的分支鏈代替原先主鏈成為新的主鏈,原先主鏈上已完成的跨鏈交易被撤銷[42],從而可能導致跨鏈交易出現雙花現象,惡意節點篡改賬本的目的達成。

防范策略:針對長程攻擊,可通過設置移動檢查點使得區塊鏈網絡中只有末端的X個區塊能夠被重組[43],從而防止攻擊者從首區塊開始生成一條最長分支鏈來代替主鏈。

3.7.5 重放攻擊

重放攻擊(Replay Attack)是一種惡意進行有效數據重復傳送的攻擊方式。惡意節點通過向目的主機發送一個已被接收驗證過的數據包,來實現對目的主機的欺騙攻擊,一般出現在用戶身份認證過程中。在實際應用中,區塊鏈系統往往會因為系統出現故障、共識不一致和需要升級更新等原因而進行硬分叉。硬分叉后,區塊鏈網絡會出現原鏈和新鏈雙鏈并存的狀態,由于這2條鏈在交易格式、交易歷史、密鑰算法等方面完全一致,且跨鏈交易中也并未標識其是原鏈還是新鏈,因此如果其中一條鏈上的交易信息出現在另一條鏈上且是合法的,這就使得一條鏈上的交易信息可能會被另一條鏈上進行惡意重復傳送而得到確認,從而形成跨鏈重放攻擊,其直接結果就是在2條鏈上完成了2個完全相同的交易,造成了用戶資產的損失。

防范策略:針對重放攻擊,用戶可以在區塊鏈系統進行硬分叉前將幣存放在自己控制私鑰的錢包地址上,等分叉后先購買分叉幣來污染自己的幣,然后執行分離幣操作,這樣就能有效避免重放攻擊。

3.7.6 競爭條件攻擊

競爭條件攻擊(Race Condition Attack)主要是針對區塊鏈用戶賬戶有余額這一條件實施的攻擊方式,只要用戶的賬戶始終有余額,惡意交易方就能夠通過該攻擊方式一直獲取對方的賬戶余額。具體來說就是,在跨鏈交易中,原子交換類的跨鏈系統在進行跨鏈交易確認時,通常會存在交易確認的先后順序,無論是參與跨鏈交易的發起方還是接收方,理論上都有可能被最先確認,這就容易出現競爭條件攻擊風險[44]。例如,跨鏈交易雙方C和D通過跨鏈系統所提供的智能合約進行BTC(BiTCoin)和ETH之間的資產兌換,發送方C和接收方D分別將一定數量的BTC和等值的ETH發送至合約指定的地址。此時,如果接收方D也向合約指定的地址發送與C等量的BTC,如果接收方D的交易被先確認,D則可能在正常獲取C轉入的BTC的同時,還能再拿走之前自己轉入的ETH,這就導致發送方C不僅無法兌換到D轉入的ETH,還會損失自己已轉入的BTC,接收方D從而達到了競爭條件攻擊的目的。

防范策略:針對競爭條件攻擊,可以在合約中設置最高的燃料價格(gas price),以防止攻擊者通過提高燃料價格來獲得優先交易的機會。

3.7.7 阻塞超時問題

在跨鏈交易過程中,為了保證跨鏈交易的原子性以避免交易過程中可能出現的雙重花費和資產憑空消失問題,以及為了避免由于孤塊問題[45]而導致的區塊鏈系統中大量包含跨鏈交易信息的區塊被丟棄等問題,跨鏈網絡一般會通過設置延遲交易時間來確??珂溄换祿畔⒌靡猿浞执_認。但是,目前區塊鏈系統相對較低的交易處理速率和并發事務處理能力,可能會造成由于設置延遲交易時間而帶來的大量跨鏈交易在幾小時內甚至是幾天內無法被確認的情況,這些沒有被及時確認的交易信息將會被當作無用信息對待,從而導致整個跨鏈網絡出現嚴重的阻塞超時問題。

防范策略:針對阻塞超時問題,可在跨鏈網絡中加強對不同節點行為、交易響應時長、協議連接情況等的監控。當出現阻塞超時情況時,及時阻斷導致響應阻塞或資源過載的來源,限制問題節點的交易行為,必要時可對跨鏈交易進行回滾。

4 區塊鏈安全監管探討

區塊鏈在深刻改變人類社會生產和生活方式的同時,也衍生出了一系列較傳統互聯網領域更加難以監管的違法犯罪問題,為我國網絡意識形態、數字金融等領域的治理帶來了嚴峻挑戰,本文將從政策監管和技術監管2個方面對區塊鏈的安全監管進行討論。

4.1 區塊鏈政策監管探討

4.1.1 區塊鏈政策監管情況

當前,區塊鏈的監管面臨著法律關系界定難、法律適用性弱、傳統的法律制度與區塊鏈的監管機制難以適應等諸多問題,因此,國家層面應加強針對區塊鏈的法律法規研究,加快出臺并逐步完善區塊鏈的政策制度,通過上位法對區塊鏈在各領域的應用加以規范,從而促進區塊鏈技術及產業的健康發展;同時需要加強國際合作,積極參與制定區塊鏈國際監管規則,嚴厲打擊利用區塊鏈技術開展的跨境違法犯罪活動,確保人民群眾的利益不受損害。我國針對區塊鏈的政策立法具有兩重性,一是數字貨幣領域的區塊鏈應用被嚴格管控,二是對促進經濟社會發展的區塊鏈應用受到大力扶持。目前,國家互聯網信息辦公室等部門已出臺了包括《區塊鏈信息服務管理規定》等多項區塊鏈行業監管政策(具體監管政策如表5所示),有效地規范了區塊鏈信息服務活動。

4.1.2 區塊鏈政策監管難點

盡管目前世界多國的監管機構正推出越來越多的政策法規來應對區塊鏈面臨的監管問題,且取得了一定的成效,但區塊鏈的不斷發展和其內在的技術特性為當前的政策監管帶來了新的難題和挑戰。一方面,區別于傳統的中心化系統,區塊鏈去中心化的分布式賬本技術帶來了監管責任主體分散的問題;另一方面,對于自動執行的智能合約的法律有效性尚不明確[46]。

(1)監管責任主體分散。作為分布式共享賬本網絡,區塊鏈網絡由于沒有中心化節點,節點之間可通過多種方式進行交互,因此存在對責任主體認定難的問題,對于節點的監管存在一定的難度,根據區塊鏈網絡類型的不同,對監管責任主體的認定也存在不同的情況。私有鏈由于僅對單個機構、組織或個人用戶開放,由少數高算力節點對全鏈節點進行管理,雖然網絡中有多個節點,但監管責任主體比較明確。聯盟鏈由多個經過授權的組織或機構以聯盟的形式組成,雖然聯盟鏈中的節點與私有鏈類似,也需要通過授權加入,但是聯盟鏈網絡可能會由不同國家和地區的責任主體構建,因此存在政策監管對不同國家和地區責任主體的適用性問題。公有鏈是面向個人或組織的、完全開放的區塊鏈,任何節點都可以不受限制地加入公有鏈,因此難以對公有鏈中的節點進行監管。

(2)法律有效性不明確。智能合約作為區塊鏈底層的關鍵技術,能有效構建可編程金融和可編程社會,在司法、金融、政務及社會公共領域具有廣闊的發展空間。但是,目前對于自動執行的智能合約的法律有效性仍未明確規范。一方面,對于涉及交易各方權利義務的智能合約缺少法律定義,對于智能合約執行過程中因出現程序錯誤、被攻擊等情況

Table 5 Policies related to blockchain industry supervision表5 區塊鏈行業監管相關政策

所導致的合約失效,各方法律責任難以判定。另一方面,由于智能合約代碼在區塊鏈網絡中公開透明可見,這就導致智能合約不適用于對隱私保護要求較高的敏感信息交易合約。此外,由于實際應用中,部分協議條款的制定不需要各交易方有明確的權利義務,需要在執行過程中根據具體情況進行不斷調整,而智能合約需要精確定義合約條款的觸發條件和響應規則,使得其無法適用于開放性的條款合約。

4.2 區塊鏈技術監管探討

4.2.1 制定規范的區塊鏈技術標準

目前區塊鏈技術及其實踐應用尚處于初期發展階段,監管挑戰和發展機遇并存,區塊鏈技術尚未形成統一的規范和標準,區塊鏈技術的標準化建設還有待在實踐中進一步完善。應當根據區塊鏈技術的特點和發展變化,對區塊鏈安全體系架構中可能存在的安全風險,開展持續的跟蹤研究,明確區塊鏈技術平臺及應用生態面臨的主要安全問題,并依此加快研制出區塊鏈的國家和行業技術標準,針對區塊鏈體系架構中的不同功能模塊,提出安全技術要求并形成安全體系標準。同時還需要走出去主導和參與區塊鏈技術國際標準的制定,做好ISO/TC 307(國際標準化組織區塊鏈和分布式記賬技術委員會)在國內的歸口工作,通過加強國際合作交流推動國內和國際標準的協同發展。此外,應當鼓勵具備條件的第三方機構參與區塊鏈技術標準的驗證和評估,建立起區塊鏈技術的認證體系,從多維度來完善區塊鏈技術標準體系。

4.2.2 創新監管方式推動以鏈治鏈

針對區塊鏈監管的政策法規、技術標準的建立在一定程度上可以有效規避相關安全風險,但對區塊鏈技術本身的運行卻難以干涉,因此要加強對區塊鏈安全風險的研究分析,密切跟蹤最新動態,積極探索內在規律,不斷創新監管方式,建立適應區塊鏈技術機制的安全監管體系。實現對區塊鏈的有效監管不僅需要政策干預,還需要打破傳統的監管思維,增加諸如以鏈治鏈的技術監管等新型方式,形成政策監管加技術監管的雙維度監管體系,以提高監管的有效性和精準性。以鏈治鏈是以區塊鏈技術為工具,通過建立“法鏈”,來對區塊鏈行業進行監管,例如區塊鏈共享賬本的公開透明性能夠使得“法鏈”在區塊鏈出現安全風險時對其識別發現并及時反饋。此外,區塊鏈的全網記錄、自信任機制等特性能夠有效提高監管效率,通過技術手段把監管機制直接內嵌于區塊鏈系統中,實時在線、動態更新,可以彌補政策監管單一的不足,完善監管體系功能。

4.2.3 區塊鏈監管技術發展趨勢

目前區塊鏈監管技術的發展趨勢主要包括4個方面:一是區塊鏈節點的追蹤與可視化;二是聯盟鏈穿透式監管技術;三是公鏈主動發現與探測技術;四是以鏈治鏈的體系結構及標準[47]。其中,區塊鏈節點的追蹤與可視化是指要對區塊鏈網絡中各節點所記錄的包括賬戶信息、交易信息在內的所有信息進行摸排追蹤,并通過可視化的方式進行展現,以方便監管者對區塊鏈網絡中所有節點進行有效管理。公鏈作為承載區塊鏈應用的底層基礎設施,是區塊鏈技術發展的重點,當前公鏈呈現出發展規模大、發展速度快的趨勢,少數公鏈團隊游走于灰色地帶逃避監管,使得對公鏈的監管面臨挑戰,因此要對公鏈進行主動發現和異常探測。聯盟鏈穿透式監管技術是指對聯盟鏈中各參與方的行為本質進行監管,以滿足監管方對鑒別業務性質、數據真實性等方面的要求。當前以鏈治鏈的技術發展還不夠深入,以鏈治鏈的體系結構和技術標準尚未形成,這將是未來監管技術發展的重要方向。

目前,區塊鏈技術監管路線的發展現狀及優缺點如表6所示。

5 結束語

區塊鏈技術作為當前數字信息技術發展的前沿領域,憑借其獨有的技術特性,為構建未來社會全新信任體系和價值體系提供著重要技術支撐,目前全球多個國家都在加快區塊鏈發展布局。然而,隨著區塊鏈技術的深入研究和應用的快速發展,區塊鏈面臨的安全問題也正日益突出,頻頻發生的區塊鏈安全事件不僅給用戶造成了巨額經濟損失,也為區塊鏈技術的健康發展帶來了嚴重影響。安全問題已成為區塊鏈發展面臨的重大風險挑戰,因此區塊鏈的監管之路任重道遠。本文就區塊鏈的體系架構,分別從數據層、網絡層、共識層、激勵層、合約層、應用層以及跨鏈7個方面對區塊鏈潛在的安全問題和防范策略進行了詳細分析,并在此基礎上,從政策監管和技術監管2個方面對區塊鏈的安全監管進行了深入探討,以期為相關研究提供思路。

Table 6 Overview of blockchain technology regulatory route表6 區塊鏈技術監管路線概覽

猜你喜歡
挖礦哈希攻擊者
合力攻堅 全面治理高?!巴诘V”
多措并舉 全流程整治“挖礦”
基于微分博弈的追逃問題最優策略設計
挖礦木馬的攻擊手段及防御策略研究
正面迎接批判
基于OpenCV與均值哈希算法的人臉相似識別系統
有限次重復博弈下的網絡攻擊行為研究
基于維度分解的哈希多維快速流分類算法
基于同態哈希函數的云數據完整性驗證算法
一種基于Bigram二級哈希的中文索引結構
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合