◆孫國鈺
淺談對區塊鏈的攻擊方式與安全性
◆孫國鈺
(青島大學計算機科學技術學院 山東 266071)
區塊鏈是一種新興的分布式數據存儲技術,具有不可更改、不可偽造的安全特性。自“中本聰”于2008年提出點對點的數字貨幣——比特幣的概念后,區塊鏈作為其底層技術得到了廣泛的重視。盡管區塊鏈技術很強大,但總有辦法攻擊它。本文第一部分簡述區塊鏈技術的特點與應用;第二部介紹雙重支付、日蝕攻擊等常見的攻擊方式;第三部展示解決方案和研究成果;最后總結與展望區塊鏈技術未來的發展。
區塊鏈;攻擊方式;安全性
區塊鏈是一種“去中心化”、“去信任化”和公開透明的數據存儲技術,可以不依賴第三方可信機構在陌生節點之間建立點對點的可信價值傳遞,并降低交易成本,提高交互效率。區塊鏈技術是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。通常,共識機制指使區塊鏈節點的狀態達到一致的算法。區塊鏈技術是以塊鏈為數據結構來驗證與存儲數據、以分布式節點共識機制來生成和更新數據、以密碼學的方式保證數據傳輸和訪問的安全、由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的基礎架構與計算方式。它革命性地解決了“拜占庭將軍問題”,并已逐步應用到如金融、版權、物流、醫療等其他更廣闊的領域,未來還會為技術及經濟社會發展做出更多貢獻。
隨著近年來數字貨幣價格的持續走高,也出現了許多“暴利”誘惑下對區塊鏈的攻擊者。好在問題與解決方法總是同時產生。現對已出現的幾種攻擊方式作大致總結,并列出解決與與研究成果如下文。
對區塊鏈的攻擊可分為兩類:一是對區塊鏈完整性及共識機制的攻擊,如雙重支付攻擊、自私挖礦攻擊等;二是通過點對點的節點進行通信時使用的網絡協議的攻擊,如日蝕攻擊等。
雙重支付[1]攻擊有兩種類型:一是攻擊者使用一筆金額,同時和多個對象進行交易。若這些交易對象在交易未被記錄進合法區塊鏈的情況下,完成了交易,則攻擊者到達了雙重消費,甚至多重消費的目的。盡管在多次交易中,僅會有一筆被認為合法并記入鏈中,但交易對象已完成了交易,因此攻擊者可以從中獲益。
二是攻擊者利用自身強大的算力發起雙重消費攻擊。攻擊者利用同一筆金額,在第一筆交易完成并記錄進區塊鏈后,利用其具有的強大算力,可將第二筆交易記錄在私人區塊鏈中;攻擊者會繼續在私有鏈上挖礦,直至挖一條合法的更長的鏈取代之前的公共鏈,使得第二筆交易也得到確認,完成交易。
如果一群礦工,采用自私的挖礦戰略并獲得成功,則可能會使誠實礦工的工作無效。具體表現為:一個惡意的采礦池決定不發布他發現的塊,而后創建一個分叉,網絡中會同時存在由誠實礦工維護的公共鏈和惡意采礦池的私人分叉。惡意采礦池在私人分叉上繼續挖礦。當私人分叉比公共鏈長時,便發布此鏈取代原公共鏈。此時,原公共鏈及其包含的誠實數據將被丟棄。研究表明,一般情況下采用自私挖礦策略的惡意采礦池將獲得更多的受益。
日蝕攻擊利用節點間的廣播特性進行攻擊。具體做法如下:攻擊節點將隨機選擇 8 個其他對等節點,并“策略性”地控制受害節點所有信息的接收與發送;通過使受害節點的入站連接數量達到上限,從而阻止其他合法節點的連接請求。當受害節點的鏈接數量達到上限時,這些對等節點會重新啟動。重啟后的節點仍會首先收到來自攻擊節點的連接請求和無用信息,進而被比特幣系統“隔離”出來,使受害節點的采礦無效。通過日蝕攻擊,惡意攻擊者可以進一步入侵并修改受害節點的路由表,并進行如路由欺騙、存儲污染、DoS攻擊等的操作。
除上述常用攻擊外,還有扣塊攻擊、物理攻擊等。當然,區塊鏈的安全性不僅取決于對其的攻擊,從區塊鏈應用及區塊鏈本身的角度,秘鑰保護,數據隱私及匿名性[2],底層哈希等技術的安全性等亦是是需要考慮的因素。解釋來說,數據的隱私及匿名性是因為區塊鏈系統的比特幣技術本質上不完全透明:這些交易永久的存在于分類公開賬本中,每個用戶不但可以看到余額,還可訪問與比特幣地址相關的交易信息。因此,攻擊者也可通過收集用戶在交易或特殊情況下顯示出來的特定信息,來進一步推測用戶的真實信息和個人隱私等。
基于Merkel樹結構的哈希函數第二原像攻擊[3]是一種新提出的,利用區塊鏈默克爾樹樹中哈希函數葉子節點的哈希值具有同樣地位而構造的對已存在區塊發起第二原像攻擊的方法。該方法并從理論上分析證明了較平凡搜索攻擊具有更低的復雜性。
對于第二部分提到的攻擊形式,現歸納解決方案及文獻成果如下:
一般認為,當一筆交易被重復6次以上確認時,便不可更改。后續的篡改耗費巨大的計算資源。因此進行大宗交易時,應等多次確認后再完成交易(如交貨、紙質簽字等)。此外,隨著計算機技術的發展與算力的指數倍增長,依靠單個礦工或幾個礦工在全網所占高比例算力的可能性越來越小,篡改的難度越來越大,此種風險帶來的威脅也將逐漸減小。
區塊鏈的工作量證明機制(PoW)主要特征為:客戶端需要通過做一定難度的工作得出一個結果,但驗證方卻很容易通過結果來檢查出客戶端是不是做了相應的工作。具體到比特幣,礦工需要在滿足全網目標難度的情況下求解SHA256算法。工作量證明機制通過耗費大量的算力,使得攻擊者想要篡改數據的成本急劇增加,同時維持了比特幣系統的安全性和穩定性。PoW實際為一個復雜的過程,加之網絡中大量誠實礦工的存在,可在一定程度上避免自私挖礦的安全風險;補充來講,區塊鏈誘人的獎勵機制也會鼓勵礦工們誠實工作。
混幣機制最早由Gregory Maxwell在比特幣論壇上提出,其中心思想為在不改變交易結果的前提下,改變交易過程,使攻擊者無法直接獲得交易的完整信息。具體來講,可在一個交易中包括大量輸入和輸出,使很難在輸入和輸出中找出每個人的對應對,將輸入與輸出之間的聯系切斷,從而較好地保護用戶了隱私,提高了通信的匿名性。
安全檢測模型[4]是一種新提出的,以實驗量化各種攻擊方式對區塊鏈造成的影響的方法。具體操作為:以51%攻擊(指若一群礦工控制了整個區塊鏈網絡51%的算力,它們聯合起來可通過故意制造分叉或拒絕服務的方式來阻止特定交易或特定錢包地址,從而攻擊整個區塊鏈系統)為唯一攻擊參照,同時使用兩種算法來模擬誠實礦工和攻擊者的行為,并記錄不同的參數環境中區塊鏈的狀態(真實環境中認為一個區塊連接超過6個塊后則無法改變,記為穩定狀態;因此整個系統的狀態可認為是無限循環的)變為攻擊成功狀態的概率。當概率達到某個值時,可以向區塊鏈中用戶發送提示消息,延長交易確認的時間,從而降低攻擊的風險。
新興“區塊鏈+”正蓬勃發展并向更多領域邁進。當部署新的應用在區塊鏈時,若初始化某個全新的區塊鏈,要保證網絡中沒有大量惡意節點,即使從經濟社會的的角度來說,也是十分困難的。因此,研究者們提出不建議從零開始設計一個新的區塊鏈,盡量利用已有的比特幣系統或者已有的某個安全穩定的區塊鏈上部署區塊鏈應用,可在一定程度上確保新應用數據完整性和隱私性。
區塊鏈作為一種去中心化、去信任化的分布數據存儲系統,以其獨有的安全性,已從最初的比特幣系統推廣到金融、醫療、藝術、版權等其他領域。它的不可篡改,防偽溯源、公開透明的特性為其他傳統的技術或中心化問題提供了新思路,并為社會經濟生活帶來了創新與優勢。區塊鏈實現了在缺少可信任的中央節點或可信任的通道分布式節點的共識問題,并得到了越來越多的關注。可以預見在未來依然少不了對這項日漸成長的技術的攻擊,但隨著實踐的發展與研究,終會使這項技術更加茁壯與成熟。未來區塊鏈也許會服務于更多的領域,并為社會進步經濟增長帶來貢獻。
[1]房衛東,張武雄.區塊鏈的網絡安全: 威脅與對策[J].信息安全學報,2018.
[2]祝烈煌.區塊鏈交易數據隱私保護機制[J].大數據, 2018.
[3]王卯寧.基于Merkle哈希樹結構的區塊鏈第二原像攻擊[J].信息網絡安全,2018.
[4]葉聰聰.區塊鏈的安全檢測模型[J].軟件學報,2018.