邱凌志 顧 弘
國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心江蘇分中心
網(wǎng)絡(luò)安全漏洞收集與披露有利于國(guó)家網(wǎng)絡(luò)安全應(yīng)急體系建設(shè),增強(qiáng)國(guó)家網(wǎng)絡(luò)安全監(jiān)測(cè)和防御能力。漏洞平臺(tái)通過(guò)獎(jiǎng)勵(lì)方式吸引白帽子助力漏洞發(fā)現(xiàn)與披露,能最大程度避免漏洞走向黑產(chǎn)交易,幫助企業(yè)提高網(wǎng)絡(luò)安全意識(shí)。
傳統(tǒng)漏洞共享平臺(tái)由運(yùn)營(yíng)人員錄入白帽子提交的漏洞信息,這種依賴(lài)于管理人員的運(yùn)營(yíng)模式可能出現(xiàn)透明度不夠的問(wèn)題:一方面,在漏洞披露上目前尚未形成安全有效的標(biāo)準(zhǔn),披露流程可溯源性弱;另一方面,在內(nèi)部人員管理上,由于漏洞審核、驗(yàn)證工作由平臺(tái)管理人員負(fù)責(zé),進(jìn)而平臺(tái)管理人員可掌握漏洞細(xì)節(jié),所以加劇了漏洞內(nèi)容泄露的風(fēng)險(xiǎn)。
本文提出一種基于區(qū)塊鏈的漏洞共享平臺(tái),完成了方案的設(shè)計(jì)與實(shí)現(xiàn)。方案結(jié)合區(qū)塊鏈技術(shù)具有的不可篡改特點(diǎn),解決傳統(tǒng)漏洞平臺(tái)存在的可溯源性弱的問(wèn)題,并通過(guò)共享協(xié)作式漏洞處理過(guò)程解決傳統(tǒng)漏洞平臺(tái)存在的中心化管理問(wèn)題。
方案主要在傳統(tǒng)B/S架構(gòu)的漏洞平臺(tái)基礎(chǔ)上結(jié)合區(qū)塊鏈技術(shù)實(shí)現(xiàn)平臺(tái)數(shù)據(jù)共享溯源監(jiān)管。平臺(tái)基本功能模塊有:用戶(hù)登錄、漏洞/補(bǔ)丁發(fā)布、漏洞/補(bǔ)丁評(píng)估、貢獻(xiàn)值計(jì)算、技術(shù)水平評(píng)估、貢獻(xiàn)值生態(tài)平衡等。
為保障用戶(hù)登錄的安全,平臺(tái)采用基于橢圓曲線(xiàn)的雙密碼登錄認(rèn)證模式。新用戶(hù)在進(jìn)行注冊(cè)時(shí),需要填寫(xiě)用戶(hù)賬號(hào)口令及個(gè)人信息,平臺(tái)用戶(hù)名不可更改。平臺(tái)會(huì)根據(jù)用戶(hù)名和個(gè)人密碼結(jié)合,運(yùn)用橢圓曲線(xiàn)算法生成平臺(tái)地址作為用戶(hù)的第二密碼,并且該密碼需要用戶(hù)妥善保存,不可丟失。用戶(hù)能根據(jù)平臺(tái)地址找回自己的個(gè)人密碼,但無(wú)法根據(jù)個(gè)人密碼找回平臺(tái)地址。用戶(hù)登錄時(shí)需要用戶(hù)名、個(gè)人密碼和平臺(tái)地址進(jìn)行雙密碼登錄認(rèn)證。
漏洞發(fā)布者發(fā)布漏洞后,平臺(tái)將漏洞文件存儲(chǔ)到IPFS,并將IPFS返回的漏洞Hash公開(kāi)共享到區(qū)塊鏈上。補(bǔ)丁發(fā)布者發(fā)布補(bǔ)丁后,會(huì)將補(bǔ)丁首先發(fā)送給漏洞發(fā)布者,只有經(jīng)過(guò)漏洞發(fā)布者的審核驗(yàn)證后,才會(huì)公布于平臺(tái)。所有行為都將記錄在區(qū)塊鏈中,實(shí)現(xiàn)可信操作。
平臺(tái)用戶(hù)能夠在漏洞或補(bǔ)丁評(píng)估界面對(duì)相應(yīng)的漏洞或補(bǔ)丁進(jìn)行多維度打分。平臺(tái)會(huì)根據(jù)用戶(hù)的貢獻(xiàn)值情況計(jì)算貢獻(xiàn)值權(quán)重,平臺(tái)以此權(quán)重來(lái)判別評(píng)估用戶(hù)的漏洞評(píng)估水平。
平臺(tái)用戶(hù)貢獻(xiàn)值的獲得主要有發(fā)布漏洞、發(fā)布補(bǔ)丁、評(píng)估漏洞、評(píng)估補(bǔ)丁和匿名舉報(bào)五個(gè)途徑。發(fā)布漏洞和發(fā)布補(bǔ)丁獲得的獎(jiǎng)勵(lì)貢獻(xiàn)值受到漏洞或補(bǔ)丁的綜合評(píng)估分影響,因此是不定的。評(píng)估漏洞和評(píng)估補(bǔ)丁獲得的獎(jiǎng)勵(lì)貢獻(xiàn)值是固定的。匿名舉報(bào)需要經(jīng)過(guò)平臺(tái)審核驗(yàn)證,驗(yàn)證成功根據(jù)事件嚴(yán)重程度分發(fā)貢獻(xiàn)值獎(jiǎng)勵(lì)。
用戶(hù)技術(shù)水平雷達(dá)圖的生成依賴(lài)于用戶(hù)的個(gè)人相關(guān)信息,如論文、專(zhuān)利、漏洞挖掘情況、漏洞修復(fù)經(jīng)歷等。從這些信息中篩選出與信息安全相關(guān)的信息,通過(guò)AI智能測(cè)評(píng)模塊生成技術(shù)雷達(dá)圖,并將技術(shù)報(bào)告記錄到區(qū)塊鏈上,可供后期認(rèn)證和檢驗(yàn)。
由于平臺(tái)用戶(hù)的技術(shù)水平存在差異,為了避免一些高技術(shù)水平用戶(hù)的貢獻(xiàn)值異常高,導(dǎo)致支配平臺(tái)漏洞和補(bǔ)丁評(píng)估的結(jié)果,因此引入精準(zhǔn)扶貧機(jī)制,保持平臺(tái)貢獻(xiàn)值動(dòng)態(tài)平衡。
區(qū)塊鏈網(wǎng)絡(luò)的主鏈框架如圖1所示,具體分為以下4層結(jié)構(gòu):
圖1 區(qū)塊鏈網(wǎng)絡(luò)的主鏈框架
(1)通信層:該層分為網(wǎng)頁(yè)應(yīng)用通信形式與終端通信形式,作用是區(qū)塊鏈和用戶(hù)通信;
(2)智能合約層:方案的智能合約使用Javascript或者Golang語(yǔ)言編寫(xiě),該層作用是操作智能合約,智能合約用于提供API接口給用戶(hù),以便于區(qū)塊鏈底層和用戶(hù)的通信;
(3)共識(shí)機(jī)制層:該層是核心部分,用戶(hù)節(jié)點(diǎn)使用P2P網(wǎng)絡(luò)相連的通訊模式,主鏈賬本共享,并使用處理漏洞的貢獻(xiàn)值計(jì)算,以及基于貢獻(xiàn)值的隨機(jī)簽共識(shí)機(jī)制模塊相互作用,為主鏈上新的區(qū)塊挑選礦工,同時(shí)發(fā)放挖礦獎(jiǎng)賞;
(4)存儲(chǔ)層:該層作為主鏈區(qū)塊的底部,存儲(chǔ)區(qū)塊中的交易、摘要信息,區(qū)塊將通過(guò)levelDB文件格式保存,區(qū)塊鏈網(wǎng)絡(luò)當(dāng)中的每個(gè)用戶(hù)均擁有一份數(shù)據(jù)拷貝。
如果有用戶(hù)申請(qǐng)進(jìn)入?yún)^(qū)塊鏈網(wǎng)絡(luò),基于電子合約的認(rèn)證模塊首先需要認(rèn)證用戶(hù),認(rèn)證完成后,便可作為網(wǎng)絡(luò)中的成員,并得到電子合約。用戶(hù)登錄模塊具體流程如下,它基于區(qū)塊鏈電子合約簽訂的認(rèn)證框架:
(1)申請(qǐng)進(jìn)入節(jié)點(diǎn),上傳用戶(hù)信息摘要,請(qǐng)求合約簽訂認(rèn)證模塊進(jìn)行認(rèn)證;
(2)認(rèn)證模塊接信息,加密封裝后以廣播形式通知網(wǎng)絡(luò)中的所有節(jié)點(diǎn);
(3)網(wǎng)絡(luò)中的所有節(jié)點(diǎn)審核申請(qǐng)信息,同時(shí)反饋意見(jiàn);
(4)認(rèn)證模塊使用安全多方計(jì)算方法,梳理所有反饋意見(jiàn)后,輸出一個(gè)最終結(jié)果。所有節(jié)點(diǎn)包括新節(jié)點(diǎn)可查看最終結(jié)果,但無(wú)法查看私人的反饋意見(jiàn);
(5)如果結(jié)果通過(guò),認(rèn)證模塊收取新節(jié)點(diǎn)以及原有節(jié)點(diǎn)的電子章,簽訂區(qū)塊鏈電子合約,該電子合約具備法律保障;
(6)認(rèn)證模塊生成新合約后,計(jì)算電子合約MD5、SHA1以及SHA256的哈希值,存儲(chǔ)在網(wǎng)絡(luò)的區(qū)塊中,并生成合約副本,分發(fā)給網(wǎng)絡(luò)中節(jié)點(diǎn),實(shí)現(xiàn)不可篡改存儲(chǔ);
(7)如果需要從區(qū)塊鏈中讀取對(duì)應(yīng)電子合約,合約獲得模塊可以從網(wǎng)絡(luò)中節(jié)點(diǎn)按序讀取對(duì)應(yīng)合約,同時(shí)計(jì)算它們MD5、SHA1以及SHA256的哈希值,并同區(qū)塊中的哈希值相比較,如果一致便得到該電子合約的拷貝。
當(dāng)用戶(hù)想要上傳漏洞信息時(shí),漏洞發(fā)布模塊則將上傳的漏洞信息廣播到區(qū)塊鏈上,這樣一來(lái)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)均能讀取發(fā)布的漏洞信息,任一節(jié)點(diǎn)均可對(duì)漏洞進(jìn)行處理,同時(shí)由補(bǔ)丁發(fā)布模塊提交補(bǔ)丁信息,發(fā)布模塊的流程為:
(1)如果區(qū)塊鏈中的節(jié)點(diǎn)想要提交漏洞源代碼文件,會(huì)先計(jì)算文件的SHA256哈希值,同時(shí)存儲(chǔ)于智能合約之中;
(2)將源代碼文件與智能合約文件封裝,輸出文件組合包,并提交給包處理模塊;
(3)包處理模塊會(huì)解析包,把包還原成源代碼文件和智能合約文件,依次將智能合約文件發(fā)布至主鏈倉(cāng)庫(kù),源代碼文件發(fā)布至側(cè)鏈源代碼倉(cāng)庫(kù),跨鏈同步主鏈與側(cè)鏈數(shù)據(jù)信息;
(4)發(fā)布成功后,網(wǎng)絡(luò)將廣播主鏈的智能合約地址給每個(gè)節(jié)點(diǎn),用戶(hù)可自行判斷處理。
補(bǔ)丁提交模塊的流程如下:
(1)用戶(hù)請(qǐng)求上傳補(bǔ)丁文件,區(qū)塊鏈接到上傳請(qǐng)求并接收補(bǔ)丁文件,計(jì)算文件的SHA256哈希值,作為文件的key,key對(duì)應(yīng)的值即是補(bǔ)丁文件,此時(shí)調(diào)用智能合約,在側(cè)鏈補(bǔ)丁倉(cāng)庫(kù)中存儲(chǔ)鍵值對(duì);
(2)補(bǔ)丁上傳成功后,區(qū)塊鏈便將該補(bǔ)丁的SHA256哈希值發(fā)送給對(duì)應(yīng)的漏洞發(fā)布用戶(hù),通知用戶(hù)已經(jīng)提交新的補(bǔ)丁,此時(shí)用戶(hù)需要驗(yàn)證補(bǔ)丁并反饋確認(rèn)。
評(píng)估模塊會(huì)對(duì)上傳的補(bǔ)丁進(jìn)行驗(yàn)證與反饋:
(1)漏洞發(fā)布用戶(hù)接收到新補(bǔ)丁上傳的信息后,依據(jù)補(bǔ)丁獲取標(biāo)記,到側(cè)鏈補(bǔ)丁倉(cāng)庫(kù)下載對(duì)應(yīng)補(bǔ)??;
(2)漏洞發(fā)布用戶(hù)驗(yàn)證新補(bǔ)丁,如果成功,發(fā)布者為提交者反饋本次漏洞處理的評(píng)分,反饋模塊封裝驗(yàn)證成功信號(hào)和評(píng)分,發(fā)送給提交者。與此同時(shí),貢獻(xiàn)值計(jì)算模塊也會(huì)收到評(píng)分信息;如果失敗,反饋模塊則告知補(bǔ)丁提交者。
區(qū)塊鏈的主鏈以及側(cè)鏈的區(qū)塊生成,通過(guò)隨機(jī)簽共識(shí)機(jī)制模塊計(jì)算漏洞貢獻(xiàn)值進(jìn)行礦工選擇,同時(shí)由該礦工生成區(qū)塊;主鏈模塊是整個(gè)網(wǎng)絡(luò)運(yùn)行的核心部分,用于專(zhuān)門(mén)記錄鏈中各個(gè)節(jié)點(diǎn)的交互和所有行為操作,具體運(yùn)作方式為:
(1)該模塊根據(jù)漏洞威脅程度、漏洞處理效果兩方面計(jì)算區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點(diǎn)用戶(hù)的貢獻(xiàn)值;
(2)漏洞威脅程度的判斷標(biāo)準(zhǔn)與漏洞處理效果動(dòng)態(tài)相關(guān),漏洞處理效果評(píng)判標(biāo)準(zhǔn)并不是統(tǒng)一的,故而漏洞威脅程度動(dòng)態(tài)決定漏洞處理效果的判斷標(biāo)準(zhǔn);
(3)漏洞威脅程度由復(fù)雜度、攻擊影響以及創(chuàng)新程度決定;漏洞處理效果由發(fā)布者打分、處理時(shí)間以及補(bǔ)丁大小決定;
(4)通過(guò)對(duì)漏洞威脅程度、漏洞處理效果確定一個(gè)契合的權(quán)重比例,計(jì)算最終得分,作為用戶(hù)提交補(bǔ)丁的貢獻(xiàn)值。
方案中區(qū)塊鏈類(lèi)型為聯(lián)盟鏈,現(xiàn)在主流的聯(lián)盟鏈平臺(tái)盡管都具有它們各自的認(rèn)證方法,大多數(shù)是根據(jù)數(shù)字簽名和CA證書(shū)結(jié)合的方式對(duì)加入節(jié)點(diǎn)進(jìn)行驗(yàn)證,而僅僅依賴(lài)于數(shù)字簽名和CA證書(shū)無(wú)法對(duì)聯(lián)盟鏈中的用戶(hù)節(jié)點(diǎn)進(jìn)行監(jiān)管,例如用戶(hù)節(jié)點(diǎn)在聯(lián)盟鏈中進(jìn)行違法行為。為了對(duì)已加入聯(lián)盟鏈的用戶(hù)節(jié)點(diǎn)進(jìn)行監(jiān)管和違法行為的防范,在聯(lián)盟鏈用戶(hù)節(jié)點(diǎn)認(rèn)證過(guò)程中加入某些法律協(xié)議是必要的。當(dāng)然,這里的法律協(xié)議位于國(guó)家頒布的法律框架之下,如參考《電子簽名法》以及符合國(guó)家相關(guān)法律規(guī)定的保密協(xié)議等等。
認(rèn)證模塊采用了一種基于電子合約的聯(lián)盟鏈認(rèn)證方式,如果新節(jié)點(diǎn)申請(qǐng)入聯(lián)盟鏈,該用戶(hù)必須提供它自己的摘要信息,并通知給當(dāng)前聯(lián)盟鏈中的現(xiàn)有節(jié)點(diǎn),各節(jié)點(diǎn)需要審核新節(jié)點(diǎn)的摘要信息,且提出意見(jiàn),接著平臺(tái)會(huì)將審核意見(jiàn)梳理,導(dǎo)出最終的結(jié)果。如果最終審核結(jié)果成功,平臺(tái)便會(huì)輸出新節(jié)點(diǎn)的聯(lián)盟鏈電子合約,而且該電子合約必須聯(lián)盟鏈中每個(gè)節(jié)點(diǎn)包括新加入節(jié)點(diǎn)的具備法律意義的唯一標(biāo)識(shí),平臺(tái)會(huì)生成電子合約拷貝,讓每個(gè)節(jié)點(diǎn)都保存一份該拷貝,這時(shí)便完成認(rèn)證過(guò)程。
該方法特點(diǎn)在于:(1)通過(guò)電子合同的方式確保了聯(lián)盟鏈節(jié)點(diǎn)的法律效益;(2)以多副本形式讓每個(gè)聯(lián)盟鏈節(jié)點(diǎn)保存電子合同,避免合同丟失;(3)身份認(rèn)證過(guò)程由聯(lián)盟鏈所有節(jié)點(diǎn)審核,更具有安全性。
在貢獻(xiàn)值計(jì)算模塊中,方案采用了一種基于貢獻(xiàn)值的隨機(jī)簽共識(shí)機(jī)制算法。共識(shí)機(jī)制是區(qū)塊鏈關(guān)鍵部分,常見(jiàn)共識(shí)機(jī)制有PBFT實(shí)用拜占庭容錯(cuò)、DPoS授權(quán)股權(quán)證明、PoS股權(quán)證明、PoW工作量證明等。上述共識(shí)機(jī)制具備各自特點(diǎn),但是事實(shí)上很難與實(shí)際應(yīng)用相結(jié)合。
基于貢獻(xiàn)值的隨機(jī)簽共識(shí)機(jī)制算法目標(biāo)為通過(guò)貢獻(xiàn)值與共識(shí)機(jī)制關(guān)聯(lián),所有場(chǎng)景下的貢獻(xiàn)指標(biāo)均可被當(dāng)作貢獻(xiàn)值。因?yàn)楣沧R(shí)機(jī)制用以挑選產(chǎn)生區(qū)塊的礦工,故而貢獻(xiàn)值和任一節(jié)點(diǎn)相關(guān),任一節(jié)點(diǎn)均擁有貢獻(xiàn)值。算法取決于節(jié)點(diǎn)的貢獻(xiàn)值,首先對(duì)貢獻(xiàn)值標(biāo)準(zhǔn)化,輸出合適的貢獻(xiàn)值占比公式,用于生成唯一標(biāo)記的簽,然后按照節(jié)點(diǎn)的貢獻(xiàn)值占比,隨機(jī)將這些簽發(fā)送給所有節(jié)點(diǎn),貢獻(xiàn)值越高,則得到的簽數(shù)量越多。最后,隨機(jī)在產(chǎn)生的簽中選取一個(gè),如果某個(gè)節(jié)點(diǎn)的簽和該簽一致,則確定為礦工。在下一次選擇礦工的時(shí)候,需要由下一時(shí)間點(diǎn)的貢獻(xiàn)值再次產(chǎn)生簽,用以確定礦工。算法流程如圖2所示。
圖2 基于貢獻(xiàn)值的隨機(jī)簽共識(shí)機(jī)制算法流程圖
本文提出一種基于區(qū)塊鏈技術(shù)的漏洞共享平臺(tái)設(shè)計(jì)方案,并完成了系統(tǒng)原型的實(shí)現(xiàn)。系統(tǒng)包含用戶(hù)登錄、漏洞/補(bǔ)丁發(fā)布、漏洞/補(bǔ)丁評(píng)估、貢獻(xiàn)值計(jì)算、技術(shù)水平評(píng)估、貢獻(xiàn)值生態(tài)平衡等模塊。文章重點(diǎn)介紹了系統(tǒng)實(shí)現(xiàn)過(guò)程中,采用的基于電子合同的聯(lián)盟鏈身份認(rèn)證方法以及基于貢獻(xiàn)值的隨機(jī)簽共識(shí)機(jī)制算法。方案的設(shè)計(jì)通過(guò)共享協(xié)作式漏洞處理過(guò)程,解決了傳統(tǒng)漏洞平臺(tái)存在的中心化管理問(wèn)題。此外,平臺(tái)利用區(qū)塊鏈技術(shù)具有的不可篡改特征,解決了傳統(tǒng)漏洞平臺(tái)存在的可溯源性弱的問(wèn)題。