廖思捷,楊春霞,鄧朝勇,唐 晉,安紅章,郭益汝
(中國電子科技網(wǎng)絡(luò)信息安全有限公司,四川 成都 610041)
區(qū)塊鏈作為一種全新的信息存儲、傳播和管理機制,通過讓用戶共同參與數(shù)據(jù)的計算和存儲,并互相驗證數(shù)據(jù)的真實性,以“去中心”和“去信任”的方式實現(xiàn)數(shù)據(jù)和價值的可靠轉(zhuǎn)移。這些信息存儲在不可篡改的賬本上,只能由獲得許可的網(wǎng)絡(luò)成員訪問,為他們提供即時、共享和完全透明的信息[1]。2020 年,區(qū)塊鏈技術(shù)被納入國家新基建范圍,引領(lǐng)區(qū)塊鏈行業(yè)逐漸進入實戰(zhàn)階段,區(qū)塊鏈從最初應(yīng)用于加密數(shù)字貨幣,到如今在政務(wù)、醫(yī)療、金融等多領(lǐng)域的廣泛應(yīng)用,已成為炙手可熱的新興互聯(lián)網(wǎng)技術(shù)之一。隨著區(qū)塊鏈技術(shù)的廣泛應(yīng)用,安全問題也日益突出,其共識機制、私鑰管理、智能合約等存在的技術(shù)局限性和面臨的安全問題逐漸浮出水面,引發(fā)對區(qū)塊鏈平臺及技術(shù)應(yīng)用的合規(guī)性方面的思考。
為了保障區(qū)塊鏈行業(yè)生態(tài)的健康發(fā)展,對來自第三方或是惡意節(jié)點的攻擊進行技術(shù)風險防范,對區(qū)塊鏈平臺的安全檢測勢在必行。各國政府、行業(yè)和標準化組織紛紛聚力區(qū)塊鏈基礎(chǔ)設(shè)施能力及安全建設(shè),發(fā)布各項區(qū)塊鏈平臺安全檢測方案及標準。在國際領(lǐng)域,ITU-T Q17/SG13已經(jīng)啟動區(qū)塊鏈服務(wù)技術(shù)標準的研制;ITU-T Q8/SG17 同步推動區(qū)塊鏈即服務(wù)(Blockchain as a Service,BaaS)相關(guān)安全標準研制,覆蓋BaaS安全威脅分析和安全保障等領(lǐng)域;Q14/SG17 則聚焦分布式賬本技術(shù)安全性展開標準研制[2];Lal 等人[3]也在區(qū)塊鏈測試技術(shù)方面做了探索和研究,Gao[4]、Wu 等人[5]提出了基于區(qū)塊鏈的去中心化測試框架。在國內(nèi)行業(yè)領(lǐng)域,中國信息通信研究院發(fā)布的《區(qū)塊鏈安全白皮書——技術(shù)應(yīng)用篇》中闡明了區(qū)塊鏈技術(shù)典型應(yīng)用架構(gòu)及安全風險,對區(qū)塊鏈技術(shù)安全應(yīng)用及監(jiān)管提出了建議[6]。清華大學(xué)技術(shù)轉(zhuǎn)移研究院提出了基于區(qū)塊鏈的物聯(lián)網(wǎng)安全檢測方法及系統(tǒng),該系統(tǒng)通過建立一種自動化的激勵機制,吸引物聯(lián)網(wǎng)安全檢測設(shè)備參與到物聯(lián)網(wǎng)系統(tǒng)的安全檢測中來,解決了物聯(lián)網(wǎng)中漏洞檢測不完整的問題[7]。近期,國內(nèi)也有多人在區(qū)塊鏈平臺檢測方面進行探索,分別提出了區(qū)塊鏈異常交易檢測系統(tǒng)方案設(shè)計與分析[8]、基于自動化圖特征的區(qū)塊鏈異常檢測研究與系統(tǒng)設(shè)計[9]和自動化測試方法在區(qū)塊鏈服務(wù)平臺的實現(xiàn)及應(yīng)用[10]。
當前,區(qū)塊鏈安全檢測主要面臨以下問題:一是區(qū)塊鏈系統(tǒng)組件眾多,評測標準缺失,評測方式多樣;二是以手動檢測為主,檢測效率低下,人為因素對檢測結(jié)果影響較大,測試報告不規(guī)范;三是區(qū)塊鏈平臺底層架構(gòu)差異性大,對外提供的接口多種多樣,統(tǒng)一評測方式比較困難。本文針對以上問題,采用通用性層次化分析法,提取區(qū)塊鏈系統(tǒng)模塊共性,從組網(wǎng)通信安全、數(shù)據(jù)存儲安全、隱私保護能力、密碼及私鑰安全、共識機制安全、智能合約安全、權(quán)限控制、節(jié)點防護8 個維度出發(fā),設(shè)計標準化檢測準則,并采用組件化模塊式設(shè)計,統(tǒng)一性接口封裝的方式,研制區(qū)塊鏈多維度安全檢測服務(wù)平臺,有效填補了區(qū)塊鏈安全檢測的空白,現(xiàn)已在多地開展示范應(yīng)用,為建立安全、可信的區(qū)塊鏈生態(tài)奠定基礎(chǔ)。
異構(gòu)區(qū)塊鏈的多維度安全檢測方案包含對區(qū)塊鏈系統(tǒng)的組網(wǎng)通信安全、數(shù)據(jù)存儲安全、隱私保護能力、密碼及私鑰安全、共識機制安全、智能合約安全、權(quán)限控制、節(jié)點防護8 個維度的檢測,具體設(shè)計如下,并附有典型場景的驗證流程圖。
方案設(shè)計:
(1)驗證新節(jié)點加入網(wǎng)絡(luò)需要滿足準入機制。
(2)驗證新用戶或賬戶授權(quán)訪問網(wǎng)絡(luò)需要滿足準入機制。
(3)驗證區(qū)塊鏈系統(tǒng)的報文滿足密文傳輸要求。
驗證流程:
(1)通過HTTP 接口將新節(jié)點加入網(wǎng)絡(luò),符合準入規(guī)范的新節(jié)點加入網(wǎng)絡(luò)成功,不符合準入規(guī)范的新節(jié)點加入網(wǎng)絡(luò)失敗,符合以上預(yù)期認為檢測通過。節(jié)點入網(wǎng)準入管理檢測如圖1所示。
圖1 節(jié)點入網(wǎng)準入管理檢測
(2)通過HTTP 接口對新用戶或賬號授權(quán)訪問網(wǎng)絡(luò),符合準入規(guī)范的新用戶或賬號分別演示其權(quán)限內(nèi)的功能和權(quán)限外的功能,不符合準入規(guī)范的新用戶或賬號不能訪問網(wǎng)絡(luò),符合以上預(yù)期認為檢測通過。
(3)通過抓包工具對區(qū)塊鏈系統(tǒng)的通信報文進行抓取,并對抓包數(shù)據(jù)進行報文分析,根據(jù)分析結(jié)果判斷消息是否加密傳輸。
方案設(shè)計:
(1)驗證系統(tǒng)具備防止賬本數(shù)據(jù)被人為篡改的能力。
(2)驗證系統(tǒng)具備防止狀態(tài)數(shù)據(jù)被人為篡改的能力。
(3)驗證系統(tǒng)具備數(shù)據(jù)防泄漏功能,且具有不能被非法獲取的能力。
(4)驗證系統(tǒng)具備丟失數(shù)據(jù)的恢復(fù)能力,保證系統(tǒng)數(shù)據(jù)的完整性。
驗證流程:
(1)通過工具修改某個區(qū)塊鏈節(jié)點的賬本數(shù)據(jù),如歷史交易、全局數(shù)據(jù)等,然后用戶通過HTTP 接口發(fā)起交易,查看交易結(jié)果和各個節(jié)點的賬本數(shù)據(jù)。如果交易成功,且結(jié)果信息正確,則各個節(jié)點的賬本數(shù)據(jù)同步正確。賬本數(shù)據(jù)防篡改如圖2 所示。
圖2 賬本數(shù)據(jù)防篡改
(2)通過工具修改某個區(qū)塊鏈節(jié)點的狀態(tài)數(shù)據(jù),如賬戶余額、合約狀態(tài)數(shù)據(jù)等,然后用戶通過HTTP 接口發(fā)起交易,查看交易結(jié)果和各個節(jié)點的狀態(tài)數(shù)據(jù)。如果交易成功,且結(jié)果信息正確,則各個節(jié)點的狀態(tài)數(shù)據(jù)同步正確,被篡改數(shù)據(jù)節(jié)點的狀態(tài)數(shù)據(jù)恢復(fù)正常。
(3)通過已授權(quán)用戶和非授權(quán)用戶獲取指定數(shù)據(jù),區(qū)塊鏈平臺通過驗證賬戶接入密鑰對,確定賬戶是否具有權(quán)限獲取私有數(shù)據(jù),已授權(quán)用戶獲取成功,非授權(quán)用戶獲取失敗。
(4)通過攻擊模擬對區(qū)塊鏈節(jié)點上的區(qū)塊數(shù)據(jù)進行損壞或者造成丟失,比如刪除某一節(jié)點上的賬本數(shù)據(jù),用戶通過HTTP 接口發(fā)起交易,查看交易結(jié)果和各個節(jié)點的區(qū)塊數(shù)據(jù)。交易成功且各個節(jié)點的區(qū)塊數(shù)據(jù)一致,說明系統(tǒng)具備數(shù)據(jù)恢復(fù)能力。
方案設(shè)計:
(1)驗證交易的完整流程具有隱私保護的能力。
(2)驗證系統(tǒng)具有數(shù)據(jù)加密存儲的能力,以及鏈上隱私數(shù)據(jù)授權(quán)訪問的能力。
(3)驗證系統(tǒng)具有對隱私數(shù)據(jù)進行數(shù)據(jù)隔離的能力,驗證系統(tǒng)具備對隱私數(shù)據(jù)的隔離方案。
驗證流程:
(1)通過抓包工具對區(qū)塊鏈系統(tǒng)中交易方的數(shù)據(jù)、交易內(nèi)容數(shù)據(jù)、合約數(shù)據(jù)進行抓取,并對抓包數(shù)據(jù)進行報文分析,判斷傳輸內(nèi)容是否包含交易方、交易內(nèi)容、交易金額、合約內(nèi)容等隱私信息,是否對隱私信息做了相應(yīng)保護。
(2)通過HTTP 接口訪問鏈上隱私數(shù)據(jù)。授權(quán)用戶可以查詢到此部分隱私數(shù)據(jù),并以明文的形式顯示出來。未授權(quán)用戶不能查詢到此部分隱私數(shù)據(jù),或查詢到的數(shù)據(jù)以密文顯示。
(3)通道或子鏈以內(nèi)的用戶通過HTTP 接口對該通道或子鏈內(nèi)的數(shù)據(jù)進行查詢,并返回查詢結(jié)果。通道或子鏈以外的用戶不能查詢該通道或子鏈內(nèi)的數(shù)據(jù)。
方案設(shè)計:
(1)驗證系統(tǒng)是否支持國密加密算法,加密算法是否符合國密加密要求,對算法的正確性、合規(guī)性進行評測。
(2)驗證系統(tǒng)具備基于軟件的私鑰管理的能力。
驗證流程:
(1)利用區(qū)塊鏈密碼檢測工具對區(qū)塊鏈系統(tǒng)的密碼算法進行檢測,通過對區(qū)塊信息的提取,以及對區(qū)塊信息中的證書進行解析,提取系統(tǒng)中密碼算法的相關(guān)信息;判斷是否使用國密算法,獲取加密后的區(qū)塊數(shù)據(jù)內(nèi)容,調(diào)用相應(yīng)加密算法進行本地驗證,判斷是否符合國密算法應(yīng)用標準。
(2)注冊用戶通過HTTP 接口進行密鑰管理。用戶使用申請成功的私鑰發(fā)起交易,交易簽名驗簽成功,交易正常執(zhí)行。
方案設(shè)計:
(1)驗證產(chǎn)品在故障數(shù)少于理論值的情況下達成共識的能力。
(2)驗證產(chǎn)品在故障數(shù)多于理論值的情況下不能達成共識。
(3)驗證產(chǎn)品處理“雙花攻擊”的能力。
驗證流程:
(1)在區(qū)塊鏈系統(tǒng)中,構(gòu)造節(jié)點故障,確保故障數(shù)少于理論值。節(jié)點故障后,通過HTTP接口進行合約調(diào)用,發(fā)起一次合法轉(zhuǎn)賬請求,再發(fā)起一次非法轉(zhuǎn)賬請求,查看二者調(diào)用結(jié)果,請求是否達成共識。合法轉(zhuǎn)賬請求共識成功,非法轉(zhuǎn)賬請求共識失敗。
(2)在區(qū)塊鏈系統(tǒng)中,構(gòu)造節(jié)點故障,確保故障數(shù)多于理論值。節(jié)點故障后,通過HTTP接口進行合約調(diào)用,發(fā)起一次合法轉(zhuǎn)賬請求,再發(fā)起一次非法轉(zhuǎn)賬請求,查看二者調(diào)用結(jié)果,請求是否達成共識。合法轉(zhuǎn)賬請求無法共識,非法轉(zhuǎn)賬請求無法共識,交易均失敗。
(3)在區(qū)塊鏈系統(tǒng)中,通過HTTP 接口基于同一賬戶同時發(fā)起兩次轉(zhuǎn)賬請求,且兩次金額總和大于賬戶余額,再通過同一賬戶連續(xù)發(fā)起兩次相同交易,兩次金額總和小于賬戶余額,查看交易請求結(jié)果,均為其中一次記賬成功,另一次作為“雙花”交易記賬失敗。“雙花”攻擊防范如圖3 所示。
圖3 “雙花”攻擊防范
方案設(shè)計:
驗證合約訪問的安全性。
驗證流程:
使用具有合約訪問權(quán)限的用戶,通過HTTP接口對合約進行操作,查看操作結(jié)果;使用沒有合約訪問權(quán)限的用戶通過HTTP 接口對合約進行操作,查看操作結(jié)果。結(jié)果顯示:具有合約訪問權(quán)限的用戶進行合約訪問,合約正常訪問,記鏈查鏈成功;沒有合約訪問權(quán)限的用戶進行合約訪問,不可訪問合約,記鏈查鏈失敗,顯示權(quán)限不足。
方案設(shè)計:
(1)驗證區(qū)塊鏈系統(tǒng)具有數(shù)據(jù)訪問的權(quán)限控制的能力。
(2)驗證區(qū)塊鏈系統(tǒng)具有接口訪問的權(quán)限控制的能力。
(3)驗證系統(tǒng)具有子鏈通道操作的權(quán)限控制的能力。
驗證流程:
(1)已授權(quán)用戶通過HTTP 接口訪問節(jié)點上的其他用戶的非公開數(shù)據(jù),查看操作結(jié)果;未授權(quán)用戶通過HTTP 接口訪問節(jié)點上的其他用戶的非公開數(shù)據(jù),查看操作結(jié)果。已授權(quán)用戶可以訪問授權(quán)數(shù)據(jù),未授權(quán)用戶不可訪問未授權(quán)數(shù)據(jù)。
(2)已授權(quán)用戶通過HTTP 接口訪問特定接口,查看操作結(jié)果;未授權(quán)用戶通過HTTP 接口訪問特定接口,查看操作結(jié)果。已授權(quán)用戶可以訪問特定接口,未授權(quán)用戶不可訪問特定接口。
(3)已授權(quán)用戶通過HTTP 接口新建子鏈通道,刪除子鏈通道,修改子鏈通道,查看操作結(jié)果;未授權(quán)用戶通過HTTP 接口新建子鏈通道,刪除子鏈通道,修改子鏈通道,驗證子鏈通道的操作,查看操作結(jié)果。結(jié)果顯示:已授權(quán)用戶操作成功,未授權(quán)用戶操作失敗。
方案設(shè)計:
(1)驗證系統(tǒng)具有節(jié)點程序防護的能力。
(2)驗證系統(tǒng)具有容災(zāi)防護的能力。
驗證流程:
(1)在區(qū)塊鏈系統(tǒng)中部署非法代碼失敗,或篡改指定路徑下的代碼,代碼不能被篡改且不影響當前節(jié)點運行。
(2)構(gòu)建系統(tǒng)節(jié)點故障,比如停用一個節(jié)點,進行業(yè)務(wù)操作,之后重啟或修復(fù)故障節(jié)點,業(yè)務(wù)數(shù)據(jù)正常同步,查看故障節(jié)點是否具備恢復(fù)數(shù)據(jù)、恢復(fù)交易和恢復(fù)共識出塊的能力。
異構(gòu)區(qū)塊鏈的多維度安全檢測系統(tǒng)由用戶界面模塊、安全檢測模塊和結(jié)果數(shù)據(jù)管理模塊3 大模塊組成,如圖4 所示。
用戶界面模塊基于H5 和FLASK 技術(shù)開發(fā),實現(xiàn)區(qū)塊鏈安全測試平臺快速構(gòu)建,提供用戶登錄/登出、檢測項選擇、檢測參數(shù)填寫以及檢測執(zhí)行等功能,實現(xiàn)測試工具與用戶的友好交互。
安全檢測模塊為該系統(tǒng)的核心模塊,通過數(shù)據(jù)抓取、權(quán)限校驗、數(shù)據(jù)加解密、數(shù)據(jù)校驗等技術(shù)實現(xiàn)對區(qū)塊鏈系統(tǒng)的多維度安全檢測,其中需要與被測系統(tǒng)交互的步驟均使用標準化HTTP 接口進行數(shù)據(jù)傳輸。系統(tǒng)部署時可以通過對后臺控制模塊的配置,達到靈活增加或者減少測試子模塊在界面呈現(xiàn)的效果。
結(jié)果數(shù)據(jù)管理模塊通過與數(shù)據(jù)庫的信息交互實現(xiàn)對檢測結(jié)果的存儲、分析、管理,支持測試結(jié)果的匯總和展示,實時呈現(xiàn)測試過程數(shù)據(jù),并且支持檢測結(jié)果的在線查看和下載。
從業(yè)務(wù)流程角度來看,區(qū)塊鏈多維度安全檢測系統(tǒng)可以分為用戶管理系統(tǒng)和檢測系統(tǒng),業(yè)務(wù)流程如圖5 所示,具體步驟如下:
圖5 區(qū)塊鏈多維度安全檢測系統(tǒng)業(yè)務(wù)流程
(1)用戶登錄管理系統(tǒng),勾選測試項,填寫相應(yīng)參數(shù),發(fā)起執(zhí)行檢測;
(2)用戶管理系統(tǒng)收到執(zhí)行檢測信號后,推送檢測信息至檢測系統(tǒng);
(3)檢測系統(tǒng)收到來自用戶管理系統(tǒng)的檢測信息后,解析檢測信息,生成即將執(zhí)行的檢測內(nèi)容,檢測內(nèi)容包含各檢測項和相應(yīng)參數(shù)內(nèi)容;
(4)檢測系統(tǒng)根據(jù)檢測內(nèi)容對被測系統(tǒng)執(zhí)行相應(yīng)檢測;
(5)檢測結(jié)束后,被測系統(tǒng)返回檢測結(jié)果至檢測系統(tǒng);
(6)檢測系統(tǒng)根據(jù)檢測結(jié)果生成檢測報告;
(7)檢測系統(tǒng)推送檢測結(jié)果至用戶管理系統(tǒng),檢測結(jié)果包含檢測報告、檢測過程、入?yún)⒊鰠⒌刃畔ⅲ?/p>
(8)用戶管理系統(tǒng)接收到來自檢測系統(tǒng)的檢測報告,實現(xiàn)對檢測報告的管理;
(9)用戶管理系統(tǒng)將檢測報告展示給用戶,供用戶在線查看或下載。
異構(gòu)區(qū)塊鏈的多維度安全檢測系統(tǒng)測試環(huán)境拓撲圖如圖6 所示,檢測系統(tǒng)部署在一臺服務(wù)器上,被測系統(tǒng)部署在n臺服務(wù)器上,分別部署共識排序節(jié)點和共識決策節(jié)點,協(xié)同構(gòu)成整個區(qū)塊鏈平臺系統(tǒng)。
圖6 區(qū)塊鏈安全檢測系統(tǒng)測試環(huán)境拓撲結(jié)構(gòu)
通過區(qū)塊鏈多維度安全檢測系統(tǒng)對區(qū)塊鏈服務(wù)平臺進行組網(wǎng)通信安全檢測、共識機制安全檢測、數(shù)據(jù)存儲安全檢測、智能合約安全檢測、隱私保護能力檢測、權(quán)限控制檢測、密碼及私鑰安全檢測、節(jié)點防護檢測,檢測結(jié)果如圖7所示。
圖7 區(qū)塊鏈多維度安全檢測服務(wù)系統(tǒng)測試結(jié)果
異構(gòu)區(qū)塊鏈的多維度安全檢測方案及系統(tǒng)具備以下4 點優(yōu)勢。
為了靈活適配各種差異化區(qū)塊鏈系統(tǒng)的檢測需求,區(qū)塊鏈多維度安全檢測系統(tǒng)采用統(tǒng)一接口封裝、同義化入?yún)⑻幚?、輸出逐一校驗的方法,解決了多樣化區(qū)塊鏈平臺測試難以標準化的問題。為了實現(xiàn)可信區(qū)塊鏈計劃定制系統(tǒng)安全測試項的自動化,平臺內(nèi)置了HTTP 接口處理模塊、抓包模塊、文件修改模塊等各種檢測工具,可以根據(jù)用戶配置快速集成使用。
區(qū)塊鏈多維度安全檢測系統(tǒng)采用標準化參數(shù)處理和日志輸出模塊,集成行業(yè)主流測試框架,可根據(jù)用戶需求增加、刪除測試項,快速集成各類測試工具,實現(xiàn)了檢測系統(tǒng)的靈活適配和強擴展性。
區(qū)塊鏈多維度安全檢測系統(tǒng)采用容器化部署,部署運行方式簡潔,對部署系統(tǒng)的配置要求不高,科學(xué)的架構(gòu)設(shè)計便于后期維護。
區(qū)塊鏈多維度安全檢測系統(tǒng)具備可視化檢測界面、測試報告查詢界面和可讀性強的步驟及結(jié)果顯示,支持在線查詢測試報告和詳細錯誤信息輸出,方便操作人員對被測系統(tǒng)進行調(diào)測。
異構(gòu)區(qū)塊鏈多維度安全檢測系統(tǒng)已經(jīng)在政務(wù)系統(tǒng)及相關(guān)行業(yè)落地應(yīng)用,測評項設(shè)計基本滿足行業(yè)的安全檢測需求,系統(tǒng)當前可以適配Fabric 和BCOS 兩種區(qū)塊鏈平臺,檢測結(jié)果可以輔助相關(guān)部門進行有效監(jiān)管,為區(qū)塊鏈行業(yè)的安全性和合規(guī)性檢測提供技術(shù)支撐。后續(xù)將加強對區(qū)塊鏈核心模塊測評關(guān)鍵技術(shù)的研究,以及系統(tǒng)對多樣性區(qū)塊鏈平臺的適配性,助力區(qū)塊鏈生態(tài)的健康有序發(fā)展。