花向輝
(山西省運城市運城學院,山西 運城 044000)
本文基于代理簽名算法提出了一種新的威脅情報共享模式,基于區塊鏈技術,利用solidity進行威脅情報共享模式的智能合約開發,基于以太坊truffle框架進行系統開發,確保威脅情報共享的去中心化、安全性,以及實現情報提供者、情報機構、用戶間的共享,讓威脅情報實現有效地傳遞。
威脅情報提供者向各情報機構提供情報信息,各機構可繼續向用戶提供威脅情報信息。威脅情報信息的傳遞可逐漸往下,直到威脅情報需求者獲得情報。每一次威脅情報的交易都記錄在區塊鏈上[1]。
本系統所涉及的用戶主要包括威脅情報提供者、情報機構、用戶。對于提高三方之間威脅情報的傳遞與共享的可信任程度,本文基于代理簽名(Proxy Signature)算法設計了一種新的威脅情報多級共享模式。
代理簽名是指在不將自己私鑰暴露的情況下,由第三方完成自己與另一方之間的簽名,一般具有如下特點:一是可區分性,代理簽名與授權者的簽名是可以進行區分的;二是不可偽造性,代理過程只能在授權者和代理人之間進行;三是可驗證性,代理者可以驗證授權簽名者授權了這一份代理簽名及其真偽性,授權者也可以對代理簽名者的身份進行驗證;四是不可抵賴性,代理簽名者無法對已簽署的代理簽名進行抵賴。
代理簽名一般可分為完全授權、部分授權和許可證授權[2]。根據本文的用戶類型與情報的傳遞流程,本文使用部分授權簽名算法設計多級情報共享模式,過程如下。
設一個素數x,2511<x<2512,y為Zx*的生成元。授權者A的私鑰為s,0<s<x-1,生成公鑰:

式中,私鑰s需保密,(x,y)公開;代理簽名者為B;接收者為C。
A授權B過程如下:
(1)A生成參數:k,0<k<x-1。

(2)A向B發送(σ,K),以進行部分授權。
(3)B判斷yσmodx與pKKmodx是否相等,以證明自己是否得到了合法授權。
根據Format定理可以驗證

(4)驗證成功,B便可對消息m進行代理簽名:(Sign(σ,m),K)
C要驗證代理簽名,首先計算公鑰參數p'=pKkmodx,然后使用認證算法進行簽名合法性檢查以判斷簽名真偽。
威脅情報類別繁多,為了實現威脅情報共享時的數據規范,提高各機構對獲得的威脅情報的利用效率,對于威脅情報的類別[3],本文是根據DavidJ.Bianco所提出的關于威脅情報的金字塔模型進行劃分。
由于Hash函數的雪崩效應,文件的內容發生任何一點細微的變化,通過相同Hash算法得到的Hash值都截然不同,因此Hash值文件的可跟蹤率較低,其作為威脅情報帶來的防御效果也最低,所以本文將Hash值威脅情報分為一級情報。
IP地址是威脅情報的常見指標,抵御許多常見攻擊可以通過控制IP地址的訪問實現。但是需要注意的是,IP地址的數量是非常龐大的,并且許多攻擊者只需要修改IP地址就可以繞過訪問控制,所以本文將IP地址威脅情報分為二級情報。
有些攻擊者為了進行隱藏通信,會通過域名連接外部的服務器。一般需要進行注冊、購買、綁定等才能對域名進行操作,其消耗成本高于IP地址,所以,對于威脅情報而言,域名的控制可以達到較好的防御效果[4]。但是,許多團隊性質的網絡攻擊會在攻擊前準備大量的域名,因此,域名作為威脅情報的一類其作用也較為有限,本文將其分為第三類情報。
經過對網絡或主機特征分析研究,再加以利用,就可以快速地從所有流量中區別出正常流量和攻擊流量,以此找出攻擊者,以達到防御攻擊的效果。所以本文將網絡或主機特征威脅情報分為四級情報。
如果我們能將攻擊工具作為一種威脅情報進行分析,提前檢測出類似的攻擊工具,就能很好地預防相應的攻擊,攻擊者就必須對攻擊工具進行重寫或放棄該攻擊工具,這種方式可以讓攻擊成本增加。攻擊工具作為一種威脅情報應該受到重視,所以本文將攻擊工具威脅情報分為五級情報。
如果我們能獲得攻擊者的TTPs,通過分析便可以掌握攻擊者的每一次攻擊意向,提前做好相應的預防,使得攻擊者無法進行有效攻擊。所以,相對于之前的五級情報,TTPs作為威脅情報來說具有較高的價值,本文將TTPs威脅情報分為六級情報。
本系統整體架構前后端分離,主要包括區塊鏈底層技術層面、前端層面和后端層面。
對于前端,主要是各節點與客戶端之間的交互操作,為了保證沒有區塊鏈技術背景的用戶也能使用本系統,本文使用HTML+CSS+Javascript+LayUI前端開發,保證界面的簡潔。
后端作為前端與底層的中間層,是用戶與區塊鏈交互的橋梁。本文使用Node.js進行開發,Web3.js為底層接口,邏輯功能在智能合約內用solidity進行實現,為前端提供Restful接口。區塊鏈技術本文使用以太坊的truffle開發框架,保證交易數據的安全性與一致性,使用智能合約實現多級用戶數據的傳遞與共享。
本系統的用戶主要有威脅情報提供者,情報機構以及各企業、組織平臺。威脅情報提供者作為本系統智能合約的部署用戶,無須進行注冊。完成智能合約的部署后,其可將情報ID、情報類別和情報描述登記在區塊鏈上,并可以向情報機構傳遞情報。情報機構可以將獲得的情報直接傳遞給用戶,或者進行分析決策,發現新的威脅情報,作為新的情報提供者將該情報提供給其他情報機構。智能合約具體功能分析如下。
(1)用戶注冊與登錄。在本系統中,每個節點用戶的唯一標識是其用戶地址,通過點對點網絡廣播后用戶地址在節點共識后得到確認,加入到本網絡中。情報提供者部署智能合約,無須注冊。每次注冊都屬于用戶發起的一次交易。用戶通過唯一的地址和設置的用戶密碼完成注冊后,相關的信息都存儲在區塊鏈上,確保一個地址對應一個賬戶,以便系統認證。用戶登錄時,輸入注冊時使用的地址和對應的密碼,如果相符,則登錄成功,否則需要進行用戶注冊。
(2)威脅情報數據上傳。利用區塊鏈的分布式賬本特性,將所需存證、共享的威脅情報數據上傳至區塊鏈之上永久保存,通過節點的共識與維護,保證上傳數據的安全性。每一次數據上傳都是一次交易,因此在上傳完成后,會自動生成這筆交易的交易ID,在需要對威脅情報數據擁有權和原始性等方面提供證明信息時,可以利用交易ID進行驗證。
(3)威脅情報數據共享。對于用戶已經成功上傳至區塊鏈上的威脅情報,用戶可以對其進行共享操作,將威脅情報傳遞給已注冊的情報機構,已注冊的情報機構可以將所獲得的威脅情報傳遞給需要的、已注冊的用戶等。每一次情報的傳遞都是一次交易,同樣需要節點的共識,所生成的交易ID也確保了這筆交易的唯一性,便于在有需要的時候進行追溯。
(4)共享威脅情報數據查詢。情報提供者、已注冊的用戶和情報機構等,可以對所擁有的威脅情報數據進行查詢。情報提供者可以查詢到已經上傳至區塊鏈上的威脅情報,也可以查詢傳遞到情報機構的情報數據,同時包括情報后續的傳遞情況。同樣,情報機構也可以對所擁有的威脅情報及其傳遞進行查詢。如此,每個已注冊的用戶都可以查詢到自己擁有的威脅情報,以及其傳遞路徑。
根據前文功能模塊的分析,本文的智能合約設計主要包括以下幾個方面。
(1)用戶管理。用戶主要包括合約創建用戶和業務使用用戶。合約創建用戶就是威脅情報的提供者,其用自己的地址進行登錄,對智能合約進行部署,以進行后續的數據操作。業務使用用戶主要包括情報機構和需求用戶等,其需要用自己的地址進行注冊后登錄,加入到合約創建用戶所發布的智能合約中,以進行相關的威脅情報共享、查詢等操作。
(2)業務管理。業務管理主要是根據智能合約的需求,進入相應的業務流程。本文所涉及的業務主要包括威脅情報的信息登記上鏈與共享、查詢等。威脅情報提供者將威脅情報進行上傳,經過廣播共識后寫入區塊鏈,然后可對已寫入區塊鏈的情報數據進行傳遞共享以及查詢,收到相應情報的已注冊的情報機構、企業等用戶可以對情報進行查詢與傳遞,從而實現威脅情報的流動。
智能合約上進行的每一次交易都會產生一定的費用,以gas為單位,本文所設計的系統基于以太坊私鏈發布,使用ganache生成多個測試節點,用來模擬挖礦、共識、交易等工程。每個節點均可消耗自帶的虛擬gas來實現注冊、威脅情報登記,傳遞,查詢等操作。
本文主要設計了一個基于區塊鏈技術的威脅情報共享系統,對威脅情報的類別按其價值進行劃分,為提高效率,增加節點間的信任,基于代理簽名算法設計了一種新的多級共享模式,并利用solidity進行了智能合約功能開發,基于truffle框架完成了系統開發。實現了基于區塊鏈技術的用戶登錄與注冊、威脅情報上鏈與查詢,以及共享傳遞等。