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