李 俊,王志浩,陳迎春
(1.中國電子科技集團公司第三十研究所,四川 成都 610041;2.電子科技大學,四川 成都 611731)
隨著網絡信息技術的發展,網絡空間已經成為人類生產生活中的“第五空間”。隨之而來的就是網絡空間的安全問題,“沒有絕對安全的系統”,無論是硬件還是軟件都不可避免地由于設計或者邏輯缺陷導致漏洞、后門等問題。然而,這些漏洞等安全問題無法從根本上杜絕,并且現有的安全防御方法大多是基于對威脅的感知、對漏洞的修補、對軟硬件的更新和防火墻加固等安全保護措施,這就導致了網絡空間防御相對于攻擊者的被動地位。針對攻防博弈不對稱,易攻難守的態勢,一些學者提出了主動防御的理念,與傳統的被動防御相對,主動防御能夠在攻擊或者入侵行為發生之前,對其采取防御措施,提升系統的安全性。主動防御技術的代表之一是移動目標防御(Moving Target Defense,MTD)技術[1],通過增加系統的動態性、隨機性和多樣性來構建一種不確定的網絡目標環境,從而增加攻擊者的攻擊難度。但是,移動目標防御的局限性在于無法處理來自系統自身的安全威脅,只能通過系統攻擊面的多樣性和隨機變化來對抗網絡攻擊。為了進一步提升系統對網絡空間中未知的漏洞、后門甚至系統內部的缺陷的抵御能力,受到生物擬態偽裝現象的啟發,基于動態冗余構造(Dynamic Heterogeneous Redundant,DHR),以鄔江興院士[2]為代表的國內研究團隊提出了擬態防御的思想,在DHR架構的機制中引入了動態性和隨機性,以及能夠顯著提高系統容侵容錯能力的多模裁決機制。擬態防御系統能夠使系統對攻擊者呈現一種顯著的不確定性表征,同時提升了系統對非協同式攻擊的防御能力。擬態防御系統已經被應用在包括邊緣計算系統[3]、工業制造系統[4]等多種領域中,由于其內生安全的機理特性,能夠使系統應用開放的、通用的并且有毒帶菌的開源軟硬件和中間件構建安全可靠的系統。
擬態防御通過將針對個體的單點攻擊轉換為針對系統層面的配合協同攻擊,十分重要的機制之一是系統中的多模裁決機制。針對擬態防御系統中的執行體多模裁決或智能仲裁算法,常見的方法是采用多數執行體大數判決的方式進行裁決,即多數一致性裁決。對執行體的輸出矢量進行一致性判決,并采取表決機制,能夠有效地降低少量執行體故障導致系統輸出錯誤的概率[5-8]。然而,由于大數判決機制較為簡單,很多情況下,無法處理實際系統中復雜的判決問題。例如,當系統中多數一致的條件無法滿足或者在強攻擊的條件下,系統中多數執行體都產生了錯誤輸出時,大數判決機制無法給出正確結果或判決機制失效。為改進簡單的大數判決算法,可以通過引入策略參數的方法。魏帥等[9]提出了一種基于高階異構度的大數判決算法,通過定義執行體高階異構度的概念,并對系統的安全性進行了量化分析。為克服大數判決原理的簡單性,一些算法中考慮了執行體的異構度、安全性和歷史表現情況[10-13];沈叢麟等[14]提出了一種基于信譽度和相異度的裁決算法,分別考慮了執行體的脆弱程度和異構程度,改進了系統的調度算法和裁決機制;郭威[15]基于歷史置信度的裁決機制,提出了一種基于Logistic函數的置信度修正算法及裁決算法;武兆琪等[16]考慮了執行體的異構度、執行體數目和歷史表現,提出了一種擬態裁決優化方法;扈紅超等[17]提出了一種基于執行體可信度的判決策略,根據歷史經驗和執行體狀態選擇正確的執行體集合。大數判決和考慮策略參數的判決方法必須滿足系統中所有執行體都有輸出之后再進行判決和計算,然而,不同的執行體有不同的構件,導致執行體間任務執行的效率不同,降低系統整體的效率。針對裁決機制的效率問題,吳正江等[18]提出了一種競賽式的仲裁優化方案;王禛鵬[19]基于博弈論設計了一種預判決機制。博弈論能夠將裁決建模為攻擊和防御的博弈問題,能夠優化裁決的正確性和效率[20]。
基于以上研究,本文提出了一種綜合考慮執行體安全性和輸出結果的智能仲裁算法。通過分層級的漏洞分析方法得到每個執行體的安全性,定義了執行體的安全評估系數對安全性進行量化。基于執行體集的輸出空間,根據每個輸出對應的執行體的安全評估系數,選擇安全性最強的子集作為裁決結果。仿真結果表明,相對于大數判決算法和基于最優安全度的判決算法,本文提出的智能仲裁算法在判決準確率上有較大的提升。
擬態防御架構的基本模型如圖1所示。擬態防御系統中的主要模塊包括:輸入代理模塊、異構構件集合、執行體集合、執行體調度模塊、多模裁決模塊、負反饋控制模塊。基于DHR架構,擬態防御系統引入了結構表征的不確定性,將動態化和隨機化的特性引入冗余異構架構中。擬態系統對外呈現的狀態與單一架構的系統是相同的,所以為用戶提供的使用接口是相同的。因此,基本模型中的輸入代理模塊將用戶的請求即系統的輸入激勵進行適當地預處理后分發到執行體集的每一個執行體中。執行體集是由調度算法從異構構件池中通過動態選擇算法調度構建出來的。執行體集中的異構冗余執行體同時都是功能等價的,即在不出現故障和攻擊的情況下,所有執行體的輸出矢量是一致的。然而,在實際應用中,無法保證系統的各個構件及整個網絡空間環境的“無毒無菌”,所以執行體單點故障和受攻擊的可能性是存在的。因此,需要通過多模裁決機制進行執行體的錯誤感知,通過多數一致性判決等算法判斷當前輸出矢量中包含錯誤的執行體。

圖1 擬態防御基本模型
功能等價異構冗余執行體集E:假設系統中有n個功能等價的異構執行體e1,e2,…,en,則E=[e1,e2,…,en],且|E|=n。
執行體安全評估系數s:針對每一個執行體,定義一個安全評估系數s,可以通過執行體漏洞掃描、歷史表現統計等方法進行度量,用于評估執行體的安全性,作為調度和裁決的依據。
執行體集的輸出空間O:假設正確輸出的執行體的輸出矢量為o0,最初是由人為判定標注輸出矢量的正確性和可信性。執行體由于單點故障、受攻擊后被惡意改變輸出等原因,產生了相異于o0的q種輸出結果o1,o2,…,oq,則執行體集的輸出空間為O=[o0,o1,…,oq]。除o0外,執行體輸出其余所有結果都判定為出錯。
擬態防御系統中最核心的機制之一是多模裁決機制,通過動態異構冗余架構的機制,每個執行體都能得到相應的輸出矢量,多模裁決機制便是通過相應的裁決機制和算法以及給定的語義語法對得到的執行體輸出矢量進行一致性判決,從而得到系統最終的輸出。同時,多模裁決機制能夠感知到執行體中產生隨機故障或收到非協同攻擊的狀態,通過將執行體的狀態信息發送到系統中的負反饋機制中,能夠優化執行體的調度方案,進一步提升系統的安全性和運行效率。然而,傳統擬態防御系統中最常采用的大數判決算法即多數一致性表決算法,由于其簡單的表決投票機制,導致其在應對比較復雜的場景或執行體安全性不均衡的情況,易導致判決結果出錯。例如,針對5余度的擬態防御系統,如果執行體集中有部分執行體的安全性較低,表現在較低的安全評估系數,導致其受攻擊的可能性較大,輸出矢量遭到惡意篡改的概率較大。假設5個執行體的輸出結果如表1所示,由于執行體e2、e3、e4安全性較低,導致其輸出被篡改;安全性較高的執行體e1保持正確輸出。如果采取大數判決算法,則輸出的判決結果為錯誤的o1。因此,在這種情況下,大數判決方法失效,需要設計一種能夠綜合考慮執行體安全性和輸出結果的智能仲裁算法。

表1 5個執行體輸出情況
擬態防御旨在通過不完美的構件組成更加安全的系統,系統中的軟硬件可以采用開放、通用的軟硬件設備。這些構件中一定會存在漏洞、后門等容易被利用的缺陷,于是會導致每個執行體中都包含不同的漏洞。因此,在系統運行過程中,每個執行體發生故障或者抵抗攻擊的程度和能力是不同的。因此,需要對執行體集中的情況進行安全性的量化分析。
通用漏洞評分系統(Common Vulnerability Scoring System,CVSS)是用于評估漏洞的嚴重程度的公開標準,廣泛應用在安全評估領域中[21]。本文中采用執行體各個層級的漏洞評分對執行體整體的安全性進行量化。異構冗余執行體的異構層級包括異構CPU芯片、異構操作系統、異構服務器軟件、異構數據庫、異構編程語言等。調度模塊部署發布得到執行體后,通過漏洞掃描器對執行體中的漏洞進行掃描,查詢美國國家漏洞數據庫(National Vulnerability Database,NVD)得到相應漏洞的CVSS評分,用于對漏洞安全性的量化分析。掃描得到的部分漏洞示例如表2所示。

表2 執行體部分漏洞情況
基于執行體的漏洞掃描結果和CVSS評分,本文對異構冗余執行體的安全性進行了量化分析,即執行體的安全評估系數,計算方法如下:

式中,l代表執行體的異構層級數量;n為執行體集的大小,即執行體的數目;lsj表示第j層中執行體漏洞的綜合評分,定義為:

式中,v代表每一個異構層級中漏洞的數量,cvssk表示第k個漏洞的CVSS漏洞評分,由NVD數據庫查詢得到。通過漏洞評分計算層級漏洞綜合評分,歸一化后得到表2中的執行體配置。只考慮表中存在的漏洞,則各異構層級的漏洞綜合評分為:ls1=4.7,ls2=5.0,ls3=6.8,ls4=10.0,ls5=10.0。
則該執行體安全評估系數為:

安全評估系數越高,代表執行體中漏洞綜合評分的水平就越低,表示執行體的安全性越高。根據執行體安全評估系數以及輸出空間的定義,可以進一步根據執行體的輸出結果及其安全性設計仲裁和調度算法。基于此,本文提出了基于執行體安全性的智能仲裁算法。
假設系統中執行體個數為n;輸出矢量空間的大小為q+1,即一種正確,q種錯誤;并且每個執行體都有輸出,不存在因故障導致無輸出的特殊情況。
步驟1:記錄n個執行體的輸出矢量,表示為oe1,oe2,…,oen。將相同的值劃分到同一個子集中,得到輸出矢量的空間O=[o1,o2,…,oq]。
步驟2:根據執行體輸出矢量的空間,將輸出相同的執行體劃分到一個執行體子集,得到q+1個執行體子集,表示為E0,E1,…,Eq。
步驟3:根據執行體子集中的不同執行體,計算每個執行體的安全評估系數,表示為s1,s2,…,sn。
步驟4:統計每個輸出相同的子集中執行體的安全評估系數的平均值:

得到每個輸出相同執行體子集的安全評估系數均值集合SA={sa0,sa1,…,saq}。統計集合SA中的最大值對應的下標m即max(SA)=sam。
步驟5:將輸出空間的om判定為正確輸出,其余O′=[o0,o1,…,oq]-[om]判定為出錯或故障。建立一個標識矩陣F=[0,1,…,0],其中:

步驟6:將標識矩陣F發送到負反饋模塊,用于優化執行體的調度與部署流程。將om發送到輸出代理,響應輸入的用戶請求。
前文中實現了基于漏洞分析的執行體安全性度量,并根據安全性度量提出了一種基于執行體安全性的智能仲裁算法。本節采用Python 3.7和Matlab 2019b進行了算法的仿真分析和有效性驗證,并且對比了所提算法與擬態防御系統中常用的大數判決與基于最高安全度判決的仲裁算法的表現。采用β分布生成執行體的安全度數據,對比了不同仿真次數、不同執行體個數下3種方法的仲裁結果,對比結果表明,相對于大數判決、基于最優安全度的判決方法,本文提出的基于執行體安全性的智能仲裁算法有更高的判決準確率。
基于擬態防御的基本原理,本文利用Python中多進程的機制,實現了擬態防御的基本仿真平臺,平臺基本架構如圖2所示。平臺將功能等價異構執行體實現為不同的進程,進程配置參數作為執行體不同層級的配置信息,子進程與主進程通過消息隊列進行消息傳播,作為請求分發和結果輸出。調度模塊沖異構執行體池中隨機調度異構執行體,作為在線執行體的配置,將輸入代理接收的請求分發給所有在線執行體。異構執行體進行并行的任務處理之后,得到的結果通過消息隊列發送到智能仲裁模塊。智能仲裁模塊中實現了大數判決、最優安全度判決和本文提出的基于執行體安全性的智能裁決算法。經過智能仲裁模塊的判斷,能夠得出本次調度中輸出錯誤的執行體,將該執行體配置發送到負反饋模塊中,進而調整執行體的調度算法。同時,仲裁結果將傳遞到輸出代理,完成輸入請求的響應。

圖2 仿真平臺架構
在上述的仿真環境中,設計了100條不同的執行體配置信息,通過調度模塊隨機選取不同的配置信息,部署發布執行體,同時,基于β分布生成執行體的安全評估系數,不同參數的β分布的概率密度曲線如圖3所示。本文選取了參數為(0.5,0.5)的β分布,使用Python中numpy庫的相應函數生成,用于模擬執行體的安全評估系數。

圖3 β分布概率密度曲線
為了評估3種方法在不同情況下的仲裁表現與性能,本文采取機器學習中二值分類結果評估的相關評價標準,將輸出仲裁正確率轉換為等價的二分類問題的正確率進行對比。采用的指標包括:正例被正確劃分的個數(True Positive,TP),正例被錯誤劃分的個數(False Positive,FP),負例被錯誤劃分的個數(False negative,FN),負例被正確劃分的個數(True Negative,TN),以及正確率(Accuracy)。其中,正例代表正確的執行體的輸出結果,負例代表錯誤的執行體的輸出結果;假設m個執行體的冗余架構進行了n輪仿真,得到的樣本數則為n×m。被正確劃分代表正確結果通過仲裁,錯誤結果未通過仲裁。4個指標的混淆矩陣如表3所示。

表3 判決指標混淆矩陣
其中,正確率Accuracy定義為:

3.3.1 安全評估系數均勻分布
首先,本文仿真分析了在無冗余度的擬態防御架構,所有執行體配置的安全評估系數均勻分布的情況下,3種仲裁算法的判決能力,通過前文定義的5個指標進行對比分析,結果如表4所示。通過對比可以發現,在給定條件下,大數判決的判決性能最差,其次為最優安全度判決,本文提出的基于執行體安全性的智能仲裁算法表現最好。大數判決算法在負例判決時的效果比較差,判決錯誤的概率達到了46.363%,與隨機猜測的50%準確率很接近,這也導致整體的準確率低至62%。相比之下,考慮了執行體安全性的最優安全度判決算法準確率提升很高,但是由于只采用單個執行體的輸出作為最終結果,該算法下的擬態防御架構的容侵和容錯能力都比較弱,且很容易受到限制。本文提出的基于執行體安全性的智能仲裁算法既考慮了執行體的表決過程,也將執行體本身的抗入侵能力進行了量化,相較于大數判決算法,判決準確率提升了154%,相較于最優安全度判決算法提升了103%。

表4 3種算法判決結果
3.3.2 安全評估系數符合β分布
為了驗證不同判決算法在各種場景下的性能及表現情況,本節通過產生安全評估系數符合參數為(0.5,0.5)的β分布的執行體,使系統中包含大量的安全系數低的執行體。模擬系統在執行體高度不可靠的情況下,即非常容易遭受攻擊或者攻擊強度很大的情況下能否保障正常運行。為了保證結果的正確性和穩定性,記錄了仿真次數從10到1 000的不同仿真次數下的平均正確率,結果如圖4所示。通過對比可以看出,在執行體高度不可靠的情況下,大數判決的表現最差,甚至在仿真100次準確率低于50%,即性能表現弱于隨機猜測的情況。基于最優安全度的判決和本文提出的基于執行體安全性的智能仲裁算法,除在10次仿真時結果不確定較大,準確性較低外,隨著仿真次數的上升,準確性逐漸穩定。通過對比,基于最優安全度的判決算法的判決準確率穩定在90%左右,而本文算法在執行體高度不可靠的情況下,仍然能夠達到93%左右的判決準確度,且不會隨著系統運行時間的變化而改變。因此,在給定安全評估系數符合參數為(0.5,0.5)的β分布的條件下,本文提出的基于執行體安全性的智能仲裁算法,能夠很好地應對因執行體漏洞多、安全評估系數低導致的執行體高度不可靠的情況,在這種情況下,仍然能夠保持比較準確的多模裁決結果。
3.3.3 執行體數量影響仿真分析
擬態防御系統最重要的特性之一就是異構冗余特性,即性能等價的異構執行體同時執行任務,最終經過多模裁決機制,防止由于單個執行體出現錯誤導致的系統錯誤。因此,異構執行體的數量是影響擬態防御系統的關鍵指標之一。不同的裁決算法在不同的執行體數量下的仲裁準確率都不同。基于此,本節中仿真分析了不同執行體數量下的擬態防御系統中3種判決算法的表現和性能,借助前文定義的5個評估指標進行對比分析。
100次仿真實驗中,不同仲裁算法將正例劃分正確的數量TP如圖5所示。通過對比可以看出,大數判決算法的表現最差,并且在偶數執行體個數下分類正確的概率進一步降低。在針對正例的判決結果中,基于最優安全度的判決結果與本文提出的算法表現相近,在奇數冗余度的情況下更為接近。但是,本文提出的算法始終優于基于最優安全度的判決方法。相對于其他兩種算法,本文提出的算法在正例正確分類的平均數量上分別提升了87%和1%。

圖5 不同執行體個數下的TP值
類似的,本文對比了三種算法在100次仿真下的將正例錯誤分類的情況,即執行體的輸出正常,但是仲裁算法卻將其歸類為異常輸出的概況的數量,在不同的執行體個數下的結果如圖6所示。與TP類似,在偶數冗余度的時候大數判決出錯的概率顯著提高。但其余兩種算法的表現受執行體個數的奇偶性的影響不大,隨著執行體個數的增加,裁決表現也逐漸改善,且趨于穩定。整體來講,與基于最優安全度的判決算法相比基于最優安全度的判決算法,降低了對于輸出正確的執行體判決錯誤的概率。相對于其他兩種算法,本文提出的算法在正例錯誤分類的平均數量上分別降低了96%和56.8%。

圖6 不同執行體個數下的FP
在針對負例的判決方面,本文算法要顯著優于其余兩種算法。由圖7可以看出,除在5冗余執行體的情況下本文算法和基于最優安全度的算法表現相近外。整體來講,相對于其他兩種算法,本文提出的算法表現都有較大提升,在負例正確分類的平均數量的分別提升了393%和6%。

圖7 不同執行體個數下的FN數量
由正例裁決和負例裁決的結果可以看出,本文算法在處理負例的樣本方面有較大的提升,具體表現在負例正確分類的數量顯著增加,與之相對的錯誤分類的數量顯著減少,如圖8所示。負例即表示系統中受到攻擊或出現故障導致執行體輸出錯誤的執行體,處理執行體出錯是多模裁決算法需要達到的非常關鍵的目標之一。相對于其他兩種算法,本文提出的算法在負例錯誤分類的平均數量的分別降低了88%和37.2%。因此,在感知執行體錯誤的能力方面,加載了本算法的擬態防御系統的防御能力強于傳統的大數判決系統。

圖8 不同執行體個數下的TN數量
最后,本文對比了3種算法在不同執行體數量下的仲裁準確性,結果如圖9所示。可以看出,本文提出的基于執行體安全性的智能判決算法隨著執行體數量的變化,準確性平緩增長,并且逐漸收斂到1。大數判決算法的表現最差,并且在偶數執行體情況下準確性會進一步降低。基于最優安全度的算法在執行體數量較少的情況下,變化波動幅度較大,執行體個數大于6之后,變化趨勢逐漸平穩。但是整體準確性水平仍然低于本文算法。相對于其他兩種算法,本文提出的算法在整體判決的準確率上分別提升了163%和3.8%。

圖9 不同執行體個數下的正確率
本文研究了擬態防御系統中的多模裁決機制,基于擬態防御系統的特性,綜合考慮了執行體的安全性和輸出結果空間,運用漏洞分析的方法,提出了一種基于執行體安全性的智能仲裁算法。為了驗證算法的有效性,設計了仿真對比試驗,仿真結果表明,相對于最常采用的大數判決算法及基于最優安全度的判決算法,本文提出的算法提升了多模裁決的準確性,進而改善了擬態防御系統整體的安全性,增強了系統在面對高強度攻擊時的防御能力。