茍俊卿,朱宇坤,王崇宇,屈宏剛 ,陳瑞東
(電子科技大學(xué),四川 成都 611731)
區(qū)塊鏈技術(shù),由于其去中心化、P2P網(wǎng)絡(luò)結(jié)構(gòu)、共識機制等,可以實現(xiàn)節(jié)點的自我管理、驗證以及傳遞等,解決由傳統(tǒng)中心化架構(gòu)導(dǎo)致網(wǎng)絡(luò)抗毀性提升不高的問題,同時還能實現(xiàn)數(shù)據(jù)的可靠傳輸和共享。區(qū)塊鏈的概念由中本聰在2007年提出,并在2009年產(chǎn)生了最早的應(yīng)用——比特幣。最早支撐比特幣體系的技術(shù)主要包括分布式網(wǎng)絡(luò)、賬本、區(qū)塊、對稱和非對稱加密以及工作量證明,這些技術(shù)構(gòu)成了區(qū)塊鏈的最初版本,隨著時間推移,區(qū)塊鏈徹底進(jìn)入了全球視野[1]。在2020年市場區(qū)域穩(wěn)定,相關(guān)區(qū)塊鏈的項目也開始逐漸落地經(jīng)受時間考驗。在近十幾年中,區(qū)塊鏈在比特幣的帶動下飛速發(fā)展,市場開始挖掘區(qū)塊鏈的潛在價值,逐步為項目賦能。由此區(qū)塊鏈在金融網(wǎng)、電子商務(wù)、醫(yī)療網(wǎng)絡(luò)、農(nóng)業(yè)、IOT、教育網(wǎng)以及軍用網(wǎng)等多種場景下進(jìn)行了若干實際應(yīng)用。
區(qū)塊鏈安全性能的分析和檢測是系統(tǒng)性的,不單單只有傳統(tǒng)的安全工作,如云主機防護、通信安全以及手機安全等,還有很多獨有的安全方面環(huán)節(jié),包括智能合約的安全、礦池的風(fēng)控問題以及交易方面的安全堤防。為此,我們通常將區(qū)塊鏈安全劃分成兩大類:一類是區(qū)塊鏈自身的安全問題,其中又分為區(qū)塊鏈的底層安全和區(qū)塊鏈的上層智能合約安全;另一類是區(qū)塊鏈配套設(shè)施的安全問題,包括錢包、交易所和礦池。Libra作為Facebook公司首推的區(qū)塊鏈項目,一經(jīng)發(fā)布就引起業(yè)界高度關(guān)注,旨在通過地理、治理和資產(chǎn)配置的空間去中心化,規(guī)避單點風(fēng)險,但同樣由于設(shè)計機制不嚴(yán)謹(jǐn),加密算法強度不達(dá)標(biāo)等原因,致使Libra區(qū)塊鏈安全性受到威脅[2]。
區(qū)塊鏈作為一種融合了多種技術(shù)機制的新型分布式安全技術(shù),不僅面臨愈發(fā)嚴(yán)峻的傳統(tǒng)機制安全風(fēng)險,同時還面臨因其特有核心機制帶來的新型安全風(fēng)險。一方面,傳統(tǒng)的區(qū)塊鏈機制中依然存在安全風(fēng)險,比如區(qū)塊鏈系統(tǒng)中出現(xiàn)的網(wǎng)絡(luò)威脅,以及代碼實現(xiàn)過程中的漏洞威脅,還有各種情況下出現(xiàn)的安全隱患等問題;另一方面,傳統(tǒng)的區(qū)塊鏈機制正面臨來自分布式、抗篡改等特性改變的影響,使得安全風(fēng)險越來越大,例如P2P組網(wǎng)形式,讓惡意代碼和漏洞的擴散更為廣泛,又如開放式區(qū)塊鏈網(wǎng)絡(luò)(以比特幣為例)的匿名性增加,讓溯源難度大大增加。同時,區(qū)塊鏈的特有性質(zhì)也帶來了新的安全危險。
2015年,攻擊者提出了日蝕攻擊,標(biāo)志著區(qū)塊鏈網(wǎng)絡(luò)協(xié)議開始出現(xiàn)了新的攻擊方式。日蝕攻擊者一般會切斷與目標(biāo)節(jié)點有關(guān)的所有途徑,用來隔離目標(biāo)節(jié)點與誠實節(jié)點之間的網(wǎng)絡(luò)連接。這樣一來目標(biāo)節(jié)點就只能收到攻擊者的信息,攻擊者就可趁機利用來部署惡意的區(qū)塊算力、侵占共識資源,同時目標(biāo)節(jié)點也沒有精力去挖掘新的區(qū)塊。
Libra區(qū)塊鏈的內(nèi)、外部攻擊者會對區(qū)塊鏈共識機制中的設(shè)計環(huán)節(jié)漏洞、關(guān)鍵節(jié)點失效、鏈路斷裂以及可能存在的虛假身份等問題進(jìn)行攻擊。據(jù)CAP標(biāo)準(zhǔn)表示,一個分布式體系只能保證一致性、可用性或者分區(qū)容錯性中的亮點,無法保證全部。同時,區(qū)塊鏈分布式網(wǎng)絡(luò)難以避免因內(nèi)外部非惡意因素或惡意攻擊導(dǎo)致的節(jié)點失效、網(wǎng)絡(luò)斷連乃至網(wǎng)絡(luò)分區(qū)現(xiàn)象。因此PoW、PBFT等共識機制需要面臨的是選擇可用性還是一致性。一方面,當(dāng)節(jié)點或網(wǎng)絡(luò)連接失效時,共識機制可能會無法收斂或者收斂時間較長,導(dǎo)致超出可用范圍或產(chǎn)生記錄分叉不一致等;另一方面,基于算力或者投票等因素的設(shè)計,決定了共識機制具有特定的攻擊容忍性,當(dāng)攻擊者算力或比例達(dá)到一定值,惡意節(jié)點將對共識過程實現(xiàn)可控性[3]。
區(qū)塊鏈的內(nèi)、外部攻擊者一般會利用區(qū)塊鏈自身共識機制設(shè)計的漏洞以及節(jié)點的失效、鏈路斷裂等因素,對區(qū)塊鏈共識機制發(fā)起攻擊。
作為保障區(qū)塊鏈安全的基礎(chǔ)性機制,密碼機制存在的安全風(fēng)險依然是區(qū)塊鏈安全系統(tǒng)中較為重要的一部分。不僅危及整個區(qū)塊鏈的基礎(chǔ)設(shè)施安全,對各種應(yīng)用的安全也造成了一定的威脅。一方面,攻擊者可通過傳統(tǒng)網(wǎng)絡(luò)攻擊或者物理節(jié)點獲取這些手法來盜用賬戶的私鑰(這部分私鑰是由區(qū)塊鏈中的用戶自動生成,一旦丟失無法找回);另一方面,一些加密算法的設(shè)計本身就有安全漏洞或者算法后門等問題,例如常見的ECC、RSA算法,都可以通過RSA-1024滑動窗口機制中泄露的信息來恢復(fù)。再者,隨著量子計算技術(shù)的飛速發(fā)展,密碼機制安全問題也越發(fā)嚴(yán)重,例如常見的非對稱算法中大數(shù)因子的分解問題將在幾秒內(nèi)被破解,這些都將嚴(yán)重威脅密碼機制的安全。
智能合約的安全問題主要來自于智能合約運行過程中環(huán)境漏洞與其本身代碼邏輯漏洞,攻擊者還可以挖掘、利用合約中的漏洞實施不符合約定的操作。區(qū)塊鏈的透明性和不可逆性,使得對智能合約中的漏洞修補必須要達(dá)到全網(wǎng)的共識后才可以完成發(fā)布,區(qū)塊鏈的不易篡改性也決定了關(guān)于智能合約漏洞導(dǎo)致的錯誤操作和記錄修補工作非常困難[4]。
區(qū)塊鏈Libra中使用了大量的密碼算法、安全協(xié)議等設(shè)計來實現(xiàn)對區(qū)塊鏈安全的保障,但密碼算法的實現(xiàn)、安全協(xié)議設(shè)計與實現(xiàn)過程中存在大量的盲區(qū)與設(shè)計空白,導(dǎo)致了眾多的安全問題。Libra區(qū)塊鏈的實現(xiàn)過程除了借鑒傳統(tǒng)的設(shè)計,同時也引入了新的實現(xiàn)思路。
對Libra區(qū)塊鏈采用的密碼算法和協(xié)議來說,需要從算法、協(xié)議設(shè)計以及程序?qū)崿F(xiàn)上分析其安全性。因此,安全性檢測由密碼算法安全性檢測技術(shù)、密碼算法代碼審計技術(shù)以及數(shù)據(jù)加密功能安全性檢測技術(shù)三部分構(gòu)成:① 測試Libra系統(tǒng)應(yīng)用的密碼算法(如非對稱加密算法和哈希算法)的安全性,檢測其是否符合密碼安全標(biāo)準(zhǔn)規(guī)范,并計算密碼破解與簽名偽造幾率;② 審計密碼算法模塊的源代碼,檢測其中是否有漏洞或者錯誤;③ 數(shù)據(jù)加密過程中,需檢測其存儲傳輸?shù)裙ぷ鱗5-6]。
針對Libra共識算法和網(wǎng)絡(luò)安全,本文提出了基于共識算法的區(qū)塊鏈安全研究理論。使用基于模型、定理驗證等多種方法,來實現(xiàn)對共識算法與網(wǎng)絡(luò)安全的安全性分析。針對Libra的網(wǎng)絡(luò)安全性分析,使用了模糊測試方式的網(wǎng)絡(luò)安全性分析方法[7]。
智能合約、數(shù)字錢包等基于區(qū)塊鏈的應(yīng)用程序帶來的安全問題,主要風(fēng)險來自于程序代碼漏洞,攻擊者可以利用這些漏洞攻擊區(qū)塊鏈系統(tǒng)。當(dāng)前,很多區(qū)塊鏈會自己設(shè)計并使用自主研發(fā)的虛擬機環(huán)境(例如以太坊的EVM),當(dāng)出現(xiàn)系統(tǒng)運行環(huán)境有虛擬機自帶的安全漏洞、控制問題等情況時,攻擊者就會用惡意智能合約來打亂秩序。攻擊者也會占用系統(tǒng)的安全網(wǎng)絡(luò)存儲空間、盜取計算資源。因此需要研究Libra區(qū)塊鏈的智能合約語言安全性、智能合約運行環(huán)境安全性、智能合約代碼審計以及智能合約漏洞挖掘等四方面的技術(shù)方法。通過分析智能合約編程的底層語言,實現(xiàn)對編譯原理的復(fù)現(xiàn),分析智能合約語言的安全性;通過研究虛擬執(zhí)行環(huán)境及其相關(guān)方面,實現(xiàn)對智能合約運行環(huán)境安全性分析;通過污點分析、符號執(zhí)行等方式研究智能合約代碼審計能力建設(shè),研究智能合約的代碼安全性;通過對漏洞挖掘技術(shù)的研究,實現(xiàn)智能合約漏洞挖掘與利用技術(shù)的提取。
面向全球支付系統(tǒng)興起的Libra開展代碼審計與脆弱性分析等研究工作,重點瞄準(zhǔn)Libra的數(shù)據(jù)結(jié)構(gòu)、密碼算法、安全協(xié)議、共識機制、智能合約、賬本以及編程語言等方面的安全性分析,進(jìn)而研究與實驗Libra存在的漏洞與利用代碼,實現(xiàn)Libra區(qū)塊鏈的安全性測評與攻擊,同時通過賬本爬取和態(tài)勢分析,研究其他主流區(qū)塊鏈平臺與Libra之間的區(qū)別與聯(lián)系。在已有研究的基礎(chǔ)上,本文以Libra為研究目標(biāo),深入研究其組成與結(jié)構(gòu)、原理與實現(xiàn)。通過研究共識機制與分布式網(wǎng)絡(luò),實現(xiàn)對Libra的網(wǎng)絡(luò)安全方面的研究。
本文主要從Libra區(qū)塊鏈底層源碼、智能合約源碼以及數(shù)字錢包源碼三方面進(jìn)行源碼審計。
3.1.1 Libra區(qū)塊鏈底層源碼安全性審計
區(qū)塊鏈底層源碼是整個區(qū)塊鏈系統(tǒng)的基石,本文首先對區(qū)塊鏈的底層代碼進(jìn)行安全性審計。針對區(qū)塊鏈系統(tǒng)的安全性,在進(jìn)行全局代碼審計之后,再按照區(qū)塊鏈系統(tǒng)的功能點逐個進(jìn)行審計。首先直接掃描源代碼,提取源代碼中的關(guān)鍵信息,并運用靜態(tài)檢測技術(shù)將源代碼轉(zhuǎn)化成中間代碼;然后利用各種技術(shù)對中間代碼進(jìn)行處理,生成對應(yīng)的檢測模型;最后根據(jù)安全規(guī)則進(jìn)行模型分析,查找程序源代碼中隱藏的安全漏洞,在自動審計完成之后,對檢測到的漏洞再進(jìn)行人工復(fù)核。在此之后,再使用污點分析和符號執(zhí)行技術(shù)對區(qū)塊鏈的功能模塊進(jìn)行單獨審計,分別對密碼算法、安全協(xié)議、共識算法以及Libra區(qū)塊鏈的安全性進(jìn)行審計。
3.1.2 智能合約源碼安全性審計
由于Libra智能合約使用的是新設(shè)計的Move語言,所以針對智能合約的代碼,審計時可以借鑒Oyente開源的智能合約代碼審計工具,對智能合約進(jìn)行代碼審計,找出其中的安全性漏洞,為之后的漏洞深入挖掘以及利用提供支持。智能合約的代碼審計主要基于原始代碼的靜態(tài)分析和代碼運行時的動態(tài)分析。
① 靜態(tài)分析:檢查系統(tǒng)源代碼在正確安全控制的關(guān)鍵位置是否安全,以達(dá)到可遵守的安全技術(shù)開發(fā)標(biāo)準(zhǔn)。一般來說,在完成一次完整的源代碼審計后,審計的目標(biāo)都可以避免應(yīng)用程序中出現(xiàn)大面積源代碼漏洞問題。靜態(tài)分析一般會用到數(shù)據(jù)流、控制流、詞法與語法分析,基于抽象語法樹的語義和規(guī)則檢查等分析技術(shù)。
② 動態(tài)分析:分析調(diào)試工具加載程序并運行,程序運行過程中,調(diào)試器可以在任意時刻終止目標(biāo)的指令流程,以便于觀察設(shè)備的狀態(tài)和計算機的檢測結(jié)果。動態(tài)分析可以觀測到惡意代碼的真實功能,是一種識別惡意代碼功能的有效方法,一般會在靜態(tài)分析基礎(chǔ)技術(shù)之后進(jìn)行。
3.1.3 數(shù)字錢包安全性審計
數(shù)字錢包的安全性審計分為兩方面進(jìn)行:軟件源碼層安全審計、數(shù)字錢包業(yè)務(wù)邏輯層面安全性審計。由于數(shù)字錢包大多數(shù)是電腦客戶端、手機App或者是基于Web的在線錢包,所以對于源碼的安全性審計,存在許多自動化工具,而且效果很好。
在Libra區(qū)塊鏈中,加密算法常用的有非對稱加密算法和哈希算法。非對稱加密算法主要用于數(shù)據(jù)安全加密通信和加密存儲,部分用于用戶身份認(rèn)證;哈希算法主要用于生成區(qū)塊頭哈希和交易哈希,是區(qū)塊鏈不可篡改性質(zhì)的保障。
為了檢測Libra系統(tǒng)的密碼算法安全性,需要檢測所有應(yīng)用的密碼算法本身的安全性,降低加密數(shù)據(jù)被破解或者簽名被偽造的概率。一般來說,采用的密碼算法應(yīng)該是當(dāng)前經(jīng)過安全驗證的公認(rèn)的安全密碼算法,并且可以檢測該算法是否支持國密算法。檢測密碼算法代碼實現(xiàn)過程中是否存在漏洞,需要配合密碼算法代碼審計技術(shù),檢查相關(guān)代碼字段的安全性和可靠性。在密碼算法應(yīng)用階段,測試該算法的加密功能與簽名功能是否安全可靠,通過密碼破解技術(shù)檢測信息泄露、被竊取及數(shù)據(jù)偽造的風(fēng)險。
在Libra系統(tǒng)中,P2P網(wǎng)絡(luò)協(xié)議屬于網(wǎng)絡(luò)層,主要功能是保證節(jié)點間的安全可靠通信,采用P2P網(wǎng)絡(luò)機制安全測試技術(shù)檢測其安全性。通常,P2P網(wǎng)絡(luò)可能面對DDoS攻擊、女巫攻擊、日蝕攻擊以及路由攻擊等攻擊手段,一方面,測試P2P網(wǎng)絡(luò)協(xié)議的抵御能力,可以通過攻擊測試驗證來檢驗;另一方面,可以采用協(xié)議安全分析方式,檢測P2P網(wǎng)絡(luò)協(xié)議的安全性[8-9],技術(shù)方案如圖1所示。
圖1 密碼算法與協(xié)議安全性分析Fig.1 Code algorithm and protocol security analysis
密碼算法隨機性檢測的方式只考慮算法的輸入輸出,而不關(guān)注密碼算法的內(nèi)部結(jié)構(gòu)。隨機性檢測對象是密碼算法輸出的序列、分組密碼的密文以及序列密碼的密鑰。對于不同的算法,使用隨機性檢測方法也不完全相同,需要根據(jù)密碼算法的特性選擇,使用的隨機性檢測方法有頻數(shù)檢驗、游程檢驗以及自相關(guān)檢驗等。不過,對于非對稱密碼算法來說,其安全性是基于數(shù)學(xué)難題的,不需要通過測試序列的隨機性來證明其安全性,因此不做隨機性檢測[10]。密碼算法關(guān)鍵組件安全性檢測作為隨機性檢測的補充,從密碼算法的各組件著手,檢測算法局部安全性,例如分組密碼算法的S盒和P盒的安全性、RSA算法的密鑰安全性、安全橢圓曲線的參數(shù)安全性。
本文提出基于BAN邏輯技術(shù)的安全協(xié)議形式化分析技術(shù)。在形式化驗證的早期,BAN邏輯技術(shù)被廣泛應(yīng)用,它能夠清楚地找出協(xié)議中的漏洞,在檢測協(xié)議是否有漏洞的過程中,也可以證明過程設(shè)想的正確性,分析協(xié)議執(zhí)行是否冗余[11]。
結(jié)合定理證明和協(xié)議,提出了串空間。目前,串空間方法已經(jīng)為大量安全協(xié)議進(jìn)行了驗證,用串空間圖的形式來描述協(xié)議的功能及行為,借助圖論的理論及方法分析并驗證安全協(xié)議模型的成立。但由于串空間主要還是被用于驗證協(xié)議的正確性,所以有一定的局限性。因此同時采用了通信順序進(jìn)程(CSP)方法對非線性模型進(jìn)行檢測和安全協(xié)議建模。
本文利用遷移系統(tǒng)建立了基于可用自由交互協(xié)議的抽象模型和攻擊者模型,提出了基于模型檢測的安全協(xié)議驗證技術(shù)。模型檢測工具對其進(jìn)行狀態(tài)搜索,檢測交互過程中是否令協(xié)議進(jìn)入不安全狀態(tài)。對于Libra來說,需要根據(jù)協(xié)議內(nèi)容,建立符合的協(xié)議模型與攻擊者模型,然后利用模型檢測工具檢驗協(xié)議安全性。
對于區(qū)塊鏈共識協(xié)議,共識層的功能是實現(xiàn)節(jié)點間數(shù)據(jù)的一致性和正確性,使得分布式環(huán)境下的節(jié)點能夠?qū)灰走_(dá)成一致,并生成區(qū)塊。Libra區(qū)塊鏈系統(tǒng)采用的共識協(xié)議以PBFT為基礎(chǔ),選取了若干個機構(gòu)節(jié)點作為驗證節(jié)點,普通節(jié)點將交易發(fā)送給驗證節(jié)點,驗證節(jié)點間共享交易池,保證區(qū)塊中交易內(nèi)容與順序一致。同樣,需要檢測共識協(xié)議攻擊抵御能力,測試Libra系統(tǒng)對雙花攻擊、重放攻擊、分叉攻擊、女巫攻擊、賄賂攻擊、預(yù)計算攻擊與自私挖礦等手段的抵御程度和能力[12]。另外,也需要對共識協(xié)議進(jìn)行相關(guān),來確保其是否安全。
針對Libra共識算法的安全問題,首先通過LibraBFT形式化驗證方法檢測算法設(shè)計是否安全,然后通過LibraBFT共識算法關(guān)鍵組件安全檢測技術(shù)檢測各部分組件是否安全可靠,最后使用基于動態(tài)測試用例生成的網(wǎng)絡(luò)協(xié)議測試方法測試網(wǎng)絡(luò)通信協(xié)議的安全性[10]。技術(shù)方案如圖2所示。
圖2 共識算法與網(wǎng)絡(luò)安全性分析Fig.2 Consensus algorithm and network security analysis
LibraBFT共識算法的形式化驗證采用模型檢測的方式進(jìn)行。
第一步:建立模型。分析LibraBFT的狀態(tài)特征,選擇一種合適的歸約方式建立LibraBFT模型,同時給出算法性質(zhì)的形式化描述。
第二步:遍歷狀態(tài)空間。在第一步中建立了一個LibraBFT性質(zhì)與模型構(gòu)成的有限狀態(tài)空間,遍歷所有狀態(tài),逐個判斷其是否安全。
LibraBFT共識算法關(guān)鍵組件安全性檢測技術(shù)的關(guān)注點在共識相關(guān)的功能組件上,例如接收交易、共享交易池和發(fā)起共識等,任何一部分如果存在漏洞都是共識算法的安全隱患。因此,通過代碼審計,以各個組件的源代碼為基礎(chǔ),測試組件的安全性和可靠性。
基于動態(tài)測試用例生成的網(wǎng)絡(luò)協(xié)議測試方法,相對于基于模糊測試的網(wǎng)絡(luò)協(xié)議測試方法,區(qū)別在于測試用例的產(chǎn)生和選擇方面。首先,在進(jìn)行測試之前,需要分析該網(wǎng)絡(luò)協(xié)議,結(jié)合已知報文信息推斷測試用例格式和規(guī)范,然后根據(jù)推斷的關(guān)鍵信息構(gòu)造動態(tài)測試用例,驅(qū)動網(wǎng)絡(luò)協(xié)議進(jìn)入特定狀態(tài),驗證其安全性。
本文主要包含2個重要研究模塊:智能合約語言安全性分析和數(shù)字錢包業(yè)務(wù)安全性分析,技術(shù)方案如圖3所示。
圖3 智能合約與應(yīng)用程序安全性分析Fig.3 Smart contract and application security analysis
智能合約語言的安全性檢測技術(shù)包括運行環(huán)境的安全檢測、智能合約代碼的審計以及漏洞挖掘,通過形式化的驗證方式,對智能合約的文檔及代碼用邏輯語言進(jìn)行建模。這種嚴(yán)密的數(shù)學(xué)邏輯克服了傳統(tǒng)測試的缺點——需要窮舉所有可能輸入,保證了在一定范圍內(nèi)的絕對正確性,使得合約審計工作覆蓋范圍更廣。而對于規(guī)模較小但是功能設(shè)計復(fù)雜的智能合約來說,形式化驗證也是非常有效的方式之一,因此被大量初步應(yīng)用在高鐵、航天、核電等國家重要安全領(lǐng)域[13]。
在進(jìn)行對智能合約的模糊測試時,使用由隨機引擎生成的大量數(shù)據(jù),組成可實施的交易,再把測試結(jié)果反饋到隨機引擎中,從而調(diào)整引擎動態(tài)生成適合的數(shù)據(jù),來探索大規(guī)模智能合約狀態(tài)空間。基于測試的有限狀態(tài)機結(jié)果分析交易的狀態(tài),判斷交易是否存在威脅。
借助符號法來實現(xiàn)檢測智能合約漏洞的一般過程為:① 按照需要將智能合約中不確定的變量進(jìn)行符號化;② 對執(zhí)行過程中的程序指令進(jìn)行逐一解釋,解釋過程中同時執(zhí)行新的狀態(tài),其中包括所約束的路徑。在分支點處進(jìn)行fork操作,遍歷程序中所有可執(zhí)行路徑,以發(fā)現(xiàn)其中是否涉及安全問題;③ 對符號執(zhí)行中搜集到的路徑進(jìn)行約束求解,判斷路徑是否可以達(dá)到,并在特定的程序點上檢測變量的取值是否符合程序的安全規(guī)定,是否存在出現(xiàn)漏洞的可能,并及時避免[13]。
對污點分析的使用首先要識別信息在智能合約中可能產(chǎn)生的位置,并做好標(biāo)注;再根據(jù)實際情況和污點中傳播規(guī)則來進(jìn)行前后向的數(shù)據(jù)依賴分析;對比得到的污點,集合其數(shù)據(jù)依賴和被依賴關(guān)系;最終確認(rèn)污點信息是否會對關(guān)鍵程序點的檢查操作造成影響[14]。
針對區(qū)塊鏈安全防護與監(jiān)管問題,主流區(qū)塊鏈態(tài)勢感知平臺利用態(tài)勢感知技術(shù),實現(xiàn)了對區(qū)塊鏈內(nèi)部異常行為及異常合約執(zhí)行行為的監(jiān)控和預(yù)警。首先,該平臺以區(qū)塊鏈鏈上數(shù)據(jù)為數(shù)據(jù)源,通過安全分析與檢測技術(shù)提取態(tài)勢要素;然后進(jìn)行異常行為特征挖掘,建立異常行為模型或知識庫;最后,根據(jù)異常行為模型建立區(qū)塊鏈安全保護與異常行為預(yù)警機制,找出當(dāng)前可能異常的行為,其技術(shù)方案如圖4所示。
圖4 區(qū)塊鏈安全態(tài)勢感知Fig.4 Blockchain security situation awareness
區(qū)塊鏈上的數(shù)據(jù)以區(qū)塊為基本單元,存儲形式呈鏈狀,區(qū)塊內(nèi)部的交易數(shù)據(jù)則以Merkle樹結(jié)構(gòu)存儲。在整個數(shù)據(jù)存儲過程中,需保證數(shù)據(jù)的正確性及完整性。
面向區(qū)塊鏈鏈上數(shù)據(jù)的態(tài)勢要素提取技術(shù)的目標(biāo)是從爬取的大量交易信息及區(qū)塊信息中,提取關(guān)鍵數(shù)據(jù)字段作為態(tài)勢要素。需要注意的是,對于來源、結(jié)構(gòu)不同的數(shù)據(jù)會采用融合技術(shù),將其轉(zhuǎn)換為標(biāo)準(zhǔn)格式。基于態(tài)勢理解的異常行為特征挖掘技術(shù)是對提取出的安全態(tài)勢要素進(jìn)行態(tài)勢理解,可分為:① 從眾多態(tài)勢要素中篩選出真實有效的數(shù)據(jù);② 對真實的異常行為信息進(jìn)行預(yù)處理,提取其中異常行為特征;③ 使用關(guān)聯(lián)分析算法,對異常行為關(guān)聯(lián)規(guī)則進(jìn)行挖掘,得到異常行為模型。區(qū)塊鏈安全保護與異常行為預(yù)警機制檢測區(qū)塊鏈系統(tǒng)當(dāng)前活動,如節(jié)點交易、區(qū)塊共識、智能合約部署與執(zhí)行等,采用態(tài)勢預(yù)測技術(shù),以異常行為模型為參考,判斷當(dāng)前行為是否異常[15]。
Libra區(qū)塊鏈基礎(chǔ)設(shè)施尤為重要,他們?yōu)閰^(qū)塊鏈應(yīng)用能夠最終實現(xiàn)提供了必要服務(wù),包括開發(fā)、運行、測試以及資源等。區(qū)塊鏈基礎(chǔ)設(shè)施面臨來自傳統(tǒng)網(wǎng)絡(luò)固有的隱患問題,內(nèi)部的區(qū)塊鏈特有機制也具有一定的安全風(fēng)險。為了確保上層負(fù)責(zé)應(yīng)用、區(qū)塊鏈業(yè)務(wù)及數(shù)據(jù)安全等問題,本文對區(qū)塊鏈的基礎(chǔ)設(shè)施進(jìn)行了一系列安全分析和檢測。對于區(qū)塊鏈基礎(chǔ)部分安全性的分析和防護研究,為區(qū)塊鏈基礎(chǔ)設(shè)施的建設(shè)提供了新思路,有助于推動基于Libra區(qū)塊鏈基礎(chǔ)設(shè)施的安全平穩(wěn)發(fā)展。下一步研究工作主要為分析智能合約的傳輸層和數(shù)據(jù)層,綜合考慮一個合約從產(chǎn)生到用戶實際使用中,各個區(qū)塊的變化以及在上述多層次的分析中,研究合約可能出現(xiàn)的漏洞并完善解決方法,進(jìn)一步深入研究Libra漏洞挖掘與利用技術(shù),開發(fā)漏洞利用工具。