邱凌志 顧 弘
國家計算機網絡應急技術處理協調中心江蘇分中心
網絡安全漏洞收集與披露有利于國家網絡安全應急體系建設,增強國家網絡安全監測和防御能力。漏洞平臺通過獎勵方式吸引白帽子助力漏洞發現與披露,能最大程度避免漏洞走向黑產交易,幫助企業提高網絡安全意識。
傳統漏洞共享平臺由運營人員錄入白帽子提交的漏洞信息,這種依賴于管理人員的運營模式可能出現透明度不夠的問題:一方面,在漏洞披露上目前尚未形成安全有效的標準,披露流程可溯源性弱;另一方面,在內部人員管理上,由于漏洞審核、驗證工作由平臺管理人員負責,進而平臺管理人員可掌握漏洞細節,所以加劇了漏洞內容泄露的風險。
本文提出一種基于區塊鏈的漏洞共享平臺,完成了方案的設計與實現。方案結合區塊鏈技術具有的不可篡改特點,解決傳統漏洞平臺存在的可溯源性弱的問題,并通過共享協作式漏洞處理過程解決傳統漏洞平臺存在的中心化管理問題。
方案主要在傳統B/S架構的漏洞平臺基礎上結合區塊鏈技術實現平臺數據共享溯源監管。平臺基本功能模塊有:用戶登錄、漏洞/補丁發布、漏洞/補丁評估、貢獻值計算、技術水平評估、貢獻值生態平衡等。
為保障用戶登錄的安全,平臺采用基于橢圓曲線的雙密碼登錄認證模式。新用戶在進行注冊時,需要填寫用戶賬號口令及個人信息,平臺用戶名不可更改。平臺會根據用戶名和個人密碼結合,運用橢圓曲線算法生成平臺地址作為用戶的第二密碼,并且該密碼需要用戶妥善保存,不可丟失。用戶能根據平臺地址找回自己的個人密碼,但無法根據個人密碼找回平臺地址。用戶登錄時需要用戶名、個人密碼和平臺地址進行雙密碼登錄認證。
漏洞發布者發布漏洞后,平臺將漏洞文件存儲到IPFS,并將IPFS返回的漏洞Hash公開共享到區塊鏈上。補丁發布者發布補丁后,會將補丁首先發送給漏洞發布者,只有經過漏洞發布者的審核驗證后,才會公布于平臺。所有行為都將記錄在區塊鏈中,實現可信操作。
平臺用戶能夠在漏洞或補丁評估界面對相應的漏洞或補丁進行多維度打分。平臺會根據用戶的貢獻值情況計算貢獻值權重,平臺以此權重來判別評估用戶的漏洞評估水平。
平臺用戶貢獻值的獲得主要有發布漏洞、發布補丁、評估漏洞、評估補丁和匿名舉報五個途徑。發布漏洞和發布補丁獲得的獎勵貢獻值受到漏洞或補丁的綜合評估分影響,因此是不定的。評估漏洞和評估補丁獲得的獎勵貢獻值是固定的。匿名舉報需要經過平臺審核驗證,驗證成功根據事件嚴重程度分發貢獻值獎勵。
用戶技術水平雷達圖的生成依賴于用戶的個人相關信息,如論文、專利、漏洞挖掘情況、漏洞修復經歷等。從這些信息中篩選出與信息安全相關的信息,通過AI智能測評模塊生成技術雷達圖,并將技術報告記錄到區塊鏈上,可供后期認證和檢驗。
由于平臺用戶的技術水平存在差異,為了避免一些高技術水平用戶的貢獻值異常高,導致支配平臺漏洞和補丁評估的結果,因此引入精準扶貧機制,保持平臺貢獻值動態平衡。
區塊鏈網絡的主鏈框架如圖1所示,具體分為以下4層結構:

圖1 區塊鏈網絡的主鏈框架
(1)通信層:該層分為網頁應用通信形式與終端通信形式,作用是區塊鏈和用戶通信;
(2)智能合約層:方案的智能合約使用Javascript或者Golang語言編寫,該層作用是操作智能合約,智能合約用于提供API接口給用戶,以便于區塊鏈底層和用戶的通信;
(3)共識機制層:該層是核心部分,用戶節點使用P2P網絡相連的通訊模式,主鏈賬本共享,并使用處理漏洞的貢獻值計算,以及基于貢獻值的隨機簽共識機制模塊相互作用,為主鏈上新的區塊挑選礦工,同時發放挖礦獎賞;
(4)存儲層:該層作為主鏈區塊的底部,存儲區塊中的交易、摘要信息,區塊將通過levelDB文件格式保存,區塊鏈網絡當中的每個用戶均擁有一份數據拷貝。
如果有用戶申請進入區塊鏈網絡,基于電子合約的認證模塊首先需要認證用戶,認證完成后,便可作為網絡中的成員,并得到電子合約。用戶登錄模塊具體流程如下,它基于區塊鏈電子合約簽訂的認證框架:
(1)申請進入節點,上傳用戶信息摘要,請求合約簽訂認證模塊進行認證;
(2)認證模塊接信息,加密封裝后以廣播形式通知網絡中的所有節點;
(3)網絡中的所有節點審核申請信息,同時反饋意見;
(4)認證模塊使用安全多方計算方法,梳理所有反饋意見后,輸出一個最終結果。所有節點包括新節點可查看最終結果,但無法查看私人的反饋意見;
(5)如果結果通過,認證模塊收取新節點以及原有節點的電子章,簽訂區塊鏈電子合約,該電子合約具備法律保障;
(6)認證模塊生成新合約后,計算電子合約MD5、SHA1以及SHA256的哈希值,存儲在網絡的區塊中,并生成合約副本,分發給網絡中節點,實現不可篡改存儲;
(7)如果需要從區塊鏈中讀取對應電子合約,合約獲得模塊可以從網絡中節點按序讀取對應合約,同時計算它們MD5、SHA1以及SHA256的哈希值,并同區塊中的哈希值相比較,如果一致便得到該電子合約的拷貝。
當用戶想要上傳漏洞信息時,漏洞發布模塊則將上傳的漏洞信息廣播到區塊鏈上,這樣一來網絡中的每個節點均能讀取發布的漏洞信息,任一節點均可對漏洞進行處理,同時由補丁發布模塊提交補丁信息,發布模塊的流程為:
(1)如果區塊鏈中的節點想要提交漏洞源代碼文件,會先計算文件的SHA256哈希值,同時存儲于智能合約之中;
(2)將源代碼文件與智能合約文件封裝,輸出文件組合包,并提交給包處理模塊;
(3)包處理模塊會解析包,把包還原成源代碼文件和智能合約文件,依次將智能合約文件發布至主鏈倉庫,源代碼文件發布至側鏈源代碼倉庫,跨鏈同步主鏈與側鏈數據信息;
(4)發布成功后,網絡將廣播主鏈的智能合約地址給每個節點,用戶可自行判斷處理。
補丁提交模塊的流程如下:
(1)用戶請求上傳補丁文件,區塊鏈接到上傳請求并接收補丁文件,計算文件的SHA256哈希值,作為文件的key,key對應的值即是補丁文件,此時調用智能合約,在側鏈補丁倉庫中存儲鍵值對;
(2)補丁上傳成功后,區塊鏈便將該補丁的SHA256哈希值發送給對應的漏洞發布用戶,通知用戶已經提交新的補丁,此時用戶需要驗證補丁并反饋確認。
評估模塊會對上傳的補丁進行驗證與反饋:
(1)漏洞發布用戶接收到新補丁上傳的信息后,依據補丁獲取標記,到側鏈補丁倉庫下載對應補丁;
(2)漏洞發布用戶驗證新補丁,如果成功,發布者為提交者反饋本次漏洞處理的評分,反饋模塊封裝驗證成功信號和評分,發送給提交者。與此同時,貢獻值計算模塊也會收到評分信息;如果失敗,反饋模塊則告知補丁提交者。
區塊鏈的主鏈以及側鏈的區塊生成,通過隨機簽共識機制模塊計算漏洞貢獻值進行礦工選擇,同時由該礦工生成區塊;主鏈模塊是整個網絡運行的核心部分,用于專門記錄鏈中各個節點的交互和所有行為操作,具體運作方式為:
(1)該模塊根據漏洞威脅程度、漏洞處理效果兩方面計算區塊鏈網絡中各節點用戶的貢獻值;
(2)漏洞威脅程度的判斷標準與漏洞處理效果動態相關,漏洞處理效果評判標準并不是統一的,故而漏洞威脅程度動態決定漏洞處理效果的判斷標準;
(3)漏洞威脅程度由復雜度、攻擊影響以及創新程度決定;漏洞處理效果由發布者打分、處理時間以及補丁大小決定;
(4)通過對漏洞威脅程度、漏洞處理效果確定一個契合的權重比例,計算最終得分,作為用戶提交補丁的貢獻值。
方案中區塊鏈類型為聯盟鏈,現在主流的聯盟鏈平臺盡管都具有它們各自的認證方法,大多數是根據數字簽名和CA證書結合的方式對加入節點進行驗證,而僅僅依賴于數字簽名和CA證書無法對聯盟鏈中的用戶節點進行監管,例如用戶節點在聯盟鏈中進行違法行為。為了對已加入聯盟鏈的用戶節點進行監管和違法行為的防范,在聯盟鏈用戶節點認證過程中加入某些法律協議是必要的。當然,這里的法律協議位于國家頒布的法律框架之下,如參考《電子簽名法》以及符合國家相關法律規定的保密協議等等。
認證模塊采用了一種基于電子合約的聯盟鏈認證方式,如果新節點申請入聯盟鏈,該用戶必須提供它自己的摘要信息,并通知給當前聯盟鏈中的現有節點,各節點需要審核新節點的摘要信息,且提出意見,接著平臺會將審核意見梳理,導出最終的結果。如果最終審核結果成功,平臺便會輸出新節點的聯盟鏈電子合約,而且該電子合約必須聯盟鏈中每個節點包括新加入節點的具備法律意義的唯一標識,平臺會生成電子合約拷貝,讓每個節點都保存一份該拷貝,這時便完成認證過程。
該方法特點在于:(1)通過電子合同的方式確保了聯盟鏈節點的法律效益;(2)以多副本形式讓每個聯盟鏈節點保存電子合同,避免合同丟失;(3)身份認證過程由聯盟鏈所有節點審核,更具有安全性。
在貢獻值計算模塊中,方案采用了一種基于貢獻值的隨機簽共識機制算法。共識機制是區塊鏈關鍵部分,常見共識機制有PBFT實用拜占庭容錯、DPoS授權股權證明、PoS股權證明、PoW工作量證明等。上述共識機制具備各自特點,但是事實上很難與實際應用相結合。
基于貢獻值的隨機簽共識機制算法目標為通過貢獻值與共識機制關聯,所有場景下的貢獻指標均可被當作貢獻值。因為共識機制用以挑選產生區塊的礦工,故而貢獻值和任一節點相關,任一節點均擁有貢獻值。算法取決于節點的貢獻值,首先對貢獻值標準化,輸出合適的貢獻值占比公式,用于生成唯一標記的簽,然后按照節點的貢獻值占比,隨機將這些簽發送給所有節點,貢獻值越高,則得到的簽數量越多。最后,隨機在產生的簽中選取一個,如果某個節點的簽和該簽一致,則確定為礦工。在下一次選擇礦工的時候,需要由下一時間點的貢獻值再次產生簽,用以確定礦工。算法流程如圖2所示。

圖2 基于貢獻值的隨機簽共識機制算法流程圖
本文提出一種基于區塊鏈技術的漏洞共享平臺設計方案,并完成了系統原型的實現。系統包含用戶登錄、漏洞/補丁發布、漏洞/補丁評估、貢獻值計算、技術水平評估、貢獻值生態平衡等模塊。文章重點介紹了系統實現過程中,采用的基于電子合同的聯盟鏈身份認證方法以及基于貢獻值的隨機簽共識機制算法。方案的設計通過共享協作式漏洞處理過程,解決了傳統漏洞平臺存在的中心化管理問題。此外,平臺利用區塊鏈技術具有的不可篡改特征,解決了傳統漏洞平臺存在的可溯源性弱的問題。