武勇,李斌
(1. 國(guó)家信息安全工程技術(shù)研究中心,北京 100084;2. 中國(guó)信息安全測(cè)評(píng)中心,北京 100085)
2008年,中本聰(Satoshi Nakamoto)設(shè)計(jì)了一種名為“比特幣”的電子現(xiàn)金系統(tǒng)[1],隨后在2009年初搭建比特幣系統(tǒng)。隨著比特幣和其他各種類似代幣的蓬勃發(fā)展,這些電子貨幣的底層技術(shù)——區(qū)塊鏈——在近幾年內(nèi)得到了高速的發(fā)展,逐漸成為信息技術(shù)領(lǐng)域的一項(xiàng)重磅技術(shù)。近年來(lái),區(qū)塊鏈相關(guān)研究呈現(xiàn)井噴的趨勢(shì),并在數(shù)字貨幣、金融交易及清算、公證、溯源和防偽等領(lǐng)域得到了大量的實(shí)踐和應(yīng)用[2-5]。全球很多國(guó)家也紛紛將區(qū)塊鏈看作一項(xiàng)戰(zhàn)略要地,通過(guò)制定政策、研制標(biāo)準(zhǔn)、發(fā)布白皮書、推進(jìn)產(chǎn)業(yè)發(fā)展等措施來(lái)發(fā)展和應(yīng)用區(qū)塊鏈技術(shù)。
但是,區(qū)塊鏈技術(shù)在技術(shù)高速發(fā)展且獲得廣泛應(yīng)用的同時(shí),也需要清醒地認(rèn)識(shí)到由于其技術(shù)和應(yīng)用上的特點(diǎn),區(qū)塊鏈應(yīng)用實(shí)際上也存在很多安全風(fēng)險(xiǎn)。因此,研究區(qū)塊鏈技術(shù)存在的安全風(fēng)險(xiǎn),并以此為基礎(chǔ)構(gòu)建區(qū)塊鏈安全技術(shù)體系,對(duì)于促進(jìn)區(qū)塊鏈技術(shù)發(fā)展和應(yīng)用安全保障具有十分重要的意義。
從概念上來(lái)說(shuō),區(qū)塊鏈?zhǔn)且环N去中心化基礎(chǔ)架構(gòu)與分布式計(jì)算范式[6],是一種分布式、去中心化、去信任化的存儲(chǔ)技術(shù)[7],是一種按照時(shí)間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)[8]。區(qū)塊鏈技術(shù)具有去中心化、擴(kuò)展性強(qiáng)、安全可靠等特點(diǎn),在無(wú)需信任的分布式網(wǎng)絡(luò)中實(shí)現(xiàn)了安全的點(diǎn)到點(diǎn)交易。
區(qū)塊鏈的關(guān)鍵技術(shù)主要包括鏈?zhǔn)浇Y(jié)構(gòu)、分布式存儲(chǔ)、共識(shí)機(jī)制、密碼算法和智能合約等。
鏈?zhǔn)浇Y(jié)構(gòu)是指區(qū)塊鏈的邏輯組織結(jié)構(gòu)。在區(qū)塊鏈中,數(shù)據(jù)以電子記錄的形式存儲(chǔ)在一個(gè)一個(gè)“區(qū)塊(block)”中,每一個(gè)區(qū)塊記錄下它在被創(chuàng)建期間發(fā)生的所有價(jià)值交換活動(dòng)。同時(shí),在每一個(gè)區(qū)塊中,專門留出一個(gè)字段來(lái)存儲(chǔ)前一個(gè)區(qū)塊頭部的哈希值,使得后一個(gè)區(qū)塊能指向唯一的前一個(gè)區(qū)塊。由此,從創(chuàng)世塊(第一個(gè)區(qū)塊)到當(dāng)前區(qū)塊前后順序相連,形成了一條長(zhǎng)鏈。顧名思義,區(qū)塊鏈就是區(qū)塊以鏈的方式組合在一起,形成一種區(qū)塊鏈數(shù)據(jù)庫(kù)。
分布式存儲(chǔ)是指區(qū)塊鏈數(shù)據(jù)的物理存儲(chǔ)形式。和集中式系統(tǒng)不同,區(qū)塊鏈?zhǔn)峭ㄟ^(guò)構(gòu)建分布式的存儲(chǔ)體系和開源協(xié)議,讓網(wǎng)絡(luò)中所有的區(qū)塊鏈節(jié)點(diǎn)都參與數(shù)據(jù)的存儲(chǔ)和驗(yàn)證。實(shí)際上,每個(gè)區(qū)塊鏈節(jié)點(diǎn)都有各自獨(dú)立的、完整的數(shù)據(jù)存儲(chǔ),從而極大地提高數(shù)據(jù)存儲(chǔ)的可靠性。
共識(shí)機(jī)制是為了解決拜占庭將軍問(wèn)題[9]而設(shè)計(jì)的。所謂共識(shí),是指多方參與的節(jié)點(diǎn)在預(yù)設(shè)規(guī)則下,通過(guò)多個(gè)節(jié)點(diǎn)交互對(duì)某些數(shù)據(jù)、行為或流程達(dá)成一致的過(guò)程。區(qū)塊鏈在確定將由誰(shuí)來(lái)構(gòu)造有效的區(qū)塊時(shí),需要通過(guò)某種協(xié)商機(jī)制,讓網(wǎng)絡(luò)中所有節(jié)點(diǎn)能夠達(dá)成一致的結(jié)論,即取得共識(shí)。當(dāng)前,常見的共識(shí)機(jī)制包括PoW、PoS、DPoS、PBFT[10]等。
密碼算法在區(qū)塊鏈技術(shù)中處于基礎(chǔ)性位置,通過(guò)使用適當(dāng)?shù)拿艽a算法,區(qū)塊鏈保證了數(shù)據(jù)和交易的安全性。區(qū)塊鏈中主要的密碼算法包括非對(duì)稱密碼算法、對(duì)稱密碼算法和哈希算法。這些密碼算法主要提供數(shù)據(jù)加解密、簽名驗(yàn)簽、完整性驗(yàn)證、計(jì)算賬號(hào)地址、保護(hù)用戶隱私等安全能力。
智能合約的引入極大地拓展了區(qū)塊鏈的應(yīng)用前景。智能合約可以嵌入到區(qū)塊鏈中永久保存。當(dāng)滿足條件時(shí),這些智能合約將被自動(dòng)執(zhí)行,從而可以在沒(méi)有第三方的情況下可靠地進(jìn)行預(yù)定義的合同協(xié)議。從用戶角度來(lái)看,智能合約是一個(gè)無(wú)人值守、分布式部署、結(jié)果不可撤回的應(yīng)用程序,其部署可以大幅節(jié)省因集中部署和運(yùn)營(yíng)管理帶來(lái)的成本。
按照分層架構(gòu)理論,區(qū)塊鏈中各技術(shù)組件可按照層次分組,相鄰層次的組件之間通過(guò)接口交互和支撐。目前已經(jīng)提出了多種區(qū)塊鏈的技術(shù)層次體系。
朱志文[11]提出區(qū)塊鏈三層體系,即區(qū)塊鏈從下往上可以分為協(xié)議層、擴(kuò)展層和應(yīng)用層。其中,協(xié)議層也可以細(xì)分分為存儲(chǔ)層和網(wǎng)絡(luò)層。協(xié)議層主要包括構(gòu)建區(qū)塊鏈的底層技術(shù),包括對(duì)等網(wǎng)絡(luò)通信、共識(shí)算法、密碼算法和分布式數(shù)據(jù)存儲(chǔ)等;擴(kuò)展層則是連接協(xié)議層和應(yīng)用層之間的橋梁,包括智能合約和數(shù)據(jù)交換共享服務(wù)等技術(shù);應(yīng)用層主要包括面向用戶的區(qū)塊鏈產(chǎn)品,包括錢包軟件、交易網(wǎng)站和其他應(yīng)用程序。
龔鳴[12]用六層結(jié)構(gòu)來(lái)描述區(qū)塊鏈的技術(shù)架構(gòu),這六層自下而上分別是數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層、應(yīng)用層。其中,數(shù)據(jù)層主要包括數(shù)據(jù)區(qū)塊的鏈?zhǔn)浇Y(jié)構(gòu)、密碼算法和時(shí)間戳等技術(shù);網(wǎng)絡(luò)層主要包括分布式組網(wǎng)機(jī)制、數(shù)據(jù)傳播機(jī)制和數(shù)據(jù)驗(yàn)證機(jī)制等;共識(shí)層是指區(qū)塊鏈中PoW、PoS、DPoS和PBFT等各類共識(shí)機(jī)制;激勵(lì)層則將經(jīng)濟(jì)因素集成到區(qū)塊鏈技術(shù)體系中來(lái),主要包括經(jīng)濟(jì)激勵(lì)的發(fā)行機(jī)制和分配機(jī)制;合約層主要封裝各類腳本、算法和智能合約,支持區(qū)塊鏈可編程特性;應(yīng)用層是指面向用戶的區(qū)塊鏈的各種應(yīng)用系統(tǒng)和場(chǎng)景。在這六層中,數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層是區(qū)塊鏈技術(shù)體系必須的,而激勵(lì)層、合約層、應(yīng)用層不是必須的。
中國(guó)區(qū)塊鏈技術(shù)和產(chǎn)業(yè)發(fā)展論壇[13]根據(jù)他們的研究,發(fā)布了區(qū)塊鏈技術(shù)架構(gòu)標(biāo)準(zhǔn),將區(qū)塊鏈技術(shù)按照基礎(chǔ)層、核心層、服務(wù)層和用戶層等四層架構(gòu)進(jìn)行組織。其中,基礎(chǔ)層提供了區(qū)塊鏈系統(tǒng)正常運(yùn)行所需要的運(yùn)行環(huán)境和基礎(chǔ)組件,包括分布式存儲(chǔ)、計(jì)算和對(duì)等網(wǎng)絡(luò)(P2P)等;核心層包括共識(shí)機(jī)制、賬本記錄、時(shí)間戳服務(wù)和智能合約等區(qū)塊鏈核心技術(shù);服務(wù)層為應(yīng)用提供可靠高效的區(qū)塊鏈訪問(wèn)和監(jiān)控功能,包括節(jié)點(diǎn)接入管理、賬本管理等;用戶層為用戶提供區(qū)塊鏈服務(wù),提供應(yīng)用業(yè)務(wù)交互和系統(tǒng)管理相關(guān)功能。
這些區(qū)塊鏈層次體系是在區(qū)塊鏈發(fā)展的不同時(shí)期提出來(lái)的,各有不同的特點(diǎn),但也同時(shí)存在一定的局限性,如朱志文[11]提出的層次體系中,幾乎將區(qū)塊鏈中的所有核心技術(shù)基本都放到協(xié)議層中,使得該層次內(nèi)容太多,比其他兩層顯得更為擁擠;而后兩個(gè)層次體系中存在用戶層,將業(yè)務(wù)功能和系統(tǒng)管理等納入該層次中,而這些功能并非區(qū)塊鏈技術(shù)的核心和特色功能。
分析區(qū)塊鏈應(yīng)用的結(jié)構(gòu),總是可以按照三個(gè)部分來(lái)理解:最上面一部分是各種應(yīng)用系統(tǒng),如交易、公證和溯源等;中間是區(qū)塊鏈的各種核心技術(shù),負(fù)責(zé)搭建區(qū)塊鏈,并支持上面的應(yīng)用系統(tǒng)運(yùn)行;最下面是通用的網(wǎng)絡(luò)和計(jì)算機(jī)系統(tǒng)。這三部分中,最上層和最下層本身和區(qū)塊鏈技術(shù)無(wú)關(guān)。
為充分研究和體現(xiàn)區(qū)塊鏈的技術(shù)特點(diǎn),本文將重點(diǎn)放在區(qū)塊鏈的核心技術(shù)組件及其相互支撐關(guān)系,而不考慮最上面的應(yīng)用系統(tǒng)和最下面的通用網(wǎng)絡(luò)系統(tǒng)。
考察區(qū)塊鏈技術(shù)的當(dāng)前發(fā)展和應(yīng)用狀況,參考上一節(jié)給出的三種不同的分層架構(gòu),本文按照四層架構(gòu)來(lái)描述區(qū)塊鏈核心功能組件,即從下到上依次是網(wǎng)絡(luò)與存儲(chǔ)層、數(shù)據(jù)與算法層、共識(shí)與合約層、應(yīng)用支撐層。如圖1所示。
圖1 區(qū)塊鏈層次體系
其中,網(wǎng)絡(luò)與存儲(chǔ)層為上層技術(shù)組件提供節(jié)點(diǎn)組網(wǎng)和數(shù)據(jù)存儲(chǔ)接口,主要包括對(duì)等(P2P)網(wǎng)絡(luò)組網(wǎng)及優(yōu)化、網(wǎng)絡(luò)數(shù)據(jù)傳輸協(xié)議和分布式存儲(chǔ)協(xié)議等技術(shù);數(shù)據(jù)和算法層提供了區(qū)塊鏈的數(shù)據(jù)邏輯組織和密碼算法等基礎(chǔ)性技術(shù),包括區(qū)塊數(shù)據(jù)邏輯組織、鏈?zhǔn)浇Y(jié)構(gòu)和基礎(chǔ)密碼算法等;共識(shí)與合約層則主要包括共識(shí)機(jī)制和智能合約這兩項(xiàng)核心技術(shù);而應(yīng)用支撐層是為區(qū)塊鏈應(yīng)用系統(tǒng)的建立和運(yùn)行而提供的一些支撐性接口和服務(wù),主要包括身份管理、用戶接入、數(shù)據(jù)訪問(wèn)和合約調(diào)用等。
可以看出,該四層機(jī)構(gòu)將區(qū)塊鏈的技術(shù)功能組件按照層次結(jié)構(gòu)進(jìn)行描述,下層為上層的功能實(shí)現(xiàn)提供了技術(shù)支撐。下面從各層的主要技術(shù)特點(diǎn)著手分析區(qū)塊鏈應(yīng)用面臨的安全風(fēng)險(xiǎn)。
網(wǎng)絡(luò)與存儲(chǔ)層面臨的主要安全風(fēng)險(xiǎn)是區(qū)塊鏈節(jié)點(diǎn)組網(wǎng)、數(shù)據(jù)傳輸以及存儲(chǔ)時(shí)面臨的保密性、完整性和網(wǎng)絡(luò)可靠性方面的安全風(fēng)險(xiǎn),包括:區(qū)塊鏈數(shù)據(jù)在網(wǎng)絡(luò)傳輸和存儲(chǔ)時(shí)面臨竊聽、丟失、篡改等風(fēng)險(xiǎn);區(qū)塊鏈節(jié)點(diǎn)組網(wǎng)時(shí)鄰居發(fā)現(xiàn)、連接可靠性和假冒節(jié)點(diǎn)攻擊等風(fēng)險(xiǎn)。
如在以比特幣和以太坊中為代表的大規(guī)模區(qū)塊鏈應(yīng)用中,各網(wǎng)絡(luò)節(jié)點(diǎn)只需維護(hù)鄰居節(jié)點(diǎn)的信息,并逐漸蔓延擴(kuò)張到整個(gè)網(wǎng)絡(luò),以此保證整個(gè)網(wǎng)絡(luò)正常運(yùn)行。此時(shí),如果惡意節(jié)點(diǎn)通過(guò)偽裝,發(fā)布惡意數(shù)據(jù),利用區(qū)塊鏈節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)拓?fù)渲R(shí)點(diǎn)有限性來(lái)發(fā)動(dòng)Sybil攻擊或Eclipse攻擊,可以對(duì)區(qū)塊鏈網(wǎng)絡(luò)的完整性造成嚴(yán)重的破壞,造成隔離正常節(jié)點(diǎn)、劫持通信信息或控制其網(wǎng)絡(luò)行為等后果。在Ethan Heilman等人[14]的研究基礎(chǔ)上,2018年Yuval Marcus等[15]對(duì)以太坊進(jìn)行研究,發(fā)現(xiàn)只要兩臺(tái)普通機(jī)器就能成功地發(fā)起Eclipse攻擊。
數(shù)據(jù)與算法層面臨的主要安全風(fēng)險(xiǎn)是使用低安全強(qiáng)度的密碼算法、錯(cuò)誤地實(shí)現(xiàn)密碼算法、數(shù)據(jù)結(jié)構(gòu)邏輯錯(cuò)誤導(dǎo)致解析錯(cuò)誤、交易數(shù)據(jù)樹狀組織不合理等。數(shù)據(jù)邏輯結(jié)構(gòu)和密碼算法如果沒(méi)有安全的理論作為支撐,或在編碼實(shí)現(xiàn)上存在錯(cuò)誤使得區(qū)塊鏈應(yīng)用面臨巨大的安全風(fēng)險(xiǎn)。
以密碼算法為例,密碼算法的安全性是區(qū)塊鏈技術(shù)面臨的最嚴(yán)重安全威脅之一。現(xiàn)有的各種區(qū)塊鏈中,大都是采用SHA256和RIMPED160算法作為哈希算法、使用橢圓曲線密碼算法作為非對(duì)稱密碼算法。從現(xiàn)有研究資料看,這些算法目前暫時(shí)沒(méi)有發(fā)現(xiàn)有效的攻擊方法。但是,隨著密碼學(xué)、計(jì)算技術(shù)和物理學(xué)的發(fā)展,這些算法在不久的將來(lái)可能會(huì)被破解,MD5算法、SHA-1算法的攻陷[16]就是前車之鑒。
同時(shí),一個(gè)區(qū)塊鏈應(yīng)用系統(tǒng)是否安全,不僅僅取決于其使用了哪種密碼算法,還和密碼算法是否正確實(shí)現(xiàn)、采用的隨機(jī)數(shù)是否真正隨機(jī)、密鑰是否被安全保管等問(wèn)題密切相關(guān)。如果某個(gè)區(qū)塊鏈應(yīng)用中采用的密碼算法程序本身存在漏洞或后門,這將為區(qū)塊鏈應(yīng)用系統(tǒng)帶來(lái)致命的危害。如著名的RSA算法,曾經(jīng)就被惡意埋入有缺陷的代碼,從而降低了算法的安全強(qiáng)度。
共識(shí)和合約層面臨的安全風(fēng)險(xiǎn)是針對(duì)這兩項(xiàng)核心技術(shù)的攻擊,主要包括“51%”攻擊、女巫攻擊、雙花攻擊、DoS攻擊以及針對(duì)共識(shí)和智能合約邏輯漏洞實(shí)施的攻擊等。
共識(shí)機(jī)制是區(qū)塊鏈得以成功的基礎(chǔ),如果因網(wǎng)絡(luò)攻擊使得網(wǎng)絡(luò)節(jié)點(diǎn)不能取得共識(shí),或共識(shí)機(jī)制的健壯性出現(xiàn)問(wèn)題,那么區(qū)塊鏈將變得不再安全。目前常用的PoW、PoS、DPoS以及PBFT等共識(shí)機(jī)制,在使用過(guò)程中都存在一定的安全風(fēng)險(xiǎn)。其中,PoW共識(shí)機(jī)制面臨的主要問(wèn)題是51%攻擊問(wèn)題,即如果惡意組織掌握全網(wǎng)超過(guò)51%的算力就有能力篡改區(qū)塊鏈數(shù)據(jù),從而將破壞多數(shù)人的合法權(quán)益以獲得自己的利益。51%攻擊在中本聰及很多安全專家一度被認(rèn)為是難以達(dá)到的,然而隨著礦池的出現(xiàn)和中心化趨勢(shì),51%攻擊發(fā)生的可能性將越來(lái)越大。
作為區(qū)塊鏈的核心技術(shù),智能合約極大地提升了其應(yīng)用前景。但由于區(qū)塊鏈具有不可更改和不可撤銷的特點(diǎn),如果智能合約代碼中存在漏洞,這些漏洞將為區(qū)塊鏈應(yīng)用帶來(lái)極大的安全隱患。Ivica Nikolic等人[17]通過(guò)對(duì)近100萬(wàn)份智能合約進(jìn)行研究,就發(fā)現(xiàn)其中相當(dāng)多的智能合約存在漏洞。歷史上,以太坊也曾因?yàn)橹悄芎霞s安全問(wèn)題而不得不出現(xiàn)了硬分叉,分叉的結(jié)果給以太坊社區(qū)帶來(lái)了極大的爭(zhēng)議和混亂,影響很大。
應(yīng)用支撐層面臨的主要安全風(fēng)險(xiǎn)主要包括非法用戶接入、數(shù)據(jù)非授權(quán)訪問(wèn)、弱口令、用戶隱私竊取以及監(jiān)管缺失等。
區(qū)塊鏈應(yīng)用中的隱私問(wèn)題已經(jīng)引起廣泛的關(guān)注。由于區(qū)塊鏈采取不同于傳統(tǒng)信息系統(tǒng)的信息傳遞機(jī)制和共識(shí)機(jī)制,網(wǎng)絡(luò)上任何一個(gè)區(qū)塊鏈節(jié)點(diǎn)都可以獲得鏈上的所有信息,包括用戶地址、詳細(xì)交易信息等隱私信息,這為區(qū)塊鏈帶來(lái)了嚴(yán)重的隱私保護(hù)難題。以比特幣為例,其使用由匿名地址來(lái)代替用戶的真實(shí)身份。但隨著大數(shù)據(jù)的發(fā)展,通過(guò)交易數(shù)據(jù)挖掘分析以及整合真實(shí)世界的直接或間接的關(guān)聯(lián)信息,完全有可能分析出一些地址所對(duì)應(yīng)的用戶真實(shí)身份,并和交易信息關(guān)聯(lián)起來(lái)。Reid等人[18]就展示通過(guò)數(shù)據(jù)挖掘技術(shù),可以追蹤到比特幣大盜的真實(shí)身份。
此外,自2014年以來(lái),通過(guò)利用弱口令和數(shù)據(jù)訪問(wèn)漏洞而發(fā)起的區(qū)塊鏈攻擊事件大量爆發(fā)。比特幣交易所Mt.Gox、Gatecoin和bitfinex等均遭受過(guò)黑客攻擊,導(dǎo)致出現(xiàn)用戶帳號(hào)盜用、用戶代幣被偷等安全事件,為交易所和用戶帶來(lái)了巨大的損失,Mt.Gox最終還因?yàn)閾p失太大而宣布倒閉。今年年初發(fā)生的Binance事件,黑客更是利用了社會(huì)工程學(xué)手段盜取了上萬(wàn)個(gè)用戶帳號(hào),并利用金融市場(chǎng)拋售拉空、投機(jī)套利的操作來(lái)獲得巨大的利益。
區(qū)塊鏈安全技術(shù)體系是指為保障區(qū)塊鏈應(yīng)用安全,在一定的原則指導(dǎo)下,將區(qū)塊鏈中的各種安全技術(shù)按照其作用和相互間聯(lián)系,以一定的結(jié)構(gòu)方式組成的技術(shù)整體。
區(qū)塊鏈安全技術(shù)體系的目的是,通過(guò)針對(duì)性地加強(qiáng)關(guān)鍵技術(shù)的安全設(shè)計(jì)和采取相關(guān)安全措施,提高區(qū)塊鏈應(yīng)用的安全運(yùn)行能力,并使之能夠防范和應(yīng)對(duì)常見的安全風(fēng)險(xiǎn)。因此,本文在前面風(fēng)險(xiǎn)分析的基礎(chǔ)上,也按照四層架構(gòu)設(shè)計(jì)了一個(gè)通用的區(qū)塊鏈安全技術(shù)體系,將區(qū)塊鏈相關(guān)的安全機(jī)制有機(jī)地部署在不同層次,并提出相應(yīng)的安全要求和安全建議,以供區(qū)塊鏈應(yīng)用實(shí)現(xiàn)參考。安全技術(shù)體系如圖2所示。
圖2 區(qū)塊鏈安全技術(shù)體系
在網(wǎng)絡(luò)和存儲(chǔ)層,安全技術(shù)體系主要針對(duì)該層存在的組網(wǎng)可靠性和數(shù)據(jù)傳輸方面的安全風(fēng)險(xiǎn),通過(guò)安全設(shè)計(jì)來(lái)達(dá)到安全的區(qū)塊鏈網(wǎng)絡(luò)通信和可靠的分布式數(shù)據(jù)存儲(chǔ),主要包括:
1)構(gòu)建安全和健壯的對(duì)等網(wǎng)絡(luò),防范網(wǎng)絡(luò)癱瘓和被隔離攻擊的風(fēng)險(xiǎn)??紤]到區(qū)塊鏈采用P2P組網(wǎng)技術(shù),因此,應(yīng)在組網(wǎng)時(shí)采取合理的節(jié)點(diǎn)管理、資源索引、路由控制和對(duì)等網(wǎng)絡(luò)協(xié)議等措施,建立可擴(kuò)展、能自動(dòng)組網(wǎng)、健壯的區(qū)塊鏈節(jié)點(diǎn)網(wǎng)絡(luò),高效完成點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)通信,可靠地支撐上層功能。
2)構(gòu)建安全的分布式存儲(chǔ)系統(tǒng),防范數(shù)據(jù)丟失、不一致,甚至被篡改的風(fēng)險(xiǎn)。應(yīng)參考分布式數(shù)據(jù)庫(kù)的安全功能設(shè)計(jì)分布式賬本安全機(jī)制,提供高效、安全、穩(wěn)定地提供數(shù)據(jù)寫入及查詢服務(wù),確保區(qū)塊和交易數(shù)據(jù)的可靠和一致性存儲(chǔ)。
3)設(shè)計(jì)傳播驗(yàn)證機(jī)制,防范區(qū)塊和交易數(shù)據(jù)的泄漏、偽造和篡改風(fēng)險(xiǎn)。應(yīng)在本層設(shè)計(jì)節(jié)點(diǎn)間通信認(rèn)證機(jī)制,并加強(qiáng)節(jié)點(diǎn)間數(shù)據(jù)包的傳播和驗(yàn)證,以增強(qiáng)節(jié)點(diǎn)間的可信鑒別、網(wǎng)絡(luò)數(shù)據(jù)包校驗(yàn)和驗(yàn)證能力。
根據(jù)上述設(shè)計(jì),區(qū)塊鏈安全技術(shù)體系在網(wǎng)絡(luò)與存儲(chǔ)層主要的安全機(jī)制應(yīng)包括對(duì)等網(wǎng)絡(luò)安全組網(wǎng)、分布式存儲(chǔ)安全和傳播驗(yàn)證機(jī)制等安全機(jī)制等。
針對(duì)數(shù)據(jù)和算法層帶來(lái)的安全風(fēng)險(xiǎn),區(qū)塊鏈安全技術(shù)體系的主要目標(biāo)是保護(hù)數(shù)據(jù)邏輯結(jié)構(gòu)可靠性和可用性、保護(hù)數(shù)據(jù)簽名和加密的正確性和抗攻擊性,因此該安全技術(shù)體系主要從以下兩個(gè)方面展開設(shè)計(jì):
1)設(shè)計(jì)安全合理的區(qū)塊數(shù)據(jù)格式和鏈?zhǔn)浇Y(jié)構(gòu)。合理的區(qū)塊格式,包括定義區(qū)塊頭、區(qū)塊、隨機(jī)數(shù)、區(qū)塊頭哈希、交易數(shù)據(jù)等字段含義和大小,有助于在區(qū)塊傳播、驗(yàn)證效率和安全之間取得平衡。根據(jù)區(qū)塊鏈應(yīng)用的領(lǐng)域和關(guān)注點(diǎn)不同,可以設(shè)計(jì)不同的默克爾樹、MPT樹結(jié)構(gòu),利用合適的樹狀形式和哈希算法、非對(duì)稱密碼算法來(lái)組織交易數(shù)據(jù)的存儲(chǔ),可以有效提高大量交易數(shù)據(jù)的驗(yàn)證和定位速度,同時(shí)也能在保證區(qū)塊數(shù)據(jù)一致性的基礎(chǔ)上,提高賬本數(shù)據(jù)的完整性和不可篡改等安全保護(hù)能力。
2)設(shè)計(jì)和使用安全的密碼算法和密碼協(xié)議。密碼學(xué)是區(qū)塊鏈的安全基礎(chǔ)。區(qū)塊鏈中常用的密碼算法包括哈希算法、非對(duì)稱密碼算法、對(duì)稱密碼算法等。因此,在區(qū)塊鏈安全技術(shù)體系中,為應(yīng)用選擇使用合適安全強(qiáng)度的上述密碼算法、正確地實(shí)現(xiàn)這些密碼算法以及加強(qiáng)密鑰的安全管理是非常重要的,也是在實(shí)踐中必須加以重點(diǎn)關(guān)注的。同時(shí),時(shí)間戳的提供和驗(yàn)證機(jī)制,對(duì)于保證各節(jié)點(diǎn)之間的時(shí)間同步,確保區(qū)塊計(jì)算和驗(yàn)證的有效性起到非常重要的作用。設(shè)計(jì)使用正確的時(shí)間戳并加以檢驗(yàn),可以有效地防范基于時(shí)間的攻擊。
根據(jù)上述設(shè)計(jì),區(qū)塊鏈安全技術(shù)體系在數(shù)據(jù)與算法層主要的安全機(jī)制應(yīng)包括區(qū)塊格式、鏈?zhǔn)浇Y(jié)構(gòu)、密碼算法、默克爾樹和時(shí)間戳等。通過(guò)有效地實(shí)施這些安全機(jī)制,可保障區(qū)塊鏈數(shù)據(jù)的可靠性、完整性和不可篡改性。
共識(shí)機(jī)制和智能合約這兩項(xiàng)技術(shù)在區(qū)塊鏈技術(shù)框架中起到“靈魂”的作用,是區(qū)塊鏈得以成功和發(fā)揮作用的關(guān)鍵。也正因?yàn)槿绱?,近年?lái)針對(duì)共識(shí)機(jī)制和智能合約的安全攻擊也越來(lái)越多。因此,在共識(shí)和合約層,主要安全目標(biāo)是保障兩項(xiàng)關(guān)鍵技術(shù)安全可靠地發(fā)揮作用。區(qū)塊鏈安全技術(shù)體系主要從共識(shí)機(jī)制和智能合約兩個(gè)方面展開設(shè)計(jì),并分別從原理設(shè)計(jì)和實(shí)現(xiàn)部署上確保這兩項(xiàng)技術(shù)的安全。
1)安全共識(shí)。根據(jù)公有鏈、聯(lián)盟鏈等不同應(yīng)用場(chǎng)景設(shè)計(jì)合理和安全的共識(shí)機(jī)制,在分布式、高效和安全之間取得適當(dāng)?shù)耐讌f(xié),并有效防范常見的共識(shí)攻擊,如51%攻擊和惡意代理人攻擊。安全共識(shí)機(jī)制可以選擇常規(guī)的或定制修改的PoW、PoS、DPoS、PBFT等,也可以設(shè)計(jì)可插拔機(jī)制,便于在具體應(yīng)用場(chǎng)景中使用更為實(shí)用的共識(shí)機(jī)制。
2)安全合約。智能合約安全的目標(biāo)是確保所編寫的智能合約能夠在充滿不確定性的分布式環(huán)境下仍然能夠正確、安全地運(yùn)行。要達(dá)到此目的,應(yīng)通過(guò)規(guī)范編碼格式、設(shè)置正確的操作邏輯和采用形式化驗(yàn)證手段確保智能合約的安全性,嚴(yán)格防范出現(xiàn)交易順序依賴、時(shí)間戳依賴、誤操作異常、可重入攻擊等漏洞。同時(shí),還應(yīng)加強(qiáng)合約安全監(jiān)測(cè)等手段來(lái)保證及時(shí)發(fā)現(xiàn)和處置出現(xiàn)的問(wèn)題,降低安全風(fēng)險(xiǎn)。
應(yīng)用支撐層是在傳統(tǒng)的區(qū)塊鏈之上,其本身為更好地發(fā)揮區(qū)塊鏈的安全特性,并易于被區(qū)塊鏈應(yīng)用所使用,且避免安全與應(yīng)用脫節(jié)而設(shè)計(jì)的。因此,區(qū)塊鏈安全技術(shù)體系的主要目標(biāo)是通過(guò)設(shè)計(jì)合理的安全接口,將安全技術(shù)體系的底下三層——即數(shù)據(jù)與算法層、網(wǎng)絡(luò)與存儲(chǔ)層、共識(shí)與合約層所提供的各種安全機(jī)制整合起來(lái),并結(jié)合標(biāo)識(shí)鑒別、訪問(wèn)控制和密碼技術(shù)等通用安全技術(shù),為應(yīng)用系統(tǒng)提供安全的身份管理、用戶接入、數(shù)據(jù)訪問(wèn)和合約調(diào)用等接口。
隨著區(qū)塊鏈的廣泛應(yīng)用,針對(duì)其應(yīng)用安全支撐技術(shù)的研究和應(yīng)用也越來(lái)越多,如利用區(qū)塊鏈來(lái)實(shí)現(xiàn)身份鑒別,近年來(lái)已經(jīng)有多種技術(shù)方案被提出和試用。又如隱私保護(hù)問(wèn)題,由于區(qū)塊鏈與傳統(tǒng)信息系統(tǒng)的使用模式和架構(gòu)不一樣,很多傳統(tǒng)的隱私保護(hù)方法在區(qū)塊鏈中并不適用,需要根據(jù)區(qū)塊鏈應(yīng)用的實(shí)際情況研究和使用更適合的安全機(jī)制。目前在研究和應(yīng)用領(lǐng)域比較活躍的安全機(jī)制包括:采用訪問(wèn)控制手段,如鑒別用戶、限制用戶接入;采用數(shù)據(jù)隔離手段,如將交易細(xì)節(jié)放到側(cè)鏈、閃電網(wǎng)絡(luò)或在線下執(zhí)行,并不存儲(chǔ)在公開的主鏈上;采用數(shù)據(jù)變換手段;如通過(guò)數(shù)據(jù)加密、敏感數(shù)據(jù)脫敏、去標(biāo)識(shí)化和同態(tài)加密等手段將重要數(shù)據(jù)進(jìn)行變換;采用安全交易機(jī)制,如采用零知識(shí)證明、環(huán)簽名等技術(shù)。
因此,結(jié)合區(qū)塊鏈應(yīng)用的安全需求,區(qū)塊鏈安全技術(shù)體系在應(yīng)用安全支撐層主要的安全機(jī)制應(yīng)包括身份鑒別、授權(quán)訪問(wèn)、安全審計(jì)、隱私保護(hù)和跨鏈安全等。通過(guò)有效地實(shí)施這些安全機(jī)制,可以滿足應(yīng)用系統(tǒng)的保密性、完整性、可用性、真實(shí)性和不可否認(rèn)性等安全需求。
區(qū)塊鏈?zhǔn)且豁?xiàng)具有遠(yuǎn)大前景的技術(shù),適應(yīng)于在無(wú)需信任的去中心化網(wǎng)絡(luò)環(huán)境中,用來(lái)實(shí)現(xiàn)可信的價(jià)值傳遞。區(qū)塊鏈自誕生以來(lái)就受到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注,當(dāng)前已經(jīng)被應(yīng)用在金融交易清算、公證、數(shù)字產(chǎn)權(quán)保護(hù)和物流溯源等領(lǐng)域。但是,區(qū)塊鏈在應(yīng)用過(guò)程中仍然面臨一系列的安全挑戰(zhàn)。本文針對(duì)區(qū)塊鏈的技術(shù)特點(diǎn),分析了其面臨的主要安全風(fēng)險(xiǎn),提出了一個(gè)通用的分層安全技術(shù)體系,可用于指導(dǎo)區(qū)塊鏈應(yīng)用系統(tǒng)建設(shè),提高區(qū)塊鏈應(yīng)用的安全防護(hù)能力,并可促進(jìn)區(qū)塊鏈技術(shù)的進(jìn)一步發(fā)展。