• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      區(qū)塊鏈關(guān)鍵技術(shù)及存在問題研究綜述

      2022-02-24 12:32:10劉雙印雷墨鹥兮孫傳恒徐龍琴馮大春鄭建華李景彬
      關(guān)鍵詞:合約漏洞共識(shí)

      劉雙印,雷墨鹥兮,王 璐,孫傳恒,徐龍琴,曹 亮,馮大春,鄭建華,李景彬

      1.廣州市農(nóng)產(chǎn)品質(zhì)量安全溯源信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,廣州 510225

      2.石河子大學(xué) 機(jī)械電氣工程學(xué)院,新疆 石河子 832000

      3.仲愷農(nóng)業(yè)工程學(xué)院 智慧農(nóng)業(yè)創(chuàng)新研究院,廣州 510225

      4.廣東省高校智慧農(nóng)業(yè)工程技術(shù)研究中心,廣州 510225

      5.國家農(nóng)業(yè)信息化工程技術(shù)研究中心,北京 100097

      6.廣東省農(nóng)產(chǎn)品安全大數(shù)據(jù)工程技術(shù)研究中心,廣州 510225

      在當(dāng)今信息大爆炸的時(shí)代,時(shí)刻產(chǎn)生海量數(shù)據(jù)難以安全可靠傳輸,數(shù)據(jù)安全已嚴(yán)重影響人們的生活,如何有效保證系統(tǒng)數(shù)據(jù)安全成了如今迫在眉睫的問題之一[1]。每個(gè)人都是數(shù)據(jù)的生產(chǎn)者和使用者,但企業(yè)往往為保護(hù)隱私導(dǎo)致數(shù)據(jù)共享性差,甚至出現(xiàn)數(shù)據(jù)孤島等問題。雖然數(shù)據(jù)共享技術(shù)不僅可解決信息的封閉性和單一性問題,也有效實(shí)現(xiàn)數(shù)據(jù)增值,但同時(shí)存在上述數(shù)據(jù)安全和隱私泄漏的缺陷。2018年Facebook遭黑客攻擊,8 000余萬條用戶信息被泄漏;2019年多個(gè)公司大量用戶數(shù)據(jù)被盜,黑客私下交易8.7億條個(gè)人數(shù)據(jù);2020年萬豪國際集團(tuán)520萬客人信息被泄漏等,這些被泄漏的身份信息常被不法分子用于非法活動(dòng)。因此,研究新一代技術(shù)防止黑客攻擊,確保數(shù)據(jù)安全具有重要的現(xiàn)實(shí)意義。

      區(qū)塊鏈?zhǔn)且环N在密碼學(xué)、統(tǒng)計(jì)學(xué)、經(jīng)濟(jì)學(xué)和計(jì)算機(jī)科學(xué)等多學(xué)科交叉基礎(chǔ)上發(fā)展起來的新技術(shù),以其去中分布式存儲(chǔ)、匿名性高、數(shù)據(jù)一致性等優(yōu)點(diǎn)被廣泛應(yīng)用于信息安全、金融、證券、數(shù)字確權(quán)、溯源等領(lǐng)域,實(shí)現(xiàn)數(shù)據(jù)的分布式存儲(chǔ)和有效利用。區(qū)塊鏈與隱私保護(hù)的結(jié)合可以降低第三方監(jiān)管不嚴(yán)的風(fēng)險(xiǎn),在一定程度上保證數(shù)據(jù)安全有效,具有更廣闊的應(yīng)用價(jià)值。區(qū)塊鏈系統(tǒng)的安全性對系統(tǒng)本身意義重大,為了避免惡意節(jié)點(diǎn)的攻擊,使交易有序進(jìn)行,區(qū)塊鏈工作者改進(jìn)共識(shí)機(jī)制、優(yōu)化智能合約,對網(wǎng)絡(luò)監(jiān)管進(jìn)行加強(qiáng),讓區(qū)塊鏈能應(yīng)用到各個(gè)領(lǐng)域。但由于區(qū)塊鏈技術(shù)還處在發(fā)展階段,其在核心技術(shù)領(lǐng)域并不完善,導(dǎo)致區(qū)塊鏈系統(tǒng)本身存在一些缺陷,甚至在改善的過程中產(chǎn)生了一些新的技術(shù)漏洞,因此本文在分析區(qū)塊鏈關(guān)鍵技術(shù)的基礎(chǔ)上,主要針對區(qū)塊鏈現(xiàn)存的一些問題進(jìn)行分析總結(jié),概括了目前區(qū)塊鏈的幾項(xiàng)關(guān)鍵技術(shù),旨在總結(jié)出區(qū)塊鏈系統(tǒng)現(xiàn)階段存在的問題,并給出了基于這些關(guān)鍵技術(shù)存在的安全問題。通過詳細(xì)闡述區(qū)塊鏈系統(tǒng)現(xiàn)存問題:(1)可以作為區(qū)塊鏈系統(tǒng)開發(fā)者的參考,了解和避免常見的陷阱;(2)可以作為研究人員的指導(dǎo),以促進(jìn)區(qū)塊鏈技術(shù)的分析和驗(yàn)證技術(shù)的發(fā)展。以期為未來的區(qū)塊鏈發(fā)展提供更強(qiáng)有力的理論和現(xiàn)實(shí)支撐,為能更快地發(fā)現(xiàn)問題解決問題。因此,本文對區(qū)塊鏈系統(tǒng)現(xiàn)存問題和安全漏洞的分析對區(qū)塊鏈技術(shù)的發(fā)展具有極為重要的意義。

      1 研究背景

      1.1 區(qū)塊鏈研究背景

      “區(qū)塊鏈”概念于2008年在《比特幣:一種點(diǎn)對點(diǎn)電子現(xiàn)金系統(tǒng)》中被首次提出[2],并在比特幣系統(tǒng)的數(shù)據(jù)加密貨幣體系成功應(yīng)用,已成為政府、企業(yè)和學(xué)者等重點(diǎn)關(guān)注和研究熱點(diǎn)。英國政府于2016年1月發(fā)布了《分布式賬本技術(shù):超越區(qū)塊鏈》報(bào)告[3],指出英國政府正積極地評(píng)估區(qū)塊鏈技術(shù)潛力,并旨在更好地用來處理領(lǐng)導(dǎo)、協(xié)作和治理之間的關(guān)系;同年11月,微軟發(fā)布Azure區(qū)塊鏈。我國于2016年10月發(fā)布了《中國區(qū)塊鏈技術(shù)和應(yīng)用發(fā)展白皮書(2016)》[4],預(yù)示著我國正式進(jìn)入了前所未有的區(qū)塊鏈高速發(fā)展時(shí)代;同年2月IBM公司正式推出區(qū)塊鏈應(yīng)用平臺(tái);2019年10月,習(xí)近平總書記指出區(qū)塊鏈作為自主創(chuàng)新的新興技術(shù),將成為國家級(jí)戰(zhàn)略部署關(guān)鍵技術(shù)之一。截止到2019年底,我國已經(jīng)發(fā)布了25項(xiàng)與密碼模塊相關(guān)的國家標(biāo)準(zhǔn),阿里、騰訊、京東及百度等大型互聯(lián)網(wǎng)公司陸續(xù)推出自己的區(qū)塊鏈服務(wù)平臺(tái);Facebook公司成立Libra協(xié)會(huì),美國已有28個(gè)州推出區(qū)塊鏈的相關(guān)政策,且其政府部門共提出了22項(xiàng)區(qū)塊鏈相關(guān)法案[5]。2020年我國成立區(qū)塊鏈專委會(huì),招商銀行、農(nóng)業(yè)銀行和工商銀行等國內(nèi)金融機(jī)構(gòu)紛紛推出區(qū)塊鏈金融項(xiàng)目,為促進(jìn)區(qū)塊鏈快速發(fā)展奠定堅(jiān)實(shí)基礎(chǔ)。

      區(qū)塊鏈技術(shù)具有去中心化存儲(chǔ)、隱私保護(hù)、防篡改等特點(diǎn),提供了開放、分散和容錯(cuò)的事務(wù)機(jī)制,成為新一代匿名在線支付、匯款和數(shù)字資產(chǎn)交易的核心,被廣泛應(yīng)用于各大交易平臺(tái)[6]。同時(shí)也給金融、監(jiān)管機(jī)構(gòu)、科技創(chuàng)新、農(nóng)業(yè)以及政治等領(lǐng)域都帶來了深刻的變革[7-9]。以可編程社會(huì)為目標(biāo),區(qū)塊鏈技術(shù)將同20世紀(jì)互聯(lián)網(wǎng)技術(shù)一樣,創(chuàng)造21世紀(jì)技術(shù)革新的新紀(jì)元[10-12]。

      1.2 安全漏洞研究背景

      據(jù)國家信息安全漏洞共享平臺(tái)[13]統(tǒng)計(jì),自2016年到2020年的低危、中危和高危漏洞分布對比,如圖1所示。中危漏洞發(fā)生頻率最高,雖然在2018年有所減少,但是總體處于增長狀態(tài);高危漏洞的發(fā)生頻率僅次于中危漏洞,2017年下降明顯,但隨后幾年又呈快速增長趨勢;低危漏洞發(fā)生率最低,但逐年不斷增長??傮w來看,漏洞總量仍然處于不斷上升的勢態(tài),應(yīng)用程序、操作系統(tǒng)及數(shù)據(jù)庫的安全性依然存在極大威脅。

      圖1 近五年漏洞分布對比Fig.1 Comparison of vulnerability distribution in past five years

      1.3 系統(tǒng)漏洞

      同時(shí)漏洞嚴(yán)重危害著區(qū)塊鏈系統(tǒng)的安全,為了進(jìn)一步分析區(qū)塊鏈漏洞危害,文獻(xiàn)[14]從區(qū)塊鏈系統(tǒng)角度進(jìn)行分類,總結(jié)概括分為以下6類漏洞。

      由表1可以看出,第一類漏洞主要由語義設(shè)置造成,由于開發(fā)人員對程序的不透徹理解導(dǎo)致引入錯(cuò)誤語義,且語義錯(cuò)誤一般特定于應(yīng)用程序,即使后續(xù)使用智能檢測工具也很難自動(dòng)檢測出來。具體的可以分為執(zhí)行錯(cuò)誤、異常處理錯(cuò)誤、特征缺失以及輸入輸出錯(cuò)誤。例如cpp-ethereum系統(tǒng)中回退功能不屬于外部合約估算;go-ethereum系統(tǒng)中,在函數(shù)中GET&POST延長截止日期請求陷入超時(shí)會(huì)導(dǎo)致最后期限延長。第二類為環(huán)境和配置漏洞,由于區(qū)塊鏈系統(tǒng)應(yīng)用環(huán)境較為寬泛,且不同的環(huán)境駐留在不同的硬件或操作系統(tǒng)上,安裝許多不同版本的庫會(huì)影響依賴庫的功能;即便安裝相同版本的庫,由于用戶的各種自定義操作,也會(huì)使庫的配置信息與環(huán)境不匹配,導(dǎo)致底層操作系統(tǒng)執(zhí)行錯(cuò)誤。第三類是GUI漏洞,主要表現(xiàn)為用戶圖形界面的設(shè)置不規(guī)范。例如在Windows下,比特幣系統(tǒng)的界面會(huì)因?yàn)橹鳈C(jī)自身設(shè)置的原因顯得過大;在dogecoin系統(tǒng)中,客戶端啟動(dòng)畫面時(shí),徽標(biāo)與文字重疊;ethereum系統(tǒng)中,點(diǎn)擊新的窗口加載器屏幕不顯示框架等諸如此類情況的發(fā)生。第四類是并發(fā)漏洞,在大型系統(tǒng)中,高線程或進(jìn)程并發(fā)極易出現(xiàn)錯(cuò)誤從而造成系統(tǒng)錯(cuò)誤。在cpp-ethereum系統(tǒng)中,如果多個(gè)客戶同時(shí)創(chuàng)建交易,以太坊默認(rèn)設(shè)置無法可靠使用,因?yàn)槿魏慰蛻舳硕伎梢噪S時(shí)更改它,因此以太坊交易在創(chuàng)建合同時(shí)返回的地址不能保證是否是合同實(shí)際目標(biāo)地址。第五類為安全漏洞,由于系統(tǒng)脆弱性導(dǎo)致軟件上的信息和軟件提供的服務(wù)被破壞,極易遭受各種漏洞攻擊的危害。第六類為性能漏洞,主要體現(xiàn)在系統(tǒng)不能高效執(zhí)行系統(tǒng)任務(wù)而造成事務(wù)延遲,致使進(jìn)程死鎖等現(xiàn)象。例如go-ethereum系統(tǒng)中高速讀取磁盤時(shí)進(jìn)程死鎖導(dǎo)致任務(wù)中斷甚至數(shù)據(jù)丟失等的情況發(fā)生。

      表1 漏洞分類Table 1 Classification of bugs

      2 區(qū)塊鏈概念

      自中本聰[2]提出區(qū)塊鏈之后,國內(nèi)外學(xué)者從不同的角度對區(qū)塊鏈概念提出了自己的見解。如Sookhak提到區(qū)塊鏈?zhǔn)且粋€(gè)分散的、無信任的、防干擾的、分布式的賬本[15]。Daniel認(rèn)為區(qū)塊鏈?zhǔn)且环N新型的軟件開發(fā)架構(gòu),以一種僅附加的形式使用獨(dú)特的數(shù)據(jù)結(jié)構(gòu)將數(shù)據(jù)連接成鏈,并將哈希函數(shù)作為映射數(shù)據(jù)的工具以保證數(shù)據(jù)的安全[16]。王芳將區(qū)塊鏈定義為利用加密鏈?zhǔn)絽^(qū)塊結(jié)構(gòu)來驗(yàn)證與存儲(chǔ)數(shù)據(jù)、使用分布式節(jié)點(diǎn)共識(shí)機(jī)制(Consensus Mechanism)來生成和更新數(shù)據(jù),并通過智能合約(Smart Contracts)來編程和操作數(shù)據(jù)的一種去中心化的基礎(chǔ)架構(gòu)與分布式計(jì)算范式[17]。袁勇、張奧將區(qū)塊鏈理解為是一個(gè)隨著時(shí)間序列不斷增長的去中心化的分布式數(shù)據(jù)庫,其本質(zhì)是基于非對稱加密算法的分布式賬本技術(shù)[6,18]。Yu認(rèn)為區(qū)塊鏈?zhǔn)请娮迂泿艓げ鞠到y(tǒng)的一種點(diǎn)對點(diǎn)技術(shù)實(shí)現(xiàn),它是由參與者來維護(hù)的,可以在網(wǎng)絡(luò)系統(tǒng)中沒有中心服務(wù)器的情況下記錄每個(gè)比特幣交易記錄[19]。Halamka解釋區(qū)塊鏈?zhǔn)怯梢唤M不可變的分布式數(shù)字賬本組成,它們負(fù)責(zé)跟蹤交易并將其記錄在數(shù)字塊上,區(qū)塊鏈架構(gòu)中所有節(jié)點(diǎn)相對應(yīng)地服務(wù)且不依賴中心網(wǎng)絡(luò)服務(wù)器,因此區(qū)塊鏈中心故障點(diǎn)無懈可擊[20]。Yang、魏曉旭認(rèn)為區(qū)塊鏈?zhǔn)遣捎妹艽a學(xué)的方法將數(shù)據(jù)塊連接在一起并可以進(jìn)行可行性交易的分布式數(shù)據(jù)庫技術(shù),具有防篡改、可追溯、多方維護(hù)的功能,它為了實(shí)現(xiàn)不同各方之間的信息共享和信息監(jiān)督,任何一方必須按照約定事先得到其他各方的同意[21-22]。

      綜上所述,區(qū)塊鏈概念可以理解為以非對稱加密算法為基礎(chǔ),以改進(jìn)的默克爾樹(MerkleTree)[23]為數(shù)據(jù)結(jié)構(gòu),使用共識(shí)機(jī)制、點(diǎn)對點(diǎn)網(wǎng)絡(luò)、智能合約等技術(shù)結(jié)合而成的一種分布式存儲(chǔ)數(shù)據(jù)庫技術(shù)。

      區(qū)塊鏈分為公有鏈(Public Blockchain)、聯(lián)盟鏈(Consortium Blockchain)、私有鏈(Private Blockchain)和混合鏈(Hybrid Blcokchain)[24]四大類。

      (1)公有鏈?zhǔn)蔷W(wǎng)絡(luò)中任何人都可以隨時(shí)訪問的區(qū)塊鏈系統(tǒng),通常被認(rèn)為是完全去中心化、匿名性高和數(shù)據(jù)不可篡改的區(qū)塊鏈。

      (2)聯(lián)盟鏈為若干企業(yè)或機(jī)構(gòu)共同管理的區(qū)塊鏈,參與者要事先進(jìn)行注冊認(rèn)證,因此相對于公有鏈來說,聯(lián)盟鏈的參與節(jié)點(diǎn)較少。數(shù)據(jù)由認(rèn)證后的參與者共同記錄和維護(hù),這類節(jié)點(diǎn)擁有讀取數(shù)據(jù)的權(quán)限。

      (3)私有鏈?zhǔn)且环N由某個(gè)組織或某個(gè)用戶控制的區(qū)塊鏈,控制參與節(jié)點(diǎn)個(gè)數(shù)規(guī)則嚴(yán)格,因此交易速度極快,隱私等級(jí)更高,不容易遭受攻擊,相比于公有鏈系統(tǒng)有更高的安全性,但去中心化程度被極大削弱。從接入類型來看,區(qū)塊鏈分為非許可鏈和許可鏈[14]。非許可鏈不需要獲得允許即可接入?yún)^(qū)塊鏈系統(tǒng),公有鏈就是一種典型的非許可鏈,所有節(jié)點(diǎn)都可以自由參與鏈上的交易。許可鏈包括聯(lián)盟鏈和私有鏈,對于接入節(jié)點(diǎn)有嚴(yán)格的標(biāo)準(zhǔn)和控制,系統(tǒng)內(nèi)的數(shù)據(jù)訪問權(quán)只授權(quán)給經(jīng)過認(rèn)證的節(jié)點(diǎn)。相對于非許可鏈來說,許可鏈犧牲了一定的去中心化特性[25],以換取鏈上數(shù)據(jù)更高的安全性保護(hù)。混合鏈?zhǔn)枪墟満退接墟湹幕旌象w,結(jié)合了共有鏈和私有鏈的特性。

      (4)混合鏈允許用戶決定區(qū)塊鏈的參與成員,以及交易是否可以被公開,因此混合區(qū)塊鏈?zhǔn)强啥ㄖ频?,所以它的混合架?gòu)通過利用私有區(qū)塊鏈的限制訪問來確保隱私,同時(shí)保持了公共區(qū)塊鏈的完整性、透明度和安全性。

      3 區(qū)塊鏈關(guān)鍵技術(shù)分析

      區(qū)塊鏈技術(shù)包括密碼學(xué)、默克爾樹(MerkleTree)、對等節(jié)點(diǎn)(peer-to-peer,P2P)、共識(shí)機(jī)制以及智能合約[26],其區(qū)塊鏈關(guān)鍵技術(shù)棧如圖2所示。

      圖2 區(qū)塊鏈關(guān)鍵技術(shù)棧Fig.2 Stack of Blockchain key echnology

      區(qū)塊鏈中密碼學(xué)原理主要涉及到加密和簽名,其中加密是由發(fā)送方利用接收方的公鑰加密,接收方收到信息后用自己的私鑰解密即可得到信息內(nèi)容;簽名是由發(fā)送方用自己的私鑰簽名,接收方用發(fā)送方的公鑰驗(yàn)證其信息發(fā)送者的身份;兩種方式皆采用非對稱加密算法。默克爾樹利用哈希指針構(gòu)成樹形數(shù)據(jù)結(jié)構(gòu),將處理后的數(shù)據(jù)連接匯總為一串哈希值,節(jié)點(diǎn)間的算法一致性保證了哈希指針的準(zhǔn)確性。對等節(jié)點(diǎn)(P2P)組網(wǎng)運(yùn)行在區(qū)塊鏈系統(tǒng)的網(wǎng)絡(luò)層,用于控制消息和數(shù)據(jù)之間的傳輸可以直接在節(jié)點(diǎn)之間完成,有利于各個(gè)節(jié)點(diǎn)監(jiān)聽網(wǎng)絡(luò)發(fā)布區(qū)塊以及驗(yàn)證信息發(fā)布交易的合法性,允許數(shù)據(jù)以快速和安全的方式存儲(chǔ)、維護(hù)和分發(fā)[27]。共識(shí)機(jī)制則保證了區(qū)塊鏈中所有用戶的共同參與,是實(shí)現(xiàn)去中心化管理的重要協(xié)議,從公知機(jī)制提出至今已有一系列的公式算法投入使用。智能合約在區(qū)塊鏈基礎(chǔ)上得到進(jìn)一步的完善,由開始的單一堆棧腳本語言到如今可自動(dòng)控制交易完成度的合約協(xié)議。

      從結(jié)構(gòu)來看,區(qū)塊包含區(qū)塊頭(BlockHeader)和區(qū)塊體(BlockBody)兩部分,區(qū)塊頭中的關(guān)鍵信息包括當(dāng)前版本號(hào)(Version)、前區(qū)塊哈希值(PreviewsHash)、時(shí)間戳(Timestamp)、隨機(jī)數(shù)(Nonce)以及默克爾樹(MerkleTree)的哈希值(MerkleHash)等信息[28]。前一個(gè)區(qū)塊存儲(chǔ)后一個(gè)區(qū)塊的哈希值,并按生成的時(shí)間順序進(jìn)行連接,物理上是塊與塊之間的連接,邏輯上是鏈上信息的關(guān)聯(lián),構(gòu)成了一個(gè)外表為鏈內(nèi)在是數(shù)據(jù)關(guān)聯(lián)的賬本形式,如圖3所示。區(qū)塊鏈的關(guān)鍵技術(shù)加密算法、默克爾樹、共識(shí)機(jī)制、智能合約詳細(xì)分析如下。

      圖3 區(qū)塊鏈內(nèi)部結(jié)構(gòu)圖Fig.3 Structure of Blockchain internal diagram

      3.1 哈希算法

      哈希函數(shù)是一種將可變長度數(shù)據(jù)映射到固定長度摘要的函數(shù),對輸入數(shù)據(jù)的任何更改都會(huì)導(dǎo)致哈希列中發(fā)生不可預(yù)測的變化。區(qū)塊鏈中使用SHA-256(secure Hash algorithm 256)哈希函數(shù)對任意長度的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,即將源數(shù)據(jù)加工得到一串256位的字符,便于數(shù)據(jù)統(tǒng)一管理和存儲(chǔ),再將統(tǒng)一格式的字符打包存進(jìn)區(qū)塊,在減少存儲(chǔ)空間的同時(shí)最大程度保證數(shù)據(jù)安全性。哈希函數(shù)具有三大經(jīng)典特性:單向性(Hiding)、抗碰撞性(Collision resistance)、結(jié)果不可預(yù)測性(Puzzle friendly)。

      單向性:已知輸入可以得到輸出,但是已知輸出無法逆推出輸入。

      抗碰撞性:由于哈希函數(shù)擁有2256個(gè)輸入空間,計(jì)算量趨于無限大,想要構(gòu)造一個(gè)輸入使其結(jié)果為當(dāng)前值幾乎不可能。

      結(jié)果不可預(yù)測性:對于已經(jīng)公布的交易或是隨機(jī)值,要推測得到特定特征的輸出也是不可能的。

      在區(qū)塊鏈的交易過程中為了保證數(shù)據(jù)的安全,如圖4交易簽名過程,首先對所有產(chǎn)生的交易數(shù)據(jù)都取哈希值Hash(M);其次將得到的哈希值與交易明文拼接得到最終發(fā)送內(nèi)容S;然后將S用發(fā)送方自己的私鑰進(jìn)行數(shù)字簽名,最終將數(shù)字簽名寫入?yún)^(qū)塊。該數(shù)字簽名利用非對稱算法的計(jì)算安全性,保證了信息的完整性和不可抵賴性,例如A給B發(fā)起交易,A聲稱自己是A,但B無法確定消息的正確性以及A的身份,因?yàn)锽的公鑰是公開的,任何人都可以使用B的公鑰向其發(fā)送消息,而數(shù)字簽名不僅能夠確保A的身份和數(shù)據(jù)的完整性,還能夠防范雙花攻擊[29],減少分叉的可能。

      圖4 交易簽名Fig.4 Signature of transaction

      3.2 MerkleTree

      從廣義上來看,區(qū)塊鏈?zhǔn)窃诿艽a學(xué)的基礎(chǔ)上,對數(shù)據(jù)的一種分布式存儲(chǔ)技術(shù)。首先對數(shù)據(jù)進(jìn)行預(yù)處理:區(qū)塊鏈對數(shù)據(jù)進(jìn)行加密取哈希、摘要處理,得到符合區(qū)塊要求的數(shù)據(jù)格式,在減少存儲(chǔ)空間的同時(shí)最大程度地保證了數(shù)據(jù)的安全性。存儲(chǔ):即將得到的不同數(shù)據(jù)哈希值打包放進(jìn)區(qū)塊。在計(jì)算機(jī)領(lǐng)域中,MerkleTree[30]是一種樹形數(shù)據(jù)結(jié)構(gòu),如圖3所示。區(qū)塊分為區(qū)塊頭和區(qū)塊體,兩部分使用MerkleTree的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)連接,葉子節(jié)點(diǎn)的交易(transaction,TX)兩兩得到的哈希值是上一層的葉子節(jié)點(diǎn),這樣逐層往上遞進(jìn),將區(qū)塊體中全部交易迭代得到的根哈希值打包存儲(chǔ)在區(qū)塊頭中。在打包交易時(shí)再添加交易時(shí)間戳、隨機(jī)數(shù)等關(guān)鍵值。MerkleTree可以實(shí)現(xiàn)大量數(shù)據(jù)的快速存儲(chǔ)和讀取,有利于數(shù)據(jù)的高效驗(yàn)證。

      作為區(qū)塊鏈數(shù)據(jù)存儲(chǔ)的關(guān)鍵結(jié)構(gòu),MerkleTree主要用于完整交易的存在性檢查[31]。MerkleTree中將網(wǎng)絡(luò)節(jié)點(diǎn)分為全節(jié)點(diǎn)和輕節(jié)點(diǎn)。全節(jié)點(diǎn)中保存著鏈上交易中所有的信息,而輕節(jié)點(diǎn)則負(fù)責(zé)驗(yàn)證交易合法性,如比特幣錢包。其主要步驟為:

      (1)輕節(jié)點(diǎn)計(jì)算出TX B的Hash B,并向鏈中全節(jié)點(diǎn)發(fā)送請求,請求一個(gè)能夠證明藍(lán)色交易TX B被包含在MerkleTree里面的默克爾樹根哈希值(Merkle proof)。

      (2)全節(jié)點(diǎn)收到請求,將上一層綠色的Hash A發(fā)送給輕節(jié)點(diǎn)進(jìn)行計(jì)算驗(yàn)證。

      (3)輕節(jié)點(diǎn)得到Hash A,與自己的Hash B進(jìn)行哈希運(yùn)算得到Hash AB值,全節(jié)點(diǎn)再將另一個(gè)分支上綠色的Hash CD傳給輕節(jié)點(diǎn)。

      (4)輕節(jié)點(diǎn)將自己的Hash AB與得到的Hash CD進(jìn)行哈希運(yùn)算最終得到Hash ABCD。

      (5)最后將(4)的結(jié)果與本地存儲(chǔ)的根哈希值進(jìn)行比較,驗(yàn)證該交易的存在性。

      3.3 共識(shí)機(jī)制

      共識(shí)機(jī)制是指在動(dòng)態(tài)交易的過程中使節(jié)點(diǎn)對分布式數(shù)據(jù)庫中的內(nèi)容達(dá)成一致的過程,區(qū)塊鏈?zhǔn)褂霉沧R(shí)機(jī)制令節(jié)點(diǎn)對交易達(dá)成一致性共識(shí),從而弱化中心化監(jiān)管體系的功能。從最開始的工作量證明(proof of work,PoW)、實(shí)用拜占庭容錯(cuò)算法(practical Byzantine fault tolerance,PBFT)、權(quán)益證明(proof of stake,PoS)到后來的授權(quán)權(quán)益證明(delegated proof of stake,DPoS)、權(quán)威證明(proof of authority,PoA)和Kafka等一系列共識(shí)機(jī)制[32-34]。共識(shí)機(jī)制一直在不斷完善,對應(yīng)著領(lǐng)域要求的不同向不同的方向演進(jìn)。作為區(qū)塊鏈的核心技術(shù),共識(shí)機(jī)制能有效對區(qū)塊鏈中各節(jié)點(diǎn)的數(shù)據(jù)達(dá)成共識(shí),快速完成交易數(shù)據(jù)處理,保證了數(shù)據(jù)的一致性和可靠性。其典型的共識(shí)機(jī)制詳細(xì)分析如下。

      工作量證明(PoW):Dwork于1993年首次提出用工作量證明思想,通過計(jì)算出某個(gè)數(shù)學(xué)難題來提高垃圾郵件發(fā)送者成本[35]。1999年首次在論文中引出PoW共識(shí)機(jī)制,這也為后世中本聰提出在比特幣中使用的共識(shí)機(jī)制奠定了基礎(chǔ)[36]。工作量證明是區(qū)塊鏈共識(shí)機(jī)制中最典型的算法之一,如比特幣中的挖礦過程?!暗V工”通過不斷嘗試計(jì)算出符合挖礦難度(Difficulty)的隨機(jī)數(shù)N,來獲得一定的比特幣獎(jiǎng)勵(lì),如公式(1)所示:

      H(BlockHeader)≤target(1)

      難度值屬于2256個(gè)輸入空間中極小的一部分目標(biāo)值域(Target),如公式(2)所示:

      在區(qū)塊鏈系統(tǒng)中區(qū)塊會(huì)在某個(gè)周期內(nèi)(每2 016個(gè)區(qū)塊,約兩周時(shí)間)動(dòng)態(tài)調(diào)整閾值的難度,如公式(3)所示:

      當(dāng)系統(tǒng)挖礦難度(target)不變時(shí),實(shí)際挖礦的難度大于預(yù)期挖礦的難度,等號(hào)右邊大于1,目標(biāo)閾值增大,同時(shí)挖礦難度減小,挖礦難度與目標(biāo)閾值難度成正比。當(dāng)挖礦人數(shù)增多導(dǎo)致區(qū)塊產(chǎn)生速度明顯加快時(shí),系統(tǒng)就會(huì)提升挖礦的難度,使區(qū)塊產(chǎn)生的速度趨于平衡(一般情況下每10 min產(chǎn)生一個(gè)區(qū)塊)。1999年Castro等提出使用拜占庭容錯(cuò)算法(practical Byzantine fault tolerance,PBFT),應(yīng)用于吞吐量不大但要處理大量事件的數(shù)字資產(chǎn)平臺(tái),在原始拜占庭算法的基礎(chǔ)上提高了效率[37]。PBFT算法規(guī)定全網(wǎng)至少需要部署3f+1個(gè)節(jié)點(diǎn),最多可容忍f個(gè)惡意節(jié)點(diǎn),若出現(xiàn)拜占庭故障,整個(gè)系統(tǒng)的狀態(tài)由2f+1個(gè)節(jié)點(diǎn)決定,即在保證系統(tǒng)活性和安全性前提下,在全網(wǎng)惡意節(jié)點(diǎn)數(shù)少于1/3時(shí)達(dá)成共識(shí)。但著名科學(xué)家Eric教授在報(bào)告中提出分布式系統(tǒng)在一致性、安全性、分區(qū)容錯(cuò)性三者中最多只能同時(shí)滿足兩種,PBFT算法亦不能滿足當(dāng)時(shí)的生態(tài)系統(tǒng)。2012年,權(quán)益證明(PoS)首次在點(diǎn)點(diǎn)幣(Peercoin)中出現(xiàn),其使用“幣齡”的概念將礦工手中的貨幣量加以控制,并規(guī)定持幣者必須有一定時(shí)間期限,時(shí)間越久幣齡越長,如公式(4)所示[38-39]:

      幣齡=貨幣量×持有時(shí)間 (4)

      為了保證系統(tǒng)的公平性,礦工的幣齡越高則挖礦的難度越低,在一定程度上可以削減用戶被攻擊的可能性。PoS的出現(xiàn)改善了PoW中算力消耗過大的現(xiàn)象,并在一定程度上緩解了之前由于出塊時(shí)間過慢造成效率低下的情況,增加了吞吐量的同時(shí)加快了處理速度,但若系統(tǒng)中首富現(xiàn)象突出,會(huì)造成中心化集中問題[40]。

      公式(1)~(3)中,actualtime和expectedtime分別為實(shí)際挖礦難度和期望挖礦難度;target和Difficulty分別為系統(tǒng)的目標(biāo)閾值難度和挖礦難度;Difficulty||Target為系統(tǒng)設(shè)置實(shí)際挖礦難度值,最小為1,Target為目標(biāo)閾值。

      授權(quán)權(quán)益證明(DPoS)[41]:DPoS基于民主投票的形式,由節(jié)點(diǎn)選舉出N個(gè)成員成為系統(tǒng)中的“代表團(tuán)”,擁有代幣數(shù)量越多的節(jié)點(diǎn)成為“代表”的概率越大。團(tuán)中的“代表”節(jié)點(diǎn)負(fù)責(zé)收集信息、打包交易以及驗(yàn)證交易和新生產(chǎn)的區(qū)塊,如下授權(quán)權(quán)益證明工作流程圖。由時(shí)間片輪流分配時(shí)間給“代表”節(jié)點(diǎn)處理事物,若出現(xiàn)惡意“代表”,該節(jié)點(diǎn)將會(huì)被撤銷出塊權(quán)利并取消“代表”資格,再推選出新的“代表”。DPoS的出現(xiàn)減少了算力和電力的浪費(fèi),也提升了交易處理速度和區(qū)塊吞吐量,但同時(shí)不可避免地削弱了去中心化工作模式的能力。

      權(quán)威證明(PoA):以太坊創(chuàng)始人Gavin于2017年首次提出權(quán)威證明共識(shí)機(jī)制。PoA共識(shí)機(jī)制主要用于聲譽(yù)積累,驗(yàn)證者需要驗(yàn)證用戶的身份,而不是用戶所持有的貨幣[42]。想要驗(yàn)證交易的用戶要首先確認(rèn)其身份,將身份鏈接到所執(zhí)行的驗(yàn)證,并存儲(chǔ)在區(qū)塊鏈上。當(dāng)交易被驗(yàn)證時(shí),驗(yàn)證者的身份將通過某種協(xié)議在鏈上得到確認(rèn)。該身份只有由一小群驗(yàn)證者來確定,從而提高了共識(shí)協(xié)議的效率和安全性。PoA不需要高計(jì)算成本,也不需要積累大量代幣,但它僅適用于私有區(qū)塊鏈和聯(lián)盟區(qū)塊鏈網(wǎng)絡(luò)。同年7月,Hyperledger社區(qū)正式發(fā)布Fabric 1.0,其中出現(xiàn)的共識(shí)機(jī)制打破了以往以證明為主的共識(shí)機(jī)制印象,形成了以背書節(jié)點(diǎn)(endorsing peer)、排序節(jié)點(diǎn)(orderers)和提交節(jié)點(diǎn)(committing peer)三類節(jié)點(diǎn)為主的Fabric共識(shí)機(jī)制[43]。超級(jí)賬本共識(shí)流程如圖5所示,其主要步驟如下:

      圖5 超級(jí)賬本共識(shí)流程Fig.5 Process of hyperledger fabric consensus

      步驟1客戶端(client SDK)創(chuàng)建提案,根據(jù)所選擇的背書策略(endorsement policy)將提案發(fā)送給相應(yīng)的背書節(jié)點(diǎn)。提案中包含了用戶編號(hào)(ClientID)和所調(diào)用的鏈碼函數(shù)(BlockchainCoin function)及其參數(shù)、時(shí)間戳(Timestamp)和客戶端簽名(ClientSig)等信息[44]。

      步驟2背書節(jié)點(diǎn)會(huì)驗(yàn)證客戶端簽名,確保提案是由已認(rèn)證的客戶端發(fā)出。背書節(jié)點(diǎn)所模擬的交易請求是根據(jù)提案中鏈碼執(zhí)行的,背書節(jié)點(diǎn)的簽名(sign TXendorsed)附加在生成的執(zhí)行結(jié)果中,即背書過程。模擬執(zhí)行的結(jié)果是一組基于當(dāng)前世界狀態(tài)(state database)的讀寫集(readset and writeset set),背書后將背書簽名和讀寫集發(fā)送給客戶端。

      步驟3客戶端驗(yàn)證背書結(jié)果的簽名,確保其來自合法的背書節(jié)點(diǎn),客戶端可以檢查背書節(jié)點(diǎn)簽名的有效性以及從不同背書節(jié)點(diǎn)接收到的讀寫集之間的一致性,如果一致則根據(jù)背書結(jié)果生成交易并廣播給排序節(jié)點(diǎn)。在驗(yàn)證階段后期客戶端可以施行強(qiáng)制檢查,目的是可以幫助在事務(wù)流程早期階段檢測事務(wù)故障,以降低開銷。

      步驟4在Hyperledger Fabric中使用Kafka模式對交易進(jìn)行排序。排序節(jié)點(diǎn)將收到的交易交給Kafka集群排序,同時(shí)會(huì)按照一定的規(guī)則從Kafka集群中讀取一定數(shù)量的有序交易并打包成塊。排序服務(wù)對區(qū)塊簽名后,將區(qū)塊分發(fā)給提交節(jié)點(diǎn)。

      步驟5提交節(jié)點(diǎn)收到區(qū)塊后,即可對區(qū)塊進(jìn)行驗(yàn)證,其中主要是驗(yàn)證交易中的讀寫數(shù)據(jù)集是否與世界狀態(tài)的數(shù)據(jù)版本一致。提交節(jié)點(diǎn)使用讀寫集合的讀集部分來檢查交易的有效性,然后將所有驗(yàn)證通過的交易中讀寫集中寫部分寫入世界狀態(tài),同時(shí)提交節(jié)點(diǎn)會(huì)使用寫集更新狀態(tài)數(shù)據(jù)庫即賬本。若驗(yàn)證失敗,已中止和已提交事務(wù)的驗(yàn)證塊將附加到分類帳中,將記錄每個(gè)事務(wù)的提交或中止?fàn)顟B(tài)。

      除了以上介紹的六類主流共識(shí)機(jī)制,還存在一些應(yīng)用于各大區(qū)塊鏈平臺(tái)的共識(shí)算法,文章對它們的特征、優(yōu)缺點(diǎn)、參與系統(tǒng)以及在自身基礎(chǔ)上所提出的改進(jìn)算法整理如表2所示。

      表2 共識(shí)機(jī)制分類Table 2 Classification of consensus

      3.4 智能合約

      智能合約(smart contract)[45]由Szabo在1994年首次提出,它是一段可以自動(dòng)執(zhí)行的計(jì)算機(jī)程序,在區(qū)塊鏈中應(yīng)用復(fù)雜的可編程語言和工程操作對區(qū)塊鏈的執(zhí)行步驟做約束,當(dāng)賬戶觸發(fā)特定條件時(shí)合約自動(dòng)執(zhí)行。其目的是為了保證合約雙方不能惡意篡改合約內(nèi)容,并能夠在沒有中心管理者的監(jiān)管下確保合同有效實(shí)施,其代碼具有自動(dòng)執(zhí)行和跟蹤協(xié)議條款和條件的能力,因此,智能合約是自我驗(yàn)證、自我執(zhí)行和不可逆的,智能合約被認(rèn)為是區(qū)塊鏈革命的第三代產(chǎn)品[46]。

      智能合約的雛形是基于比特幣系統(tǒng)的堆棧腳本語言(stack-base scripting)[47-48],該語言不支持內(nèi)部循環(huán),缺乏圖靈完備性(turing completeness)。比特幣中的智能合約只能支持有限的計(jì)算邏輯,是基于交易的賬本模式(transaction-based ledger),故通常只能用于識(shí)別用戶身份。以太坊使用圖靈完備的智能合約對交易進(jìn)行識(shí)別、處理和驗(yàn)證,調(diào)用函數(shù)對以上過程進(jìn)行操作。超級(jí)賬本(Hyperledger)旗下的Fabric子項(xiàng)目采用多種通用語言編寫“鏈碼(chaincode)”,F(xiàn)abric更偏向于企業(yè)級(jí)應(yīng)用開發(fā),功能強(qiáng)大,共識(shí)機(jī)制可插拔,基于復(fù)雜的業(yè)務(wù)邏輯觸發(fā)執(zhí)行,開發(fā)過程快速便利。

      智能合約的執(zhí)行流程[49]如圖6所示,智能合同通常由一個(gè)可以識(shí)別的執(zhí)行代碼和狀態(tài)集合的特定地址組成。兩方發(fā)起交易,合約由開發(fā)人員(developer)進(jìn)行開發(fā),通過使用不同編程語言(如Python或Solidity[50])中的特定條件語句進(jìn)行編譯,將編譯得到的字節(jié)碼(bytecode)在以太坊虛擬機(jī)(EVM)里執(zhí)行,并由礦工共識(shí)(miners consensus)強(qiáng)制執(zhí)行智能合約,不同的交易觸發(fā)各自對應(yīng)的合約條款。提交包括智能合約功能所需參數(shù)的交易給區(qū)塊鏈,同時(shí)礦工們要負(fù)責(zé)核實(shí)該交易的合法性并將事務(wù)存儲(chǔ)到區(qū)塊中,目的是創(chuàng)建一個(gè)用來調(diào)用智能合約的唯一地址。之后,區(qū)塊鏈用戶可以通過將事務(wù)傳輸?shù)胶霞s來調(diào)用合約代碼觸發(fā)事件(event),合約將由狀態(tài)變量和外部可信數(shù)據(jù)集進(jìn)行檢查。交易事件觸發(fā)成功合約自動(dòng)執(zhí)行支付(payment)操作,最后廣播全網(wǎng)由礦工們進(jìn)行驗(yàn)證(verification)。

      圖6 智能合約執(zhí)行流程Fig.6 Working of smart contract

      智能合約的調(diào)用只能由外部用戶發(fā)起,合約用戶不能主動(dòng)發(fā)起交易。以以太坊為例,創(chuàng)建交易時(shí),接收地址為要調(diào)用的智能合約地址,調(diào)用的函數(shù)及其函數(shù)的編碼填寫在合約的DATA域中。

      代碼1:構(gòu)造函數(shù)

      構(gòu)造函數(shù)僅在合約創(chuàng)建時(shí)調(diào)用一次,并準(zhǔn)備好新合約的唯一地址:

      1.Constructor(time,address)

      2. Public{

      3. Address=address;//地址=當(dāng)前合約地址

      4. endtime=time; //事件終止時(shí)間=實(shí)際時(shí)間

      5. bytes solution;

      6.}

      代碼2:合約函數(shù)

      在智能合約中,使用event定義一個(gè)事件,emit調(diào)用該事件。外部函數(shù)調(diào)用合約函數(shù),此處假設(shè)外部賬戶已觸發(fā)合約:

      1.contract X{

      2. event A(string str)

      3. Function foo(string str)return(uint){

      4. emit A(str);

      5. return 123;

      6. }

      7.}

      8.contract Y{

      9. uint z;//z為x.foo(“call foo directly”)的返回值。

      10. Function callXFooDirectly(address adr)public{//調(diào)用X合約,該函數(shù)的參數(shù)是合約X的地址

      11. X x=X(adr);

      12. z=x.foo(“call foo directly”)

      13. }

      14.}

      用戶交易由外部賬戶W發(fā)起,首先調(diào)用合約Y,再由Y調(diào)用合約X繼續(xù)執(zhí)行。若用戶交易調(diào)用的合約發(fā)生錯(cuò)誤,會(huì)導(dǎo)致發(fā)起調(diào)用的合約立即回滾,即若合約X執(zhí)行過程中出現(xiàn)異常,合約Y調(diào)用失敗。

      為了確保采礦網(wǎng)絡(luò)計(jì)算消耗工作的公平,以太坊需向礦工支付與所需計(jì)算成比例的交易費(fèi)。即以太坊字節(jié)碼中的每個(gè)指令都具有預(yù)先指定數(shù)量的gas,當(dāng)用戶發(fā)送交易調(diào)用合同時(shí),用戶須首先指定自身愿意為此次合約執(zhí)行提供多少gas以及每個(gè)gas單元的價(jià)格(gasprice),區(qū)塊中的礦工隨后會(huì)收到交易費(fèi)[49],如公式(5):

      如果某些執(zhí)行需要的氣體超過gas限額(gaslimit),則執(zhí)行終止,區(qū)塊狀態(tài)將恢復(fù)到初始狀態(tài),但作為保護(hù)機(jī)制,發(fā)送方仍必須向礦工支付所有的gaslimit,這是對抗資源耗盡攻擊的一種有效措施。

      表3將智能合約分為三類并分別列出優(yōu)缺點(diǎn)。

      表3 智能合約分類及優(yōu)缺點(diǎn)Table 3 Classification of smart contract

      與傳統(tǒng)的智能合約相比,前者具有公開透明、內(nèi)容不可篡改以及永久運(yùn)行的能力,還具有去中心化和高效的特點(diǎn)。但由于其不可篡改性致使合約一旦部署便再無更改的可能性。同時(shí)由于匿名性,在目前網(wǎng)絡(luò)法律立法還不完善的情況下,若任一方違約都將造成極大損失。最后,智能合約仍存在許多安全上的隱患亟待解決。

      4 存在的問題

      區(qū)塊鏈順應(yīng)潮流發(fā)展,同時(shí)也存在很多問題制約和阻礙其推進(jìn)。為了更好地分析區(qū)塊鏈技術(shù)發(fā)展存在問題,本章將從區(qū)塊鏈的數(shù)據(jù)存儲(chǔ)與交互、隱私保護(hù)、資源分配、漏洞攻擊四個(gè)方面進(jìn)行概括總結(jié)。

      4.1 數(shù)據(jù)存儲(chǔ)與交互

      區(qū)塊鏈作為分布式數(shù)據(jù)庫在數(shù)據(jù)存儲(chǔ)和讀取方面有一定的優(yōu)勢,但是隨著數(shù)據(jù)的增多,大部分節(jié)點(diǎn)無法高效存儲(chǔ)數(shù)據(jù),出現(xiàn)多形式數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)更新以及跨鏈時(shí)延等問題。多形式數(shù)據(jù)存儲(chǔ):區(qū)塊鏈最大的優(yōu)勢之一是對非關(guān)系型數(shù)據(jù)的一次存儲(chǔ)多次讀取,在密集的點(diǎn)對點(diǎn)網(wǎng)絡(luò)(P2P)體系中隨機(jī)部署節(jié)點(diǎn)進(jìn)行數(shù)據(jù)Hash存儲(chǔ)。對于合法用戶而言,他們可以查詢到自己或他人的交易額、內(nèi)部系統(tǒng)信息或黑名單信息,但所有的數(shù)據(jù)都是以字符串的形式呈現(xiàn),若交易數(shù)據(jù)是視頻、音頻或者圖片,隨著網(wǎng)絡(luò)需求的增加,網(wǎng)絡(luò)時(shí)延使數(shù)據(jù)傳輸失幀,分布式賬本無法保證分布式一致特性。數(shù)據(jù)更新:由于區(qū)塊鏈的序列化特性上鏈的每一條數(shù)據(jù)都需要進(jìn)行排序連接,因此區(qū)塊交易極其緩慢。比特幣交易時(shí)長平均10 min一個(gè)區(qū)塊,每秒約3到4筆交易,以太坊出塊時(shí)間約為15 s,每秒約20筆交易。相比之下,Visa支付平臺(tái)每秒可處理6.5萬筆交易,支付寶每秒處理8.9萬筆交易,它們的交易速率是比特幣和以太坊的近千倍。緩慢的交易速率極不利于數(shù)據(jù)快速存取和交互,若縮短出塊時(shí)間則能最大化減少分叉產(chǎn)生帶來的數(shù)據(jù)更新后的不一致??珂湑r(shí)延:區(qū)塊鏈結(jié)合了去中心和匿名等特點(diǎn),在此基礎(chǔ)上的加密數(shù)字貨幣可以在全世界范圍內(nèi)流通。作為一種點(diǎn)對點(diǎn)支付系統(tǒng),對于跨國交易的操作比傳統(tǒng)的支票和匯款更加方便快捷,除去人工的奔波耗時(shí),降低了人為操作帶來的失誤率,同時(shí)提高了不同國家之間匯率的透明度。但隨之而來的是手續(xù)費(fèi)的增加,由于各個(gè)國家之間地域的跨度,造成數(shù)據(jù)傳輸時(shí)延大,在傳輸過程中更容易遭受惡意攻擊,且交易確認(rèn)等待時(shí)間長,因此區(qū)塊鏈交易賬本的分布式存儲(chǔ)還需要考慮數(shù)據(jù)傳輸?shù)陌踩院涂蓴U(kuò)展性。

      4.2 隱私保護(hù)

      隱私保護(hù)指的是通過技術(shù)手段對個(gè)人或企業(yè)的隱私信息進(jìn)行維護(hù)和保護(hù)的過程。以下主要將隱私保護(hù)分為用戶隱私保護(hù)和企業(yè)隱私保護(hù)兩大類別。(1)用戶隱私保護(hù):對用戶來說,隱私保護(hù)就是保護(hù)用戶不愿意被公開的數(shù)據(jù)信息。匿名化使區(qū)塊鏈與現(xiàn)實(shí)世界相隔絕,用戶在使用區(qū)塊鏈時(shí)很難做到使自己的身份、IP地址、聯(lián)系方式、公私鑰以及姓名之間沒有關(guān)聯(lián),攻擊者對大量的用戶交易地址使用流量分析等方式進(jìn)行網(wǎng)絡(luò)攻擊。倘若所使用的賬戶地址沒有高安全等級(jí)防護(hù),私鑰一旦泄漏,區(qū)塊鏈沒有任何更改機(jī)制,交易賬戶只能會(huì)遺棄。(2)企業(yè)隱私保護(hù):區(qū)塊鏈上交易的每一個(gè)流程都是開放且透明的,但對企業(yè)而言,數(shù)據(jù)完全透明并不意味全是優(yōu)勢。例如股票交易所,每一筆交易都要求實(shí)時(shí)的數(shù)據(jù)操作,所有的用戶都能看見其他節(jié)點(diǎn)的交易數(shù)據(jù),易造成不法分子盜用用戶隱私導(dǎo)致財(cái)產(chǎn)損失,使得企業(yè)失去廣大用戶的信任。

      4.3 資源分配

      區(qū)塊鏈具有去中心化和防篡改的特性,因此賬本上的數(shù)據(jù)對于系統(tǒng)來說容易存在事務(wù)排序依賴、數(shù)據(jù)高冗余、不可持續(xù)發(fā)展和算力浪費(fèi)等問題。事務(wù)排序依賴:以太坊中,支付以太幣越多,事務(wù)排序優(yōu)先級(jí)越高,處理速度越快。即當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)提交事務(wù),花費(fèi)以太幣較多的節(jié)點(diǎn)事務(wù)優(yōu)先得到處理,致使花費(fèi)較少的節(jié)點(diǎn)一直排序等待,并且后續(xù)支付較多的節(jié)點(diǎn)無需等待就可加入隊(duì)列優(yōu)先執(zhí)行事務(wù),造成進(jìn)程堵塞,進(jìn)度拖欠,導(dǎo)致資源分配極度不均。數(shù)據(jù)高冗余:區(qū)塊鏈依賴分布式賬本這一優(yōu)勢,對數(shù)據(jù)進(jìn)行分布式存儲(chǔ)。但隨著要記錄的數(shù)據(jù)越來越多,信息呈現(xiàn)爆炸式增長,每個(gè)節(jié)點(diǎn)為保證賬本高度一致,實(shí)時(shí)復(fù)制、同步、更新造成數(shù)據(jù)高度冗余,且每個(gè)節(jié)點(diǎn)存儲(chǔ)容量有限,這可能在未來面臨著如何處置這些數(shù)據(jù)的困境。不可持續(xù)發(fā)展:紙幣之所以流通是因?yàn)樗哂兄貜?fù)使用、可交換及市場調(diào)節(jié)等功能。但是對于虛擬貨幣而言,幣的數(shù)量是有限的,不能隨著市場經(jīng)濟(jì)的變化而調(diào)控,由于幣的固定性,其本身無法作為貨幣流通。其次,每次交易過程中都會(huì)收取交易費(fèi),隨著剩下區(qū)塊的數(shù)量越來越少,對應(yīng)的區(qū)塊獎(jiǎng)勵(lì)也隨之不斷減少,未來交易費(fèi)將成為區(qū)塊產(chǎn)生的驅(qū)動(dòng)力,無論是對經(jīng)濟(jì)發(fā)展還是科技進(jìn)步都是不利的。算力浪費(fèi):工作量證明是一種基于計(jì)算機(jī)算力爭奪記賬權(quán)的共識(shí)機(jī)制,在比特幣中表現(xiàn)為“挖礦”的方式,這是一個(gè)天然的“賞金漏洞”——參與的人越多越民主,數(shù)據(jù)越安全,公眾參與度增高,問題在于減少成本的同時(shí)被攻擊的可能性也隨之增加。這極大地暴露了代幣機(jī)制的弊端,即記賬權(quán)完全由算力決定,挖礦設(shè)備專業(yè)化驅(qū)使人們花重金購買性能更高的ASIC芯片進(jìn)行算力爭奪,導(dǎo)致芯片的算力越高獲得記賬權(quán)的機(jī)率越大,最后爭奪記賬權(quán)和芯片高算力成正比。使用ASIC芯片進(jìn)行大量哈希計(jì)算造成巨大能源消耗,據(jù)統(tǒng)計(jì),區(qū)塊鏈高速發(fā)展時(shí)期,每年用來挖礦的電力相當(dāng)于幾個(gè)核電站的總電力輸出。

      4.4 漏洞攻擊

      黑客利用系統(tǒng)漏洞對其進(jìn)行監(jiān)聽、攔截、重放甚至破壞的行為被稱為漏洞攻擊,因此,由于區(qū)塊鏈系統(tǒng)自身漏洞造成的黑客攻擊防不勝防,本節(jié)將其漏洞攻擊類型分為分叉攻擊、基于密碼學(xué)攻擊、基于共識(shí)機(jī)制攻擊、基于智能合約攻擊以及其他攻擊。

      4.4.1 分叉攻擊

      分叉攻擊在區(qū)塊鏈系統(tǒng)中較為普遍,且危害極大,分叉攻擊又主要分為系統(tǒng)自身產(chǎn)生分叉導(dǎo)致被攻擊和攻擊者主動(dòng)制造分叉進(jìn)行攻擊兩大類。系統(tǒng)自身產(chǎn)生分叉導(dǎo)致的分叉:首先,區(qū)塊鏈在弱共識(shí)的前提下,因系統(tǒng)時(shí)間順序產(chǎn)生區(qū)塊的特性,會(huì)同時(shí)產(chǎn)生多個(gè)區(qū)塊(state fork),因而極易成為攻擊者的攻擊目標(biāo);其次,由于區(qū)塊鏈系統(tǒng)內(nèi)部協(xié)議的更新,例如軟件升級(jí),弱共識(shí)無法要求整個(gè)系統(tǒng)中所有節(jié)點(diǎn)同時(shí)更新,就有可能產(chǎn)生硬分叉或軟分叉[52]。硬分叉中舊節(jié)點(diǎn)不承認(rèn)新節(jié)點(diǎn),只要舊節(jié)點(diǎn)不更新系統(tǒng)分叉就不會(huì)消失。軟分叉則相反,只要一直沿著新節(jié)點(diǎn)增加區(qū)塊即可消除分叉威脅。

      攻擊者主動(dòng)制造分叉進(jìn)行攻擊:其一是女巫攻擊(sybil attack),它是一種基于P2P網(wǎng)絡(luò)的一種攻擊類型,會(huì)由攻擊服務(wù)器生成超過系統(tǒng)51%的傀儡賬戶參與投票選舉造成,它可以擊敗分布式存儲(chǔ)系統(tǒng)的冗余機(jī)制,還會(huì)對傳感器網(wǎng)絡(luò)中的路由機(jī)制構(gòu)成威脅[53]。其二是雙花攻擊(double spending)[54],它利用了比特幣數(shù)字加密貨幣的傳輸特性,使一筆錢“花費(fèi)兩次”,除非接受方在交易發(fā)起時(shí)就立即驗(yàn)證每一筆代筆的來源,否則就將造成巨大損失,在比特幣中使用交易簽名的方式防范雙花攻擊,許多區(qū)塊鏈硬件也會(huì)使用防篡改的模式。其三,以太坊為了防止雙花攻擊,對區(qū)塊使用多數(shù)據(jù)集生成Hash值,但是由于網(wǎng)絡(luò)延遲,會(huì)產(chǎn)生重播攻擊(replay attack)[55],即以太坊系統(tǒng)中重復(fù)使用同一請求,一筆錢“收兩次”,與“雙花攻擊”恰好相反。其四是私自挖礦攻擊[56-57],主要指的是惡意礦池挖出區(qū)塊隱瞞不發(fā),而是繼續(xù)在隱藏鏈上挖礦,當(dāng)惡意礦池挖出的隱藏鏈比誠實(shí)節(jié)點(diǎn)所維護(hù)的合法鏈更長時(shí),惡意礦池發(fā)布分叉鏈,由于誠實(shí)礦工都會(huì)選擇最長鏈為合法鏈,因此分叉攻擊實(shí)施成功。

      4.4.2 基于密碼學(xué)攻擊

      區(qū)塊鏈中對于數(shù)據(jù)的安全保護(hù)基于密碼學(xué)純數(shù)學(xué)計(jì)算方式。所使用的密碼學(xué)算法有MAC函數(shù)、HASH函數(shù)以及RSA公鑰加密體制和ECC橢圓曲線加密體制等[58-60]。這些算法在目前理論上是安全的,且密鑰的產(chǎn)生需要特殊的隨機(jī)元,一個(gè)好的隨機(jī)元生成的密鑰對的安全系數(shù)相比于較差的隨機(jī)元的安全系數(shù)更高,能直接避免和其他賬戶生成重復(fù)的密鑰對。針對密鑰對的破解,最通用的密碼爆破方式為字典攻擊:通過構(gòu)造常用的密碼組合模式的腳本來自動(dòng)執(zhí)行匹配賬戶密碼的步驟,但這樣的腳本所構(gòu)造的密碼組合較為單一,對于復(fù)雜的賬戶密碼無從下手。被動(dòng)攻擊[61]是基于攻擊者對截取到的數(shù)據(jù)PDU進(jìn)行的流量分析,數(shù)據(jù)包累計(jì)回應(yīng),攻擊者可得到數(shù)據(jù)的長度、頻度、特性甚至破解信息內(nèi)容。由于區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)眾多,對于認(rèn)證的參與者無法完全確定其是否誠實(shí),同樣的,側(cè)信道攻擊[62-65]普遍存在于任何區(qū)塊鏈系統(tǒng),服務(wù)器硬件存儲(chǔ)密鑰信息,若私鑰被盜,即可鎖定私鑰對應(yīng)的賬戶,系統(tǒng)中私鑰被盜將無法找回,重新生成同一私鑰在計(jì)算上不能成立,若有報(bào)道稱某加密貨幣被偷則意味著私鑰被盜,由于區(qū)塊鏈數(shù)據(jù)無法更改,一旦罪犯偷了一把私鑰并將相關(guān)資金公開轉(zhuǎn)移到另一個(gè)賬戶,這筆交易通常無法撤銷。目前主流的SHA-256算法的輸入空間2256≈1077,雖是普通計(jì)算機(jī)晝夜不停兩年的計(jì)算量,但若使用量子計(jì)算機(jī),計(jì)算速率將成指數(shù)倍增長,因此,隨著量子計(jì)算機(jī)[64-65]的興起,現(xiàn)有密碼體制將直接面臨被攻破的威脅。

      4.4.3 基于共識(shí)算法攻擊

      基于共識(shí)算法的攻擊有51%算力攻擊、長程攻擊、DDOS攻擊、區(qū)塊截留攻擊以及滲透博弈攻擊。其中51%算力攻擊指的是PoW通過算力比拼以競爭區(qū)塊記賬權(quán),若惡意節(jié)點(diǎn)擁有51%的哈希算力,便可以發(fā)動(dòng)攻擊[66]。長程攻擊是指從創(chuàng)世區(qū)塊就開始創(chuàng)造另一條與主鏈完全不同的鏈,試圖替換原主鏈,其中的交易和用戶也不完全一致,由于節(jié)點(diǎn)的弱主觀性,長程攻擊成了PoS最大的威脅[67]。DDOS攻擊是指攻擊者旨在利用龐大的IP群體對目標(biāo)主機(jī)發(fā)送大量無效請求,導(dǎo)致目標(biāo)主機(jī)接收不到真實(shí)請求,有時(shí)甚至造成系統(tǒng)癱瘓,致使共識(shí)效率極低,如在Hyperledger Fabric中極少數(shù)的背書節(jié)點(diǎn)就容易成為攻擊目標(biāo)[68]。區(qū)塊截留攻擊則指的是惡意礦工通過丟棄所有成功答案,而只向礦池管理員提交部分答案,造成礦池虧損。雖然區(qū)塊截留不會(huì)對區(qū)塊鏈造成很大的傷害,但是會(huì)降低礦池和誠實(shí)節(jié)點(diǎn)的收益,且以極低的代價(jià)讓礦池不再受誠實(shí)節(jié)點(diǎn)的信任。滲透博弈[69]的原理源自博弈樹,即攻擊者選擇對區(qū)塊節(jié)點(diǎn)進(jìn)行滲透,一般出現(xiàn)在礦池間的惡性競爭,于是在受攻擊的節(jié)點(diǎn)上形成博弈狀態(tài),各方都為了自己的利益最大化[66]。

      4.4.4 基于智能合約攻擊

      雖然智能合約是一段自動(dòng)執(zhí)行的程序代碼,但它只是一套固定的規(guī)則邏輯在經(jīng)過編寫和審計(jì)之后得到多方用戶簽署再部署到分布式系統(tǒng)中,實(shí)際開放平臺(tái)中還是存在合約構(gòu)造不合理、代碼不嚴(yán)謹(jǐn)、確認(rèn)時(shí)間長以及事件調(diào)用依賴情況嚴(yán)重等不足,極易隱含漏洞成為被攻擊的對象。

      DAO[51]:區(qū)塊鏈?zhǔn)飞媳娝苤暮诳凸羰录驗(yàn)橄到y(tǒng)代碼漏洞,攻擊者可間接遞歸調(diào)用漏洞函數(shù),旨在系統(tǒng)中強(qiáng)行創(chuàng)建分支,并在每個(gè)分支上都獲取以太幣,the DAO攻擊造成了6 000萬美元的金額損失。

      時(shí)間戳依賴攻擊[71]:在以太坊中設(shè)定節(jié)點(diǎn)之間需保持時(shí)間“大致相同”而并非完全保持一致,前驅(qū)區(qū)塊的哈希值和區(qū)塊數(shù)是已知的其他的合約變量,如導(dǎo)致產(chǎn)生隨機(jī)數(shù)的原因也是已知的。因此,礦工就可以預(yù)先計(jì)算和選擇時(shí)間戳,礦工可以隨機(jī)產(chǎn)生一個(gè)有利于他的結(jié)果,而攻擊者利用這偏差來左右時(shí)間戳的設(shè)置并發(fā)動(dòng)攻擊。

      調(diào)用堆棧深度攻擊:智能合約中規(guī)定,當(dāng)外部用戶調(diào)用合約用戶時(shí),合約堆棧自動(dòng)增加一位,當(dāng)棧滿時(shí)會(huì)有溢出異常。在以太坊中,智能合約規(guī)定棧最大為1 024位,攻擊者在發(fā)動(dòng)攻擊之前,事先生成一個(gè)將滿的堆棧,當(dāng)再次調(diào)用目標(biāo)合約時(shí)堆棧溢出就會(huì)拋出異常,導(dǎo)致系統(tǒng)崩潰輕。

      交易順序依賴攻擊[72]:一個(gè)區(qū)塊中包含的兩個(gè)交易同時(shí)調(diào)用了一個(gè)合約導(dǎo)致用戶不知道他們單獨(dú)調(diào)用時(shí)合同處于哪種狀態(tài),因此用戶打算調(diào)用的合約狀態(tài)與執(zhí)行時(shí)發(fā)生的實(shí)際狀態(tài)存在差異,所以只有負(fù)責(zé)開采的礦工能決定合約的最終狀態(tài)即交易的執(zhí)行順序。惡意用戶可以利用合約的交易排序依賴來獲得更多的利潤,甚至可以竊取用戶的錢。

      代碼漏洞:在運(yùn)算過程中當(dāng)計(jì)算結(jié)果無法放置在整型數(shù)據(jù)類型中時(shí),會(huì)產(chǎn)生整數(shù)溢出(integer overflow)[72]。例如以太坊使用的solidity語言就具有該嚴(yán)重漏洞,會(huì)導(dǎo)致攻擊者獲得未經(jīng)授權(quán)的數(shù)字資產(chǎn),且solidity語言無法支持小數(shù)點(diǎn),這可能使得一個(gè)區(qū)塊鏈項(xiàng)目因數(shù)據(jù)格式不一致或精度不匹配而半途夭折。

      路由更改攻擊,即攻擊者利用BGP動(dòng)態(tài)變化的路由更改自己的網(wǎng)絡(luò)前綴偽裝成其他節(jié)點(diǎn),并對目標(biāo)節(jié)點(diǎn)進(jìn)行定向流量攔截,引導(dǎo)數(shù)據(jù)流向原本錯(cuò)誤的路線。

      4.4.5 其他攻擊

      除了以上四類基于區(qū)塊鏈系統(tǒng)的漏洞攻擊,還存在一些基于網(wǎng)絡(luò)、社工或物理設(shè)備的漏洞攻擊,攻擊者可以利用它們從系統(tǒng)之外對數(shù)據(jù)進(jìn)行竊取或破壞。分布式系統(tǒng)使物理上分隔的用戶得以網(wǎng)絡(luò)交互,而日蝕攻擊可以阻止目標(biāo)用戶與外界進(jìn)行數(shù)據(jù)通信。

      病毒攻擊:現(xiàn)階段區(qū)塊鏈平臺(tái)的廣泛應(yīng)用,沒有統(tǒng)一的標(biāo)準(zhǔn)進(jìn)行規(guī)范化約束,攻擊者想要植入病毒或木馬很容易,這會(huì)嚴(yán)重威脅到用戶的財(cái)務(wù)狀況[73]。

      供應(yīng)鏈攻擊:大多數(shù)的企業(yè)會(huì)把自家的大型業(yè)務(wù)外包給其他的技術(shù)公司或者是多家企業(yè)聯(lián)合業(yè)務(wù),但很多時(shí)候這種潛在的危險(xiǎn)就是合作方,他可能是流氓企業(yè),也可能有流氓雇員,在系統(tǒng)的產(chǎn)生過程中就已經(jīng)存在漏洞。

      中間人攻擊:攻擊者對網(wǎng)絡(luò)中傳輸?shù)男畔⑦M(jìn)行截取、偷聽甚至篡改,但不會(huì)驚動(dòng)通信雙方的攻擊方式。

      重放攻擊:即將上一次傳輸?shù)男畔⑴c當(dāng)前傳輸?shù)男畔⑦M(jìn)行合并再發(fā)送,以達(dá)到欺騙系統(tǒng)和阻礙認(rèn)證的目的。

      社會(huì)工程學(xué)分析[74-75]:對某些賬戶的交易數(shù)據(jù)進(jìn)行流量分析,聯(lián)系他在現(xiàn)實(shí)中的生活軌跡得到用戶的真實(shí)身份。

      惡意軟件攻擊:攻擊者通過向用戶發(fā)送惡意軟件騙取用戶登陸信息,以盜取賬戶信息和節(jié)點(diǎn)私鑰等。

      側(cè)信道攻擊:攻擊者對鏈下支持區(qū)塊鏈運(yùn)行的物理設(shè)備進(jìn)行的攻擊甚至破壞,導(dǎo)致服務(wù)器硬盤損壞數(shù)據(jù)丟失等。雖然攻擊者達(dá)到了破壞區(qū)塊鏈分布式賬本的完整性,但對于攻擊者本身并沒有多大益處。除以上所列出的各類攻擊,還有各種各樣的攻擊類型。

      5 分析與討論

      綜上所述,導(dǎo)致全球區(qū)塊鏈安全事件的原因包括兩個(gè)方面:一方面是其共識(shí)機(jī)制、私鑰管理、智能合約等存在的技術(shù)局限性所面臨的安全問題;另一方面是區(qū)塊鏈去中心、自治化的特點(diǎn)給現(xiàn)有數(shù)據(jù)存儲(chǔ)、隱私保護(hù)、資源分配等技術(shù)手段帶來了新的挑戰(zhàn)。文章從目前區(qū)塊鏈現(xiàn)存問題入手,其一從系統(tǒng)內(nèi)部結(jié)構(gòu)和邏輯意義兩方面總結(jié)了技術(shù)局限所面臨挑戰(zhàn)的可能解決方案,其二提出檢測技術(shù)、身份管理和法律法規(guī)三方面提出合理建議,共同維護(hù)區(qū)塊鏈系統(tǒng)的安全性。

      5.1 基于分叉攻擊與密碼學(xué)攻擊的安全分析總結(jié)

      存在于區(qū)塊鏈系統(tǒng)內(nèi)部結(jié)構(gòu)的兩類攻擊類型是基于分叉機(jī)制攻擊和基于密碼學(xué)攻擊。在區(qū)塊鏈系統(tǒng)中,分叉尤為常見,它易導(dǎo)致最長合法鏈不一致、系統(tǒng)無法同時(shí)更新軟件、偽造節(jié)點(diǎn)投票和發(fā)動(dòng)雙花和重播攻擊,或者私自屯塊覆蓋最長合法鏈等操作。因此為了有效緩解區(qū)塊鏈遭到以上分叉攻擊造成的影響,對應(yīng)的解決方案如下:需要提升共識(shí)效率,增加出塊速率;更新?lián)Q代時(shí)定期查看日志,提醒用戶及時(shí)更新;參與工作量證明機(jī)制,同時(shí)對每個(gè)節(jié)點(diǎn)身份進(jìn)行驗(yàn)證;增加采礦過程的復(fù)雜性,每個(gè)用戶增設(shè)UTXO集合,對于新產(chǎn)生的塊延遲確認(rèn),在6個(gè)區(qū)塊產(chǎn)出(約1 h)之后,被篡改概率指數(shù)下降;使用隨機(jī)數(shù)和時(shí)間戳同時(shí)對數(shù)據(jù)包進(jìn)行實(shí)時(shí)標(biāo)記,對每一筆交易都有簽名;定時(shí)查看CPU占用率高的進(jìn)程,查看內(nèi)部網(wǎng)絡(luò)和主機(jī)的安全防護(hù)設(shè)備告警和日志信息,查找異常?;诿艽a學(xué)的攻擊主要分為四類:較簡單的字典攻擊、由鏈外產(chǎn)生的被動(dòng)攻擊、基于物理邏輯的側(cè)信道攻擊以及復(fù)雜的量子密碼攻擊。字典攻擊使用數(shù)學(xué)公式的排列組合或弱口令即可破解,世紀(jì)中葉非對稱密碼問世之后字典攻擊只能對付對稱密碼。被動(dòng)攻擊主要是通過分析大量數(shù)據(jù)包得到信息來破壞數(shù)據(jù)的保密性和完整性,因此使用HASH函數(shù)計(jì)算得到的固定值再M(fèi)AC函數(shù)取摘要,HASH函數(shù)與MAC函數(shù)相結(jié)合可以得到對消息以及消息發(fā)送者的同時(shí)驗(yàn)證。區(qū)塊鏈系統(tǒng)中密鑰管理的安全性允許節(jié)點(diǎn)自己生成密鑰對,以促進(jìn)網(wǎng)絡(luò)中節(jié)點(diǎn)之間的安全通信,側(cè)信道攻擊主要針對存儲(chǔ)有密鑰的服務(wù)器或緩沖區(qū),現(xiàn)有文獻(xiàn)[76]提出了基于區(qū)塊鏈的邊緣計(jì)算密鑰管理方案,并且提出以公開審計(jì)的方式對密鑰進(jìn)行保護(hù)。量子密碼是目前最復(fù)雜的密碼之一,量子計(jì)算機(jī)是一種利用物質(zhì)和能量的物理特性進(jìn)行計(jì)算的新技術(shù),因此一個(gè)足夠強(qiáng)大的量子計(jì)算機(jī)將使許多種形式從密鑰交換到加密再到數(shù)字認(rèn)證都處于危險(xiǎn)之中。針對數(shù)據(jù)和流量分析以破解交易地址的攻擊,Meiklejohn等[77]提出更完善的“找零地址”,以確保用戶賬戶的安全性。由密鑰管理技術(shù)發(fā)展而來的,為保證系統(tǒng)中私鑰管理的安全性,軟件錢包、硬件錢包、托管錢包和門限錢包技術(shù)相繼出現(xiàn)[78]。文獻(xiàn)[79]提出量子密鑰協(xié)議使遠(yuǎn)程參與者能夠根據(jù)他們的私人輸入公平地建立一個(gè)安全的共享密鑰。同時(shí)隨機(jī)密鑰預(yù)分配機(jī)制[80-81]也開始流行。

      5.2 基于共識(shí)機(jī)制攻擊與智能合約攻擊的安全分析總結(jié)

      區(qū)塊鏈系統(tǒng)基于關(guān)鍵技術(shù)的邏輯意義,且可插拔的兩類攻擊類型是基于共識(shí)機(jī)制攻擊和基于智能合約攻擊,共識(shí)機(jī)制主要以分布式系統(tǒng)本身和所使用網(wǎng)絡(luò)兩方面改進(jìn),智能合約作為可插拔的自動(dòng)執(zhí)行程序,具有極強(qiáng)的可塑性,因此解決方案主要從已有的攻擊類型和對應(yīng)的可能解決方案,如表4所示。

      表4 基于共識(shí)機(jī)制和智能合約攻擊防護(hù)措施分類Table 4 Protection measures of attacks based on consensu mechanism and smart contracts

      5.3 未來研究趨勢

      區(qū)塊鏈問世以來一直面臨著各種各樣的監(jiān)管問題,無論是自我監(jiān)管還是第三方協(xié)同管理都存在弊端,因此經(jīng)研究分析得以下三條建議:

      檢測技術(shù):現(xiàn)存的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法可能會(huì)側(cè)重于檢測基于區(qū)塊鏈交易中的欺詐和發(fā)現(xiàn)入侵者的新型應(yīng)用,通過對人們的交易歷史進(jìn)行分析、監(jiān)控和檢測行為模式,監(jiān)督機(jī)器學(xué)習(xí)方法,如深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),支持向量馬赫數(shù)網(wǎng)絡(luò)網(wǎng)絡(luò)和貝葉斯信念網(wǎng)絡(luò)可能有助于檢測離群值行為。

      法律法規(guī):各機(jī)構(gòu)、立法者和立法機(jī)構(gòu)應(yīng)了解、調(diào)查和審查區(qū)塊鏈技術(shù)的機(jī)制和影響,并合作開發(fā)和實(shí)施法律、政策和法規(guī)管理程序,以管理區(qū)塊鏈技術(shù)的使用,這樣做可能會(huì)催生創(chuàng)新商業(yè)模式的新興點(diǎn)對點(diǎn)經(jīng)濟(jì)的安全性和運(yùn)作。NIST網(wǎng)絡(luò)安全框架明確規(guī)定區(qū)塊鏈網(wǎng)絡(luò)環(huán)境安全,盡管該框架不是專門為區(qū)塊鏈技術(shù)設(shè)計(jì)的,但其標(biāo)準(zhǔn)足夠廣泛,足以涵蓋區(qū)塊鏈技術(shù),并幫助機(jī)構(gòu)開發(fā)識(shí)別和控制影響區(qū)塊鏈技術(shù)的風(fēng)險(xiǎn)的管理系統(tǒng)和流程。

      廣泛應(yīng)用:在此提出一種新的思想,除非得到大多數(shù)社會(huì)技術(shù)的廣泛接受和采用,否則該技術(shù)中固有的任何機(jī)制和保護(hù)都不能發(fā)揮作用。雖然只有一小部分交易發(fā)生并記錄在區(qū)塊鏈中,但攻擊者、惡意分子和罪犯仍然可以通過其他渠道獲得想要的信息。因此,將區(qū)塊鏈廣泛應(yīng)用于各大領(lǐng)域?qū)Τ晒Φ仡A(yù)防各類型的攻擊至關(guān)重要。

      6 總結(jié)與展望

      隨著區(qū)塊鏈技術(shù)快速發(fā)展,區(qū)塊鏈具有數(shù)據(jù)去中心化管理、不可篡改和安全性高等優(yōu)點(diǎn),使區(qū)塊鏈引起了政府、企業(yè)和學(xué)者的廣泛關(guān)注,并在一些領(lǐng)域得到成功應(yīng)用。但是區(qū)塊鏈為去中心化平臺(tái)提供技術(shù)的同時(shí),自身系統(tǒng)漏洞所帶來的安全問題也越演越烈。本文基于以上問題,從區(qū)塊鏈關(guān)鍵技術(shù)和漏洞分類分析入手,通過文獻(xiàn)分析和綜合研究得到以下結(jié)論:

      總結(jié)了區(qū)塊鏈自發(fā)展以來的國內(nèi)外研究現(xiàn)狀以及漏洞演變趨勢,發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)及數(shù)據(jù)庫的安全問題依然嚴(yán)重,通過分析研究文獻(xiàn)對目前區(qū)塊鏈系統(tǒng)存在漏洞的分類得出實(shí)例分析。接著歸納了區(qū)塊鏈的概念,同時(shí)對密碼學(xué)、默克爾樹、對等節(jié)點(diǎn)(P2P)、共識(shí)機(jī)制以及智能合約等區(qū)塊鏈關(guān)鍵技術(shù)進(jìn)行深入分析,總結(jié)了各自的工作原理及其優(yōu)缺點(diǎn)。尤其是對目前眾多平臺(tái)主流的區(qū)塊鏈共識(shí)算法應(yīng)用效果進(jìn)行對比分析,總結(jié)各種關(guān)鍵技術(shù)適宜的應(yīng)用場景,以方便用戶參考借鑒。

      對區(qū)塊鏈的數(shù)據(jù)存儲(chǔ)與交互、隱私保護(hù)、資源分配、漏洞攻擊等四個(gè)方面進(jìn)行分析總結(jié),歸納并指出了區(qū)塊鏈系統(tǒng)在安全方面存在的亟需解決的問題,對區(qū)塊鏈系統(tǒng)的漏洞攻擊進(jìn)行歸納,指出分叉攻擊、基于密碼學(xué)攻擊、基于共識(shí)算法攻擊、基于智能合約攻擊以及從系統(tǒng)之外發(fā)起的攻擊等五類可被利用的漏洞攻擊,并對區(qū)塊鏈系統(tǒng)存在的安全漏洞攻擊進(jìn)行分類,從大量文獻(xiàn)中歸納分析得出各個(gè)攻擊的類別定義以及可能有效的解決方案,為用戶提高區(qū)塊鏈安全性指明方向。以上存在的四個(gè)方面問題對區(qū)塊鏈系統(tǒng)存有極大的安全威脅,務(wù)必加以重視和防范。

      結(jié)合以上問題,本文建議在未來系統(tǒng)設(shè)計(jì)的過程中需更加完善安全體系,從算法到系統(tǒng)整體提升區(qū)塊鏈系統(tǒng)的安全性,其中對于數(shù)據(jù)的存儲(chǔ)效率還需要進(jìn)一步的提升,毫秒級(jí)的交易額數(shù)量直接影響著區(qū)塊鏈系統(tǒng)的性能,因此需要提供更高效的共識(shí)機(jī)制,對隱私數(shù)據(jù)的保護(hù)需要增加訪問控制的功能以防止第三方惡意入侵,以及系統(tǒng)對資源的分配可采用云端服務(wù)器或IPFS技術(shù),因此未來還需對區(qū)塊鏈內(nèi)部系統(tǒng)做進(jìn)一步完善,為區(qū)塊鏈技術(shù)發(fā)展和平臺(tái)開發(fā)提供更加準(zhǔn)確、安全、標(biāo)準(zhǔn)的技術(shù),以防止各類漏洞對區(qū)塊鏈系統(tǒng)的攻擊,進(jìn)而提升區(qū)塊鏈系統(tǒng)的工作效率。

      猜你喜歡
      合約漏洞共識(shí)
      漏洞
      共識(shí) 共進(jìn) 共情 共學(xué):讓“溝通之花”綻放
      論思想共識(shí)凝聚的文化向度
      商量出共識(shí)
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      別讓“PX共識(shí)”在爆炸中瓦解
      合約必守,誰能例外!——對“情勢變更”制度不可寄于過高期望
      东宁县| 河曲县| 噶尔县| 民丰县| 济源市| 垫江县| 江西省| 峨眉山市| 禄丰县| 潼南县| 望奎县| 田林县| 宝坻区| 彩票| 巴马| 阿克苏市| 清徐县| 酉阳| 瓮安县| 冷水江市| 梨树县| 哈尔滨市| 保康县| 丰城市| 阿城市| 综艺| 开阳县| 高邑县| 遵义市| 凤庆县| 嵩明县| 平安县| 龙岩市| 厦门市| 新营市| 阿勒泰市| 军事| 崇阳县| 巧家县| 常山县| 永寿县|