張紹成,張?chǎng)┓?,滕玉坤,?碩
(1.遼寧大學(xué) 創(chuàng)新創(chuàng)業(yè)學(xué)院,遼寧 沈陽110036;2.西安電子科技大學(xué) 通信工程學(xué)院,陜西 西安,710126;3.遼寧大學(xué) 商學(xué)院,遼寧 沈陽110136)
區(qū)塊鏈(Blockchain)是一種由多方共同維護(hù),使用密碼學(xué)保證傳輸和訪問安全,能夠?qū)崿F(xiàn)數(shù)據(jù)一致存儲(chǔ)、難以篡改、防止抵賴的分布式賬本技術(shù)(Distributed Ledger Technology)[1].
從技術(shù)角度看,區(qū)塊鏈?zhǔn)且环N把數(shù)據(jù)區(qū)塊以鏈的方式組合在一起的數(shù)據(jù)結(jié)構(gòu)[2].每一個(gè)數(shù)據(jù)區(qū)塊由區(qū)塊頭和區(qū)塊體兩部分組成,其中區(qū)塊體用來存儲(chǔ)自前一區(qū)塊之后發(fā)生的多起交易記錄,區(qū)塊頭則包含了前一區(qū)塊的哈希值和時(shí)間戳,作為指針用于鏈接前一個(gè)區(qū)塊,這樣從創(chuàng)始?jí)K到當(dāng)前區(qū)塊構(gòu)建了一個(gè)按時(shí)間順序的塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),即為區(qū)塊鏈.
從應(yīng)用角度看,區(qū)塊鏈被認(rèn)為是新一代的價(jià)值互聯(lián)網(wǎng).當(dāng)前的互聯(lián)網(wǎng)傳遞的是信息,我們稱之為信息互聯(lián)網(wǎng).而區(qū)塊鏈?zhǔn)窃诨ヂ?lián)網(wǎng)的基礎(chǔ)上實(shí)現(xiàn)了價(jià)值的傳遞,秉承了互聯(lián)網(wǎng)的基本協(xié)議架構(gòu),也延續(xù)并對(duì)互聯(lián)網(wǎng)安全問題提出了更高的要求.
價(jià)值互聯(lián)網(wǎng)的核心是確權(quán)、交換和信任,而價(jià)值的權(quán)屬及可信任交換,都離不開安全這個(gè)必要的前提.基于一些基本的安全需求,包括如何確保交易數(shù)據(jù)的正確性、真實(shí)性和完整性,如何對(duì)交易方身份進(jìn)行驗(yàn)證和對(duì)交易過程的確認(rèn)等內(nèi)容,區(qū)塊鏈技術(shù)實(shí)現(xiàn)了一個(gè)創(chuàng)建信任、分布式存儲(chǔ)、防篡改、可追溯的價(jià)值交換平臺(tái).
區(qū)塊鏈技術(shù)架構(gòu)是區(qū)塊鏈系統(tǒng)和平臺(tái)運(yùn)行的基礎(chǔ).很多學(xué)術(shù)界專家在區(qū)塊鏈技術(shù)架構(gòu)方面開展了一些重要的研究工作,但是因?yàn)橐暯堑牟煌?,區(qū)塊鏈架構(gòu)的層次劃分尚缺乏統(tǒng)一的共識(shí).比如,邵奇峰等認(rèn)為“區(qū)塊鏈平臺(tái)整體上可劃分為網(wǎng)絡(luò)層、共識(shí)層、數(shù)據(jù)層、智能合約層和應(yīng)用層五個(gè)層次”[3],張亮等認(rèn)為區(qū)塊鏈“可劃分為數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、智能合約層和應(yīng)用層 5個(gè)層次”[4],而袁勇等則認(rèn)為“區(qū)塊鏈系統(tǒng)由數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層和應(yīng)用層組成”[5].
一些行業(yè)組織、企業(yè)也在各自的區(qū)塊鏈系統(tǒng)中設(shè)計(jì)和使用了不同的區(qū)塊鏈架構(gòu).典型的區(qū)塊鏈應(yīng)用實(shí)例中,比特幣、以太坊和 Hyperledger Fabric在區(qū)塊鏈架構(gòu)設(shè)計(jì)上存在著明顯的不同.比如,比特幣架構(gòu)定義了存儲(chǔ)層、數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、RPC層、應(yīng)用層6個(gè)層次(圖1);以太坊架構(gòu)定義了存儲(chǔ)層、數(shù)據(jù)層、網(wǎng)絡(luò)層、協(xié)議層、共識(shí)層、合約層、應(yīng)用層7個(gè)層次(圖2);Hyperledger Fabric架構(gòu)定義了存儲(chǔ)層、數(shù)據(jù)層、通道層、網(wǎng)絡(luò)層、共識(shí)層、合約層、應(yīng)用層7個(gè)層次(圖3).
由此可見,無論在理論上還是在實(shí)踐中,基于不同的區(qū)塊鏈應(yīng)用場(chǎng)景,對(duì)區(qū)塊鏈架構(gòu)的設(shè)計(jì)和定義還存在著或多或少的差異.
但總體上看,上述有關(guān)區(qū)塊鏈架構(gòu)的描述中顯現(xiàn)的核心功能卻是基本一致的,從中歸納其共同的核心部分和主體的功能層次,可以抽象出一個(gè)四層區(qū)塊鏈技術(shù)參考架構(gòu),包括存儲(chǔ)層、協(xié)議層、擴(kuò)展層、應(yīng)用層4個(gè)層次(圖4).
該參考架構(gòu)中,每一層實(shí)現(xiàn)具體的功能,并為上一層提供服務(wù).考慮到數(shù)據(jù)層、網(wǎng)絡(luò)層和共識(shí)層的功能相關(guān)緊密、相輔相成,共同構(gòu)建了區(qū)塊鏈的底層技術(shù)核心層,因此統(tǒng)一定義為協(xié)議層;智能合約層和激勵(lì)層的功能同屬于區(qū)塊鏈可編程特性的實(shí)現(xiàn),統(tǒng)一定義為擴(kuò)展層.
存儲(chǔ)層的主要功能是存儲(chǔ)上一層生成的鏈?zhǔn)綌?shù)據(jù)區(qū)塊,通常結(jié)合文件系統(tǒng)、關(guān)系數(shù)據(jù)庫、鍵值數(shù)據(jù)庫等存儲(chǔ)方式,實(shí)現(xiàn) “區(qū)塊+鏈” 數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)和檢索[6].
協(xié)議層是區(qū)塊鏈的底層技術(shù)核心,主要功能是負(fù)責(zé)為上一層構(gòu)建一個(gè)分布式、安全、信任的基礎(chǔ)網(wǎng)絡(luò),并實(shí)現(xiàn)對(duì)交易數(shù)據(jù)的記錄、驗(yàn)證等行為.具體地,數(shù)據(jù)層封裝了區(qū)塊管理及相關(guān)的數(shù)據(jù)加密和時(shí)間戳等技術(shù),實(shí)現(xiàn)包括收集交易數(shù)據(jù)、生成數(shù)據(jù)區(qū)塊、數(shù)據(jù)校驗(yàn)及區(qū)塊上鏈等功能.網(wǎng)絡(luò)層結(jié)合密碼學(xué)安全機(jī)制,為上一層構(gòu)建一個(gè)對(duì)等、安全的P2P網(wǎng)絡(luò).共識(shí)層封裝了各種共識(shí)算法,實(shí)現(xiàn)節(jié)點(diǎn)選舉、賬本數(shù)據(jù)同步控制和數(shù)據(jù)一致性驗(yàn)證等功能.
擴(kuò)展層是區(qū)塊鏈可編程特性的基礎(chǔ),它在上一層應(yīng)用和底層技術(shù)核心之間,以可執(zhí)行代碼的方式,為用戶提供業(yè)務(wù)流程和邏輯規(guī)則的算法實(shí)現(xiàn).其中,智能合約層的功能是將區(qū)塊鏈系統(tǒng)的業(yè)務(wù)邏輯以代碼的形式實(shí)現(xiàn)、編譯并部署,完成既定規(guī)則的條件觸發(fā)和自動(dòng)執(zhí)行[7].激勵(lì)層的功能是實(shí)現(xiàn)區(qū)塊鏈的激勵(lì)/獎(jiǎng)罰機(jī)制,包括數(shù)字貨幣的發(fā)行和分配.
應(yīng)用層是區(qū)塊鏈技術(shù)在不同行業(yè)領(lǐng)域中各類應(yīng)用場(chǎng)景的直接體現(xiàn),主要分為價(jià)值交換、電子存證和授權(quán)管理三個(gè)大類,具體的應(yīng)用場(chǎng)景包括數(shù)字貨幣、跨境支付、供應(yīng)鏈金融、能源交易、電子發(fā)票、電子存證、防偽溯源、版權(quán)確權(quán)、社會(huì)征信等.
從上文提出的區(qū)塊鏈技術(shù)參考架構(gòu)(圖4)的角度,我們將根據(jù)存儲(chǔ)層、協(xié)議層、擴(kuò)展層、應(yīng)用層4個(gè)不同層面的風(fēng)險(xiǎn)因素來分析區(qū)塊鏈應(yīng)用中可能存在的安全問題.
存儲(chǔ)層安全主要存在于可能發(fā)生的數(shù)據(jù)丟失和泄露問題,包括因系統(tǒng)故障、誤操作,或?qū)?shù)據(jù)文件的破壞、竊取等情況下導(dǎo)致的數(shù)據(jù)丟失和泄露.
協(xié)議層結(jié)合了共識(shí)算法、P2P網(wǎng)絡(luò)、密碼學(xué)等區(qū)塊鏈技術(shù)核心機(jī)制,該層的安全問題主要由開源的底層代碼及潛在的協(xié)議漏洞引發(fā).
區(qū)塊鏈技術(shù)(尤其是公有鏈)具有開源的特點(diǎn),而底層協(xié)議源代碼的開放使得對(duì)區(qū)塊鏈的攻擊有了可乘之機(jī).包括利用共識(shí)算法漏洞的算力攻擊、分叉攻擊、重放攻擊等,以及針對(duì)P2P 協(xié)議缺陷的 DDoS 攻擊等.
共識(shí)算法本身的局限導(dǎo)致一定的技術(shù)風(fēng)險(xiǎn),比如眾所周知的51%攻擊問題.由于工作量證明算法PoW依賴于算力,當(dāng)攻擊者取得51%以上算力時(shí),就會(huì)有極大的概率勝出競(jìng)選獲得記賬權(quán),這時(shí)其具備了 撤銷已經(jīng)發(fā)生的交易的能力[8].在權(quán)益證明算法PoS 中,當(dāng)攻擊者持有超過51%以上的令牌數(shù)量時(shí)具有了攻擊成功的可能.在拜占庭容錯(cuò)PBFT中,惡意節(jié)點(diǎn)數(shù)量超過總節(jié)點(diǎn)數(shù)量的1/3時(shí)系統(tǒng)也是有風(fēng)險(xiǎn)的.
擴(kuò)展層中典型的實(shí)現(xiàn)是智能合約或可編程合約,其風(fēng)險(xiǎn)通常來源于合約設(shè)計(jì)和開發(fā)中可能存在的安全漏洞,包括合約代碼漏洞、業(yè)務(wù)邏輯漏洞等.
由于智能合約是將系統(tǒng)的業(yè)務(wù)邏輯、既定規(guī)則的條件觸發(fā)、自動(dòng)執(zhí)行以代碼形式的實(shí)現(xiàn),所以保證合約代碼的正確性、完備性是區(qū)塊鏈安全的基本要求.當(dāng)智能合約的開發(fā)者能力、安全編碼水平不足,或是意圖謀求個(gè)人利益時(shí),就會(huì)導(dǎo)致智能合約中可能存在一些安全漏洞或后門.
一旦智能合約的代碼設(shè)計(jì)不合理,比如出現(xiàn)執(zhí)行順序問題、時(shí)間依賴問題等,將會(huì)導(dǎo)致整個(gè)區(qū)塊鏈系統(tǒng)不能按照既定的邏輯安全運(yùn)行.那么這個(gè)系統(tǒng)不僅不能提供安全的交易環(huán)境,甚至還會(huì)因此被攻擊而產(chǎn)生重大的經(jīng)濟(jì)損失.2018年7月的“EOS智能合約攻擊事件”是一起智能合約安全的典型案例,該事件中因游戲合約存在的嚴(yán)重漏洞遭到非法攻擊,造成EOS DAPP游戲代幣損失數(shù)量最多的一次安全事件.
應(yīng)用層直接面向用戶,而用戶應(yīng)用是整個(gè)區(qū)塊鏈系統(tǒng)中安全防護(hù)能力最薄弱的環(huán)節(jié),所以應(yīng)用層成為攻擊者對(duì)區(qū)塊鏈系統(tǒng)實(shí)施有效攻擊的首選目標(biāo).
應(yīng)用層安全風(fēng)險(xiǎn)主要來自于用戶安全和應(yīng)用服務(wù)安全兩個(gè)方面.
用戶安全依賴于個(gè)人用戶的安全防護(hù)意識(shí)和能力.區(qū)塊鏈用戶負(fù)責(zé)生成并管理自己的私鑰文件,要防止私鑰文件和賬戶信息的泄露或被竊取,避免威脅用戶數(shù)字資產(chǎn)安全的風(fēng)險(xiǎn).用戶端生成的私鑰及賬戶信息通常存儲(chǔ)于本地,一些傳統(tǒng)的攻擊手段如木馬、釣魚等都可能被利用來竊取這些信息,造成用戶數(shù)字資產(chǎn)的損失.粉塵攻擊是指一種新型的針對(duì)區(qū)塊鏈用戶數(shù)字錢包的攻擊手段,攻擊者向大量的用戶錢包中發(fā)送微量的粉塵資金,然后跟蹤這些粉塵資金的所有交易信息,如果用戶移動(dòng)了“粉塵”(即發(fā)生交易),則跟蹤器會(huì)連接上這些錢包地址,確定這些錢包地址的所有者,進(jìn)而可能造成一系列的用戶風(fēng)險(xiǎn).
應(yīng)用服務(wù)安全是指區(qū)塊鏈應(yīng)用軟件可能存在的設(shè)計(jì)開發(fā)問題引發(fā)的驗(yàn)證碼、API誤用等安全漏洞,或者應(yīng)用服務(wù)器系統(tǒng)的安全漏洞、安全管理策略配置不當(dāng)?shù)葢?yīng)用服務(wù)程序造成的系統(tǒng)風(fēng)險(xiǎn).2018年3月的“幣安攻擊事件”是一起應(yīng)用層安全的典型案例,該事件中的攻擊者首先通過釣魚方式竊取大量的用戶賬戶信息,然后利用幣安服務(wù)器的二次驗(yàn)證沒有做到 OTP(One-time Password)的漏洞,在30秒內(nèi)創(chuàng)建了API,并獲得了包括查詢、交易、提現(xiàn)等操作的用戶權(quán)限.
如上文所述,根據(jù)存儲(chǔ)層、協(xié)議層、擴(kuò)展層、應(yīng)用層4個(gè)層面的安全問題分析,區(qū)塊鏈技術(shù)的安全應(yīng)用需要從安全開發(fā)、代碼審計(jì)、安全評(píng)估和測(cè)試[9]等3個(gè)環(huán)節(jié)實(shí)施有效的應(yīng)對(duì)措施以降低風(fēng)險(xiǎn),
首先,在區(qū)塊鏈應(yīng)用的開發(fā)過程中,應(yīng)當(dāng)執(zhí)行嚴(yán)謹(jǐn)?shù)募夹g(shù)規(guī)范,確保安全開發(fā).程序開發(fā)人員應(yīng)使用安全的開發(fā)環(huán)境,遵守規(guī)范的開發(fā)流程,編寫嚴(yán)謹(jǐn)?shù)某绦虼a,從各個(gè)環(huán)節(jié)降低可能產(chǎn)生安全風(fēng)險(xiǎn)的幾率,這是區(qū)塊鏈安全應(yīng)用的首要前提.
其次,對(duì)區(qū)塊鏈應(yīng)用的核心功能模塊實(shí)行必要的代碼安全分析和代碼審計(jì)工作,從代碼架構(gòu)、邏輯流程等方面檢查是否存在可能的安全漏洞或隱患.尤其對(duì)智能合約,作為區(qū)塊鏈應(yīng)用的規(guī)則體現(xiàn),應(yīng)當(dāng)實(shí)施最嚴(yán)格的代碼審計(jì),這是區(qū)塊鏈安全應(yīng)用的重中之重.
最后,應(yīng)當(dāng)對(duì)區(qū)塊鏈應(yīng)用的場(chǎng)景和可能的攻擊風(fēng)險(xiǎn)實(shí)施有針對(duì)的安全評(píng)估和測(cè)試,包括對(duì)底層協(xié)議、智能合約、應(yīng)用環(huán)境等各層面的預(yù)測(cè)可能的風(fēng)險(xiǎn)和安全漏洞,及時(shí)發(fā)現(xiàn)和采取必要的應(yīng)對(duì)措施,以及對(duì)網(wǎng)絡(luò)環(huán)境和存儲(chǔ)設(shè)施的可靠性和安全性進(jìn)行充分評(píng)估.
另外,區(qū)塊鏈技術(shù)作為未來發(fā)展數(shù)字經(jīng)濟(jì)、構(gòu)建信任經(jīng)濟(jì)體系的重點(diǎn)前沿技術(shù),本文提出的技術(shù)安全、應(yīng)用安全尚不夠完善,還應(yīng)該從宏觀經(jīng)濟(jì)的角度,在更高層面上構(gòu)建“監(jiān)管+審計(jì)+法律”全方位模式的區(qū)塊鏈安全.
遼寧大學(xué)學(xué)報(bào)(自然科學(xué)版)2020年2期