楊汶佼 劉星宇 張 奕 張興明 張汝云
(之江實驗室智能網(wǎng)絡研究院 杭州 311100)
近年來,隨著我國制造強國戰(zhàn)略的全面推進,工業(yè)領域數(shù)字化、網(wǎng)絡化、智能化的改造加快發(fā)展,逐漸成為我國實施制造強國和網(wǎng)絡強國戰(zhàn)略的重要保障.在我國,工業(yè)控制系統(tǒng)的應用超過80%為涉及國計民生的關鍵基礎設施(如鐵路、城市軌道交通、供水、供電等),其安全性關系生產(chǎn)安全和經(jīng)濟發(fā)展,是對現(xiàn)實世界造成直接影響的“大問題”[1].目前我國工控安全面臨越來越嚴峻的安全形勢,雖然近幾年國產(chǎn)工控系統(tǒng)技術,尤其是在安全可靠性上有了長足的進步,但長期以來我國工控領域的嵌入式軟件、總線協(xié)議、工控軟件等核心技術仍未實現(xiàn)自主可控,特別是針對未知漏洞、未知后門的攻擊基本沒有安全防護能力,同時也面臨著安全威脅加速滲透、攻擊手段復雜多樣等新挑戰(zhàn).目前,工業(yè)控制系統(tǒng)的安全防護還是基于傳統(tǒng)的被動式防御理念,采用的防火墻、入侵檢測、入侵防護系統(tǒng)等安全手段已經(jīng)無法起到有效的防護作用.
文獻[2-5]提出了網(wǎng)絡空間擬態(tài)防御(cyberspace mimic defense, CMD)理論,將不可控的網(wǎng)絡空間安全威脅問題轉(zhuǎn)化為自主可控的網(wǎng)絡空間服務魯棒性控制問題,從內(nèi)部構(gòu)造機制出發(fā)將網(wǎng)絡空間的被動防御轉(zhuǎn)化為主動的內(nèi)生安全[6].擬態(tài)防御技術以動態(tài)異構(gòu)冗余(dynamic heterogeneous redundancy, DHR)為核心架構(gòu),該架構(gòu)由輸入代理、異構(gòu)功能等價執(zhí)行體、裁決器、輸出代理等組成.裁決器作為各執(zhí)行體的輸入代理,將輸入數(shù)據(jù)向各執(zhí)行體進行發(fā)送,同時對各執(zhí)行體的處理結(jié)果進行判決產(chǎn)生唯一輸出[7].另外裁決器完成對各執(zhí)行體的調(diào)度,并根據(jù)裁決結(jié)果對處于異常狀態(tài)的執(zhí)行體進行清洗恢復.擬態(tài)防御的核心思想是通過功能等價體的動態(tài)切換,使異構(gòu)冗余架構(gòu)的執(zhí)行體具有動態(tài)化、隨機化的屬性,使攻擊者的攻擊難度和成本大幅提高.
目前工控系統(tǒng)中的硬件控制器通常采用了冗余機制,但幾乎都是同構(gòu)的冗余,從硬件芯片型號到執(zhí)行體中的執(zhí)行程序都是相同結(jié)構(gòu)、相同的代碼.芯片、驅(qū)動程序、操作系統(tǒng)、執(zhí)行程序中一旦有1個后門被利用或者漏洞被攻擊成功,則整個控制器就被攻擊成功了.針對以上問題,文獻[8]提出了一種在工業(yè)控制領域應用的擬態(tài)安全處理機架構(gòu).該架構(gòu)硬件部分由3套異構(gòu)冗余處理機及其外圍電路以及1個擬態(tài)調(diào)度器組成.軟件部分包括設備驅(qū)動、中間件以及異構(gòu)操作系統(tǒng),但該系統(tǒng)在執(zhí)行體調(diào)度時不存在隨機性和動態(tài)性,且當某一執(zhí)行體遭受攻擊進入清洗恢復狀態(tài)時,系統(tǒng)安全性能降級,此階段該系統(tǒng)被攻擊的風險大大提升.文獻[9]提出了一種4異構(gòu)冗余執(zhí)行體的擬態(tài)架構(gòu),與文獻[8]相比系統(tǒng)的隨機性和動態(tài)性有所加強,但并沒有考慮當遭受到共模攻擊時,如何提升系統(tǒng)的安全增益.文獻[10]提出了一種基于歷史表現(xiàn)的執(zhí)行體選擇方法.文獻[11]提出了一種基于擬態(tài)防御的差異化反饋調(diào)度判決方法,根據(jù)判決方法的可靠度系數(shù)及多數(shù)判決方法選出可信的執(zhí)行體.但上述調(diào)度策略基于系統(tǒng)存在大量可利用的異構(gòu)執(zhí)行體,而擬態(tài)工業(yè)系統(tǒng)由于成本和開發(fā)難度的限制,很難做到支持大量可利用的異構(gòu)執(zhí)行體,因此上述調(diào)度策略在這種條件限制下不能取得理想的結(jié)果.另外工業(yè)系統(tǒng)中執(zhí)行體輸出的數(shù)據(jù)成分復雜,目前基于一致性的擇多判決方法[12]并不能準確裁決.
因此,本文首先提出了針對工業(yè)現(xiàn)場協(xié)議的裁決方法,然后提出了一種在有限的異構(gòu)資源下的基于共模防御系數(shù)的執(zhí)行體調(diào)度方法,最后通過仿真實驗將該方法與現(xiàn)有的隨機調(diào)度算法進行對比,分析算法在安全性、降低共模攻擊成功率以及在發(fā)生共模攻擊后減少逃逸時間方面的性能.
在不同的工業(yè)應用場景中,尤其是在一些復雜的工業(yè)現(xiàn)場,工業(yè)控制系統(tǒng)需要接入大量不同類型的輸入輸出(input and output, IO)設備,包括開關量IO設備和模擬量IO設備,其中開關量IO設備的輸入和輸出為0或1,模擬量IO設備的輸入和輸出為數(shù)據(jù)量程,因此在工業(yè)控制系統(tǒng)對各類IO設備進行實時控制的工業(yè)協(xié)議中會混合有不同的數(shù)據(jù)類型.目前針對混合數(shù)據(jù)類型工業(yè)協(xié)議還沒有特別高效和準確的擬態(tài)裁決方法,主要采用的是基于內(nèi)容一致性的擇多裁決方法.由于不同的模擬量IO設備具有不同的數(shù)據(jù)量程,異構(gòu)主控制器中使用浮點數(shù)計算模擬量信號,由于異構(gòu)主控制器的浮點數(shù)據(jù)計算精度存在差異,浮點數(shù)計算結(jié)果的二進制數(shù)值會不相同,因此在使用基于內(nèi)容一致性的擇多裁決方法對混合數(shù)據(jù)類型工業(yè)協(xié)議進行裁決時,對于開關量IO設備的控制數(shù)據(jù)有良好的裁決效果,但是對模擬量IO設備的控制數(shù)據(jù)無法進行準確的裁決,存在對主控制器的攻擊誤判甚至出現(xiàn)攻擊逃逸等問題.本文針對上述問題,提出了一種應用于異構(gòu)多執(zhí)行體架構(gòu)的擬態(tài)工業(yè)控制系統(tǒng)的基于混合數(shù)據(jù)類型工業(yè)協(xié)議的擬態(tài)裁決方法.
要實現(xiàn)對模擬量數(shù)據(jù)的裁決,首先需要對模擬量數(shù)據(jù)進行歸一化處理,在每個控制周期主控制器單元需要對不同數(shù)據(jù)類型的IO實時控制數(shù)據(jù)進行歸類,按照數(shù)字量和模擬量分別進行計算并組包,并在協(xié)議中的特定位置進行標記.每個控制周期各執(zhí)行體在進行IO設備模擬量計算時,需要將不同IO設備的模擬量歸一化為與物理意義無關的純數(shù)字量,具體如式(1)所示:
(1)
其中Ri為歸一化值,ri為實際IO設備模擬量數(shù)值,F(xiàn)i為該IO設備的量程值,d為精確有效數(shù)字對應的放大系數(shù),δi為各異構(gòu)主控制器的浮點數(shù)計算誤差.
計算各異構(gòu)主控制器輸出的歸一化誤差如式(2)所示:
δi=|Ri-avg(R1,R2,…,Rn)|,
(2)
其中δi為主控制器i的歸一化誤差,Ri為主控制器i的歸一化值,avg(R1,R2,…,Rn)為所有主控制器單元歸一化值的平均值.
結(jié)合各執(zhí)行體當前狀態(tài)和調(diào)度機制,從中選出3個執(zhí)行體進入裁決池.將裁決池中執(zhí)行體發(fā)送的IO控制數(shù)據(jù)進行解析,按照不同的數(shù)據(jù)類型,將數(shù)據(jù)分別放入不同的裁決區(qū)中進行裁決,數(shù)字量放入裁決區(qū)A,模擬量放入裁決區(qū)B,分別對裁決區(qū)A和裁決區(qū)B中的數(shù)據(jù)進行擇多裁決,數(shù)字量和模擬量采取不同的判決方式.具體判決規(guī)則如下:
進行數(shù)字量類型數(shù)據(jù)判決時,判斷3個執(zhí)行體相同位號對應的數(shù)字量值是否一致,如果某1個與其他2個不同,則認為特殊的這個位號出錯,若三者都不一致,則三者都出錯.
進行模擬量類型數(shù)據(jù)判決時,先取3個執(zhí)行體相同位號對應的模擬量的中值,假設{Q1,Q2,Q3}為3個執(zhí)行體相同位號對應的模擬量,其中Q1≤Q2≤Q3,則中值為Q2;再計算其他2個值與中值的偏差,如果偏差大于誤差配置值則認為該執(zhí)行體位號對應的值出錯,假設δ為誤差配置值(通常異構(gòu)主控制器的浮點數(shù)據(jù)計算精度優(yōu)于0.01%),若Q2-δ≤Q1≤Q2,則Q1對應執(zhí)行體的該位號正確,若Q1
裁決時遍歷所有裁決區(qū)數(shù)據(jù),判斷為出錯的執(zhí)行體,累加1個出錯數(shù),所有位號輪詢后累積出錯數(shù)最多的執(zhí)行體判定為異常,出錯最少的執(zhí)行體判定為可信的執(zhí)行體,出錯數(shù)在中間的執(zhí)行體判定為中間狀態(tài),若3個執(zhí)行體出錯數(shù)一致,則都判定為出錯,取判定狀態(tài)為正常的執(zhí)行體的結(jié)果作為裁決結(jié)果.裁決結(jié)束后,將裁決區(qū)A和裁決區(qū)B的裁決結(jié)果相加作為最終的裁決結(jié)果,將裁決結(jié)果錯誤數(shù)最少的執(zhí)行體所對應的IO設備控制數(shù)據(jù)標記為可信數(shù)據(jù),將裁決結(jié)果錯誤數(shù)最多的執(zhí)行體標記為異常;若裁決結(jié)果錯誤數(shù)最少的主控制器有多個,則隨機選取其中的某個執(zhí)行體,將其所對應的IO數(shù)據(jù)標記為可信數(shù)據(jù).
根據(jù)擬態(tài)理論,在擬態(tài)系統(tǒng)中采用的異構(gòu)執(zhí)行體越多,獲得的安全增益越大,但同時也伴隨著系統(tǒng)的復雜度變大、成本變高、可維護性變差等問題[13].因此在實際的工程設計中需要對系統(tǒng)的復雜度和安全性進行折中.在本文的實際設計方案中,采用的是具有4個異構(gòu)執(zhí)行體的工控處理系統(tǒng).在文獻[9]中對4異構(gòu)執(zhí)行體處理機系統(tǒng)的安全增益進行了詳細分析,經(jīng)過擇多判決后,系統(tǒng)的錯誤率降低得非常明顯,超過2個數(shù)量級.本文在此基礎上針對4個異構(gòu)執(zhí)行體的工控系統(tǒng)提出了一種基于共模防御系數(shù)的調(diào)度方法,旨在保證系統(tǒng)安全增益的同時能夠減小共模攻擊的成功率并縮短逃逸時間.
假設1.由于系統(tǒng)內(nèi)含有多異構(gòu)執(zhí)行體,系統(tǒng)的輸入輸出設計復雜,為便于分析,在本文中假設輸入和輸出部件不會對系統(tǒng)的安全增益產(chǎn)生影響.
假設2.為便于分析,假設對執(zhí)行體中任一漏洞攻擊成功則導致執(zhí)行體失效,且這種失效在時間維度上可以看作是均勻的隨機事件.
假設3.為便于分析,在簡化模型中,假設對系統(tǒng)中不同執(zhí)行體的攻擊致失效率是相同的,且2個執(zhí)行體間的失效是相互獨立的.
假設4.為便于分析,任何攻擊成功則導致失效的執(zhí)行體,可在對執(zhí)行體進行清洗后重新恢復.
定義1.共模攻擊.
VULi與VULj相互之間的重合部分稱為VULi與VULj的共生漏洞.對于2個執(zhí)行體間的共生漏洞,將其稱為2階共生漏洞.以此類推,將k個執(zhí)行體間的漏洞稱為k階共生漏洞.利用共生漏洞發(fā)起的攻擊稱為共模攻擊.
定義2.擬態(tài)逃逸.
定義3.恢復時間TH.
恢復時間TH為失效的執(zhí)行體被裁決器清洗到其恢復進入工作狀態(tài)并與其他執(zhí)行體實現(xiàn)狀態(tài)同步所需要的時間.
定義4.擬態(tài)逃逸時間TC.
從系統(tǒng)因受到針對共生漏洞的攻擊導致系統(tǒng)出現(xiàn)擬態(tài)逃逸,到系統(tǒng)恢復到正常工作狀態(tài)所需要的時間TC.
定義5.異構(gòu)度σij.
在擬態(tài)防御中,執(zhí)行體對象結(jié)構(gòu)差異越大越能增加系統(tǒng)內(nèi)部結(jié)構(gòu)的復雜性,執(zhí)行體之間存在共生漏洞的概率就越小.異構(gòu)度包括許多方面,如編程語言、運行的操作系統(tǒng)平臺、硬件架構(gòu)等[15].異構(gòu)度是用于描述異構(gòu)程度的一種量化參數(shù),數(shù)值越小代表結(jié)構(gòu)差異越大,且σ∈(0,1].σij表示第i個執(zhí)行體與第j個執(zhí)行體之間的異構(gòu)度.
定義6.執(zhí)行體失效概率Pi.
定義7.共模防御系數(shù)μij.
μij表示第i個執(zhí)行體與第j個執(zhí)行體之間的共模防御系數(shù),數(shù)值越小表示發(fā)生共模攻擊的概率越低,系統(tǒng)初始化狀態(tài)時,每個執(zhí)行體間的共模防御系數(shù)就是各執(zhí)行體間的異構(gòu)度,正常運行時,裁決器根據(jù)執(zhí)行體每次的輸出情況,判斷執(zhí)行體是否受到共模攻擊并更新共模防御系數(shù).式(3)為共模防御系數(shù)的更新公式:
(3)
其中wij為第i個執(zhí)行體與第j個執(zhí)行體之間發(fā)生共模攻擊的次數(shù),當裁決器判定第i個執(zhí)行體與第j個執(zhí)行體發(fā)生共模攻擊時,會將其加1.T為系統(tǒng)運行的周期數(shù).a為常數(shù),用來調(diào)節(jié)共模防御系數(shù)受異構(gòu)度與共模攻擊概率的影響程度.
共模防御系數(shù)的可行性說明:由上述的共模防御系數(shù)定義及更新機制可知,執(zhí)行體的共模防御系數(shù)表示執(zhí)行體間的異構(gòu)程度以及一段時間內(nèi)各異構(gòu)體間受到共模攻擊的頻率,共模防御系數(shù)越小表明該執(zhí)行體之間發(fā)生共模攻擊的概率越低.根據(jù)式(4)可以得到當發(fā)生共模攻擊時,選擇共模防御系數(shù)較小的一組執(zhí)行體比隨機選擇一組執(zhí)行體發(fā)生共模攻擊逃逸的概率要小.
(4)
3.3.1 調(diào)度方式
本文設計的擬態(tài)工業(yè)控制系統(tǒng)含有4個異構(gòu)的執(zhí)行體,在正常工作時,策略控制與調(diào)度模塊隨機選取4個異構(gòu)的執(zhí)行體中的3個進入裁決池,裁決器按照第2節(jié)所述的裁決方法進行裁決,對裁決結(jié)果異常的執(zhí)行體進行標記,當執(zhí)行體被標記的異常數(shù)達到所設定的清洗閾值后,裁決器對該執(zhí)行體進行清洗操作.系統(tǒng)正常工作時的調(diào)度方式如圖1所示:
圖1 系統(tǒng)正常工作時的調(diào)度方式
在每個裁決周期,裁決模塊會監(jiān)控各個執(zhí)行體的運行狀態(tài),并將各執(zhí)行體的工作狀態(tài)反饋給策略控制與調(diào)度模塊.在系統(tǒng)的運行過程中各執(zhí)行體會產(chǎn)生以下4種狀態(tài):工作狀態(tài)、清洗狀態(tài)、考察狀態(tài)、掛起狀態(tài).
工作狀態(tài):默認執(zhí)行體的狀態(tài)為“工作狀態(tài)”,處于該狀態(tài)時執(zhí)行體參與系統(tǒng)的裁決調(diào)度.對于異常數(shù)達到清洗等級的執(zhí)行體,裁決模塊下發(fā)相應的清洗命令,同時將該執(zhí)行體的狀態(tài)記錄為“清洗狀態(tài)”.如果記錄的某個執(zhí)行體清洗次數(shù)達到“掛起”等級,裁決模塊下發(fā)掛起命令,同時將該執(zhí)行體的狀態(tài)記錄為“掛起狀態(tài)”.掛起狀態(tài)時需要告警通知維護人員干預.
清洗狀態(tài):當某一執(zhí)行體進入到“清洗狀態(tài)”后,該執(zhí)行體不參與裁決調(diào)度,當裁決模塊收到“清洗狀態(tài)”的執(zhí)行體發(fā)送的數(shù)據(jù)后,將該執(zhí)行體的狀態(tài)記錄為“考察狀態(tài)”.
考察狀態(tài):為了規(guī)避執(zhí)行體恢復的震蕩期而設置考察狀態(tài),標記為“考察狀態(tài)”的執(zhí)行體不參與裁決調(diào)度,考察周期數(shù)根據(jù)實際配置確定,當考察周期達到后將該執(zhí)行體標記為“工作狀態(tài)”.
掛起狀態(tài):被標記為“掛起狀態(tài)”的執(zhí)行體不參與裁決調(diào)度,同時該執(zhí)行體也應該停止發(fā)送實時數(shù)據(jù).如果該執(zhí)行體被人工干預后重新工作,則裁決模塊應將其標記為“考察狀態(tài)”.
執(zhí)行體各個狀態(tài)間的切換示意圖如圖2所示:
圖2 執(zhí)行體狀態(tài)切換示意圖
當有執(zhí)行體不處于“工作狀態(tài)”,系統(tǒng)會因缺少可調(diào)度和裁決的執(zhí)行體時,系統(tǒng)的安全等級會進行降級,不同的安全等級下系統(tǒng)的調(diào)度策略如表1所示:
表1 不同安全等級下系統(tǒng)的調(diào)度策略
3.3.2 共模攻擊識別及處置
當裁決模塊在進行裁決時,若出現(xiàn)裁決結(jié)果為2∶1(即某2個執(zhí)行體裁決結(jié)果一致且與另一個不一致),則裁決模塊會將備用的執(zhí)行體加入重新進行裁決,具體調(diào)度如圖3所示.
圖3 加入備用執(zhí)行體裁決示意圖
若此時裁決結(jié)果為3∶1(即3個執(zhí)行體裁決結(jié)果一致且與另一個不一致),則判定不一致的執(zhí)行體狀態(tài)異常,裁決模塊對其進行清洗.
若裁決結(jié)果為2∶2(即4個執(zhí)行體裁決結(jié)果兩兩一致),則裁決模塊判定系統(tǒng)受到共模攻擊,此時選取共模防御系數(shù)較小的一組執(zhí)行體作為可信執(zhí)行體,并從另一組執(zhí)行體中隨機選擇1個執(zhí)行體進行清洗.
待清洗的執(zhí)行體恢復正常工作模式后,裁決模塊重新對4個執(zhí)行體進行裁決,若裁決結(jié)果為3∶1,則認為清洗的這一組執(zhí)行體發(fā)生了共模攻擊,且清洗選擇正確,裁決模塊更新這一組執(zhí)行體的共模防御系數(shù),同時將該組另一個執(zhí)行體清洗.
若重新裁決后,裁決結(jié)果仍為2∶2,則判定未清洗的這一組執(zhí)行體發(fā)生了共模攻擊,且裁決模塊未正確選擇清洗對象,系統(tǒng)發(fā)生共模攻擊逃逸,此時將發(fā)生共模攻擊的這一組執(zhí)行體全部清洗并更新這一組執(zhí)行體的共模防御系數(shù).
若裁決模塊對某一執(zhí)行體連續(xù)清洗次數(shù)超過一定的敏感度閾值γ后,則裁決模塊判定未清洗的這3個執(zhí)行體遭受了3階共模攻擊,且發(fā)生共模攻擊逃逸,此時將發(fā)生共模攻擊的這3個執(zhí)行體全部清洗.當裁決模塊判定系統(tǒng)受到3階共模攻擊超過敏感度閾值threshold后,系統(tǒng)在正常工作時會采用所有執(zhí)行體都進行裁決的4余度調(diào)度策略,如圖4所示:
圖4 執(zhí)行體4余度調(diào)度策略示意圖
3.3.3 算法描述
綜合上述共模攻擊的識別及處置并結(jié)合擬態(tài)隨機調(diào)度的策略,具體算法描述如下:
算法1.HPF(high pass factor)調(diào)度算法.
輸入:調(diào)度集E(E1,E2,E3,E4)、敏感度threshold;
輸出:裁決結(jié)果F.
① 初始化超閾值執(zhí)行池列表,OverList=null;
② fori=1;i ③ 調(diào)度集E(E1,E2,E3,E4),從調(diào)度集中各執(zhí)行體的輸出結(jié)果隨機選擇3個結(jié)果構(gòu)建結(jié)果池PoolList(x,y,m),剩下的1個執(zhí)行體的輸出結(jié)果為備份結(jié)果BackUpList(n); ④ 計算PoolList(x,y,m).δi;/*擇多判決出各執(zhí)行體輸出結(jié)果*/ ⑤ ifPoolList(x,y,m).δi==3∶0 returnPoolList(x,y,m); ⑥ elsePoolList(x,y,m).δi==2∶1; PoolList(x,y,m).add(BackUpList(n)); /*將備份結(jié)果添加到結(jié)果池中*/ end if returnMove(PoolList[x,y,m,n].μmax,OverList);/*將其中共模防御系數(shù)μ較大的執(zhí)行體移出結(jié)果池并對其進行清洗*/ ⑨PoolList[x,y,m].add(new(m)); /*將清洗過并重新上線的執(zhí)行體n的結(jié)果數(shù)據(jù)加入結(jié)果池中*/ end if returnPoolList[x,y,m,n].remove(n); /*將占少數(shù)數(shù)據(jù)結(jié)果的執(zhí)行體n移出結(jié)果池并對其進行清洗操作*/ returnPoolList[x,y].P(σ)=PoolList[x,y].P(σ)+p2;/*執(zhí)行體x,y被共模攻擊概率增加p2*/ end if end if /*發(fā)生共模攻擊概率超過閾值次數(shù)加1*/ end if 結(jié)合基于混合數(shù)據(jù)類型工業(yè)協(xié)議的擬態(tài)裁決方法以及基于共模防御系數(shù)的調(diào)度算法,本文設計的針對擬態(tài)工業(yè)系統(tǒng)的調(diào)度裁決方法如圖5所示: 圖5 針對擬態(tài)工業(yè)系統(tǒng)的調(diào)度裁決方法 本文提出了一種面向擬態(tài)工業(yè)控制系統(tǒng)的調(diào)度方法與判決方法,為了驗證該方法的有效性,本節(jié)對HPF調(diào)度算法進行了仿真分析,并與文獻[9]提出的基于4個執(zhí)行體的隨機調(diào)度算法(Stochastic調(diào)度算法)進行了性能對比. 本文結(jié)合工程實際設計了一個具有4個異構(gòu)執(zhí)行體的工業(yè)控制系統(tǒng)模型,在仿真驗證環(huán)節(jié)中僅保留最基本的控制節(jié)點要素,即控制器單元、仲裁器和模擬IO單元.為模擬擬態(tài)工業(yè)控制系統(tǒng)的異構(gòu)特征,其中4個控制器單元采用不同架構(gòu)的處理器. 仿真環(huán)境的硬件架構(gòu)如圖6所示.其中4個主控單元(執(zhí)行體)與主備裁決器之間通過高速總線進行連接,主備裁決器與模擬IO之間通過環(huán)網(wǎng)連接,裁決器作為主控單元的輸入輸出代理,將主控單元的IO控制命令經(jīng)過裁決后通過環(huán)網(wǎng)下發(fā)給各IO設備,同時將各IO設備通過環(huán)網(wǎng)上送給裁決器,并由裁決器分發(fā)給各主控單元.裁決器由FPGA實現(xiàn),完成上文介紹的調(diào)度、判決和清洗策略,4個主控單元分別采用A7、M7、H7和龍芯架構(gòu). 工控系統(tǒng)往往需要處理許多敏感信息,包括溫度信息、閥門開關、運行控制等,若工控系統(tǒng)中存在后門程序,則攻擊者可以利用這些后門程序?qū)崿F(xiàn)快速、精確定位與攻擊.在本文仿真實驗情景中,通過白盒測試的方法向執(zhí)行體中植入后門程序進行測試驗證. 我們通過簡單的代碼來模擬溫度數(shù)據(jù)觸發(fā)后門攻擊,程序?qū)崿F(xiàn)為當輸入的溫度數(shù)據(jù)為預先設置的值時即達到觸發(fā)條件,其攻擊觸發(fā)結(jié)果為導致IO設備關機.分別在各個執(zhí)行體的程序中注入可以造成共模攻擊的后門程序,若輸入的是某些特殊的溫度數(shù)據(jù)則會觸發(fā)相應的共模攻擊. 仿真時假設攻擊者攻擊成功這一事件可視為服從失效率為λ的指數(shù)分布[16],其中λ表示攻擊致失效的難度,概率密度用f(t)=λe-λt表示,則單個執(zhí)行體失效概率為 (5) 通過式(5)可以說明攻擊者在開始的一段時間內(nèi)能夠迅速了解系統(tǒng)狀況,攻擊成功的概率迅速增加,隨著時間的增長,對于系統(tǒng)的了解程度逐漸變緩,攻擊的成功率慢慢趨近于1.為了量化執(zhí)行體結(jié)構(gòu)的差異性,本文利用文獻[17-18]中相似度度量方法,計算各執(zhí)行體之間在芯片架構(gòu)間的異構(gòu)度M,所以4個異構(gòu)執(zhí)行體間異構(gòu)度如表2所示. 表2 4個執(zhí)行體間異構(gòu)度 另外假設執(zhí)行體的恢復時間TH為100個控制周期,4個執(zhí)行體的攻擊致失效難度λ1=λ2=λ3=λ4=0.01. 首先對基于混合數(shù)據(jù)類型工業(yè)協(xié)議的擬態(tài)裁決方法(簡稱“模擬裁決方法”)與常規(guī)直接數(shù)字式擬態(tài)裁決方法(簡稱“數(shù)字式裁決方法”)的有效性進行仿真.各執(zhí)行體的模擬量輸出計算方法如式(1)所示,為了簡化模型,其中各執(zhí)行體計算引起的歸一化誤差δi為0或1的隨機數(shù),仿真運行100個控制周期,并在這100個控制周期中引入10次真實攻擊輸入,觀察2種裁決方法能否正確裁決出異常結(jié)果. 圖7為模擬裁決方法與數(shù)字式裁決方法有效性仿真結(jié)果.從圖7可以看出,因各執(zhí)行體浮點數(shù)據(jù)計算精度存在差異,數(shù)字式裁決方法是通過各執(zhí)行體輸出兩兩比較是否一樣的比較方法,其將因精度差異導致的誤差錯誤裁決為異常結(jié)果,而模擬裁決方法能夠通過設置一定的誤差閾值過濾掉因精度差異導致的裁決錯誤結(jié)果,并能正確裁決出真正因攻擊導致的異常結(jié)果.因此基于混合數(shù)據(jù)類型工業(yè)協(xié)議的擬態(tài)裁決方法能有效解決因各執(zhí)行體計算誤差引起的攻擊誤判或攻擊逃逸問題. 圖7 模擬裁決方法與數(shù)字式裁決方法有效性比較 然后對2種算法在差模攻擊下的安全性能進行仿真.根據(jù)調(diào)度算法的設計,當某一執(zhí)行體被攻擊后會被清洗,因此在該執(zhí)行體從清洗到恢復的過程中系統(tǒng)處于安全降級狀態(tài),此時執(zhí)行體集被成功攻擊概率的關系函數(shù)如式(6)所示: (6) 其中 (7) 而HPF調(diào)度算法在差模攻擊下將異構(gòu)度作為調(diào)度依據(jù),此時執(zhí)行體集被成功攻擊概率的關系函數(shù)如式(8)所示: (8) 安全性能的仿真結(jié)果如圖8所示.在實驗中分別對2個算法進行了10萬個控制周期的仿真,從圖8可以看出HPF調(diào)度算法和Stochastic調(diào)度算法在控制周期的開始階段,系統(tǒng)攻擊成功的概率增加,隨著時間的增長,攻擊的成功率趨近于0.在使用HPF調(diào)度算法時系統(tǒng)的攻擊成功率要低于使用Stochastic調(diào)度算法時系統(tǒng)的攻擊成功率,說明HPF調(diào)度算法的安全性能較Stochastic調(diào)度算法有所提高. 圖8 差模攻擊下的2種算法的安全性能 當系統(tǒng)遭受到攻擊者發(fā)起的2階共模攻擊時,系統(tǒng)分別使用HPF調(diào)度算法和Stochastic調(diào)度算法的攻擊成功率如圖9所示,實驗中分別對2種算法進行了10萬個控制周期的仿真. 圖9 2階共模攻擊下2種算法的安全性能 從圖9可以看出,在使用HPF調(diào)度算法時系統(tǒng)的2階共模攻擊成功率要低于使用Stochastic調(diào)度算法時攻擊成功率.由于HPF調(diào)度算法在識別系統(tǒng)遭受到2階共模攻擊后,利用共模防御系數(shù)對執(zhí)行體進行判定,選取共模防御系數(shù)小的執(zhí)行體組合,相較于Stochastic調(diào)度算法的隨機選取,共模攻擊成功率較低. 在運行1萬個周期后,HPF調(diào)度算法的共模防御系數(shù)的基于共模攻擊概率統(tǒng)計的機制生效,此后相對于Stochastic調(diào)度算法,HPF調(diào)度算法使得系統(tǒng)的共模攻擊成功率進一步降低. 當系統(tǒng)遭受2階共模攻擊后,分別使用HPF調(diào)度算法和Stochastic調(diào)度算法的下逃逸時間如圖10所示,分別對2種算法進行了100次的2階共模攻擊模擬.其中系統(tǒng)逃逸時間的坐標軸1個單位代表執(zhí)行體的恢復時間. 圖10 2種算法2階共模攻擊的逃逸時間 從圖10可以看出,由于HPF調(diào)度算法能夠識別2階共模攻擊,因此在2個執(zhí)行體的恢復時間內(nèi)可以消除系統(tǒng)的被攻擊狀態(tài),而Stochastic調(diào)度算法由于不能識別2階共模攻擊,采用隨機調(diào)度的策略,系統(tǒng)逃逸時間存在波動且大于使用HPF調(diào)度算法的逃逸時間. 當系統(tǒng)使用HPF調(diào)度算法遭受3階共模攻擊后的逃逸時間如圖11所示.實驗進行了20次的3階共模攻擊模擬.其中系統(tǒng)逃逸時間的坐標軸1個單位時間為1個控制周期.仿真時3階共模攻擊的敏感度設為10. 從圖11可以看出HPF調(diào)度算法在3階共模攻擊的次數(shù)到達敏感度以前采用的是四取三隨機調(diào)度的策略,因此在識別3階共模攻擊時取決于隨機調(diào)度的結(jié)果,系統(tǒng)的逃逸時間存在波動,但當HPF調(diào)度算法檢測3階共模攻擊的次數(shù)到達敏感度以后,采用四余度裁決,此時能夠快速識別3階共模攻擊,因此之后的系統(tǒng)逃逸時間穩(wěn)定在最小. 圖11 在敏感度設置為10的情況下HPF調(diào)度算法3階共模攻擊逃逸時間 擬態(tài)的核心思想是通過擬態(tài)控制層的調(diào)度判決,使得系統(tǒng)呈現(xiàn)動態(tài)化、隨機化的屬性,來進行主動防御.但是目前的調(diào)度方法和判決方法并不能很好地適應擬態(tài)防御工業(yè)系統(tǒng)的應用場景.本文首先設計了一種基于混合數(shù)據(jù)類型工業(yè)協(xié)議的擬態(tài)裁決方法,高效準確地解決了混合數(shù)據(jù)類型工業(yè)協(xié)議裁決問題;然后本文設計了基于共模防御系數(shù)的調(diào)度方法,能夠有效主動地防御攻擊者的入侵.仿真結(jié)果表明,該裁決調(diào)度方法在保證安全性能的同時,能夠快速識別共模攻擊,并能有效減小系統(tǒng)共模逃逸的時間.在后續(xù)研究中,將對該算法做相關優(yōu)化,使之具有更好的實用性.4 仿真實驗
4.1 仿真環(huán)境
4.2 仿真測試方法
4.3 仿真結(jié)果
5 結(jié)束語