尚文利,敖建松,趙劍明,劉賢達,尹 隆
(中國科學院沈陽自動化研究所,沈陽110016)
(中國科學院機器人與智能制造創(chuàng)新研究院,沈陽110016)
(中科院網絡化控制系統重點實驗室,沈陽110016)
(中國科學院大學,北京100049)
態(tài)勢感知(Situation awareness)是一種從宏觀的角度上去理解系統現狀,判斷是否遭受攻擊,并預測系統未來發(fā)展趨勢,從而提前做好防護動作,阻止系統態(tài)勢進一步惡化的手段[1].其概念起源于軍事對抗研究,其目的是結合敵我雙方的現狀,以及戰(zhàn)場上的各種實時因素,預判敵人的下一動作.Endsley[2-4]將其歸納總結為三個階段:態(tài)勢要素獲取,態(tài)勢理解,態(tài)勢預測.Bass[5]結合態(tài)勢感知概念,發(fā)現傳統安全檢測手段的局限性,提出網絡安全態(tài)勢感知(NSSA),和應用于多傳感器數據融合的網絡空間態(tài)勢感知框架;文志誠等[6]通過構造隱馬爾可夫模型,利用時間序列分析方法刻畫不同時刻安全態(tài)勢的前后依賴關系,當安全態(tài)勢偏離正常時,啟動態(tài)勢預測的機制,預測系統未來態(tài)勢.Fava 等[7]提出了通過IDS 的報警記錄來建立詞綴樹,并且通過詞綴樹來訓練出長度可變的馬爾可夫模型(VLMM),進而預測出攻擊者的下一步攻擊.
為了更好的應對越來越多的工控系統網絡安全挑戰(zhàn),對工控系統安全態(tài)勢感知技術的研究也逐漸開始.Evesti 等[8]借助態(tài)勢感知實現工控系統的自適應安全,輔助系統管理人員制定安全決策;曾偉兵等[9]結合當前工業(yè)控制系統的特點,提出一種基于多Agent 協同處理技術設計開發(fā)了惡意代碼行為捕獲原型系統并利用一種改進的模型算法,能實現對系統中的惡意節(jié)點快速定位;Hoffman B 等[10]通過分析震網病毒案例,把整個對工控系統的攻擊過程抽象成含有6 個攻擊階段的態(tài)勢鏈,通過對系統中各個節(jié)點的報警信息融合處理,理解系統當前處于某個階段,便可通過態(tài)勢鏈預測系統下一個即將到達的攻擊階段,提前對系統進行相應的安全防護.雖取得一系列初步的成果,但目前工控系統安全態(tài)勢感知技術大多仍停留在理論研究階段,主要原因在于:其一目前針對工控系統的信息安全需求以及技術研究尚不成熟,其二,在工控系統網絡安全領域缺少足夠的數據支撐.
本文結合工控系統的實際運行特點,考慮當前大多數工控系統網絡入侵的最終目的就是通過網絡層的入侵實現對控制指令的篡改,使現場控制層某些變量數據發(fā)生異常變化,從而對整個系統造成實質的破壞,所以工控系統現場控制層安全狀況很大程度上表征了整個系統的安全狀況.由于現代工業(yè)控制系統多為非線性復雜控制系統,其現場控制層數據通常具有維度高、數據量大,且不同節(jié)點的數據之間存在著非線性相關關系的特點,而態(tài)勢感知的最終目的是實現實時的把控系統安全,并對系統未來的運行狀況實現精確預測,無論是從實時性還是模型的精確性的角度來講,都需要對原始數據實現降維,壓縮數據空間,過濾掉冗余信息,提煉出有用的數據信息.
本文通過深度學習中的去噪自編碼器來對原始數據進行處理,提煉出有效的安全態(tài)勢要素作為后續(xù)態(tài)勢理解算法的輸入,再利用K-means 等聚類算法實現系統正常狀態(tài)空間建模,通過實時檢測的數據,度量出實時狀態(tài)的偏離程度,最后利用長度為L 的滑動窗口來基于時間維度上的融合計算,得到實時系統的態(tài)勢,為后續(xù)態(tài)勢預測提供合理有效的輸入.
工業(yè)控制系統易受到各種惡意攻擊[11],文獻[11]給出了詳細的闡述,其中不法黑客常見的攻擊手段為惡意數據注入攻擊[12],其目的是為了惡意的篡改工控系統的控制現場層中的某些參數變量,從而使其偏離正常運行狀態(tài),對系統造成破壞.
而在態(tài)勢感知模型研究中,最基礎也是最重要的一層是態(tài)勢要素提取層,結合被惡意數據注入攻擊的系統的數據行為特點,通常需要對系統中各個位置節(jié)點的數據信息進行歸納總結[13],去除掉冗余和無效的數據信息,保留下可以表征系統態(tài)勢的有效數據信息.而對工控系統而言,其控制現場層的各個位置存在大量的傳感器節(jié)點,所采集的數據為多變量大數據集,多變量數據提供了豐富的數據信息,但是一定程度上增加了數據采集和存儲的成本;作為非線性復雜控制系統,各個節(jié)點之間很大概率存在著強烈的非線性相關性,若直接作為輸入進行后續(xù)的模型建立,會導致模型復雜度過高,泛化性偏低,直接影響整個態(tài)勢感知模型輸出的可靠性,而直接對單個節(jié)點的數據進行分析剔除又不能完全利用數據中蘊含的信息,導致損失過多的有效信息,所以需要用到機器學習或者深度學習領域中的降維算法來實現從原始規(guī)模的數據中精煉出有效的數據信息,在減少數據維度的同時,最大化的保留有效的數據信息.
PCA,即主成分分析方法,是機器學習領域中被廣泛使用的一種線性降維算法,其核心思想是把M 維數據通過線性變換,轉換為N 維數據,其中M>N,從而達到一個壓縮原始數據空間的效果,使后續(xù)的模型或者算法在計算速度更快,消除了原有特征之間的相關度,減少數據信息的冗余,提高模型的精度[14,15].
具體算法步驟如下:
Step 1.對每個維度進行去除平均值:

Step 2.計算協方差矩陣:

Step 3.計算協方差矩陣的特征值和對應的特征向量;
Step 4.將特征值從大到小排序;
Step 5.保留上面對應的N 個特征向量,組成矩陣P;
Step 6.將數據轉到上述N 個特征向量構建的空間中:

得到降到N 維后的數據.
該算法對數據量較少且數據特征之間僅僅存在線性相關性的數據集具有很好的降維效果,但是在對工控系統現場控制層的數據進行處理時該算法的局限性就被放大了,這是因為現實中工控系統運行過程中所采集數據量大,且各節(jié)點之間存在著未知的非線性相關性.
自編碼器(AE)是一種神經網絡,也是一種無監(jiān)督學習算法,它可以使用自身的高階特征來編碼自己,它的基本思想是通過設置隱藏層的神經元個數來決定數據變換之后的維度,同時通過隱藏層的輸出重構自己,使最后整個網絡的輸入和輸出一致,多用于數據的壓縮降維,見圖1.它相比于PCA等降維方法而言非線性泛化性更好,它既能表征線性變換又能表征非線性變換[16].

圖1 自編碼器Fig.1 Autoencoder
自編碼器的整個過程可以由下式表示:

h 代表整個編碼解碼過程,W 和b 是需要通過數據訓練出的參數,隱藏層的輸出就是數據通過自編碼器降維之后的結果,再把隱藏層的輸出進行重構,使整個自編碼器的輸出x'最大的逼近輸入x,式(4)是該訓練過程的損失函數:

損失函數度量了x'與x 的差異,式(5)代表編碼過程,也代表隱藏層輸出;式(6)是解碼過程,對隱藏層的輸出進行重構得到x';W1,b1和W2,b2分別是通過數據訓練得到的編碼和解碼過程的權值和偏差,σ()為非線性激勵函數,通常也叫神經元的激活函數,本文使用的是sigmoid 函數:

整個訓練過程可以通俗的描述為不斷的調整W1,b1和W2,b2,取使損失函數達到最小時候的 W1,b1作為最終數據降維的參數.
自編碼器(AE)現在廣泛運用于數據降維以及自動特征提取領域.文獻[17]中以自編碼器為理論基礎,對KDD99 等相關數據集實現自動特征的提取,最后結合隨機森林等淺學習方法,實現對攻擊數據的高精度的檢測,該方式不僅降低了數據維度,減少了后續(xù)分類模型的計算消耗和提高了模型的精確性;文獻[18]提出一種稀疏去噪自編碼器的入侵檢測方法,該方法針對傳統淺層的入侵檢測方法無法有效解決高維網絡入侵數據的問題,利用改進的稀疏去噪自編碼器對數據進行降維,最后利用softmax 分類器進行檢測,實驗結果證明,該方法提高了將近5%的準確率.
上述研究成果表明自編碼對高維數據進行適當的處理降維后能大幅提高后續(xù)建立的模型性能.而本文根據工控系統現場控制層的數據特點,采用去噪自編碼器來對數據進行降維處理,去噪自編碼器(DAE)是基于傳統自編碼器的理論基礎改進得到的一種神經網絡[19,20],基本結構與圖2 基本一致,它與傳統自編碼器的區(qū)別在于對訓練數據按照規(guī)定的分布加入適量的隨機噪聲,輸出標簽仍然是原來的樣本,進行訓練,使其訓練出來的模型更具有魯棒性,可以提取出更好的數據信息.

圖2 工業(yè)控制系統態(tài)勢感知流程圖Fig.2 Situation awareness model of industrial control system
聚類算法是一種無監(jiān)督學習的算法,它的主要作用就是把一個數據集劃分成多個類;在回歸、分類等有監(jiān)督學習任務中要定義輸入數據的類別標簽,以此來訓練出對應的模型;但是聚類算法的輸入數據沒有類別標簽,所以適用于許多難以獲取帶標簽數據的應用[21-25],在本文中主要被用于進行工控系統現場控制層的正常狀態(tài)空間的建模工作.
聚類算法的核心思想是基于數據之間的相似性來對其進行分類,所以不同的聚類算法具有不同的相似度定義.盡管現在已經存在多種聚類算法,但是'最好'的聚類算法還是依賴具體的應用場景和輸入對象的類型格式等,針對本文使用的實驗數據集而言,使用K-means 來構建的態(tài)勢理解算法的輸出已經滿足預期的效果.
K-means 算法是聚類算法中比較簡單的迭代型聚類算法,實現簡單,速度快,便于理解和修改,是現實中使用最廣泛的一種聚類算法,該算法中,每一個聚出來的類用一個點Xn來代表,n 是代表數據的維度,這個點也被稱為聚類中心,而最終會有多少個聚類中心是輸入的時候人為設定的,也就是k 值,它決定了輸入的數據聚類的類別數量.這些聚類中心可以用一個集合表示K-means算法的相似度是默認用歐幾里得距離來度量,訓練過程是通過對聚類中心的更新迭代最小化如下的代價函數:

具體算法步驟如下:
Step 1.確定 k 值;
Step 2.從輸入的數據集D 中隨機挑選k 個數據點,構成初始的聚類中心集合C;
Step 3.依次計算數據集D 中每個數據點與集合C 中各個聚類中心的歐幾里得距離,把該數據點分配給距離最小的聚類中心;這一步會對所有的數據點都指定一個聚類中心;
Step 4.更新聚類中心,計算所有分配給該聚類中心的數據點的中心,比如算數平均數,得到該類新的聚類中心;
Step 5.重復 Step 3 和 Step 4,直至 Loss 最小化收斂.
K-means 算法對初始聚類中心集和k 值非常敏感,換句話說,能否把真正屬于同一類的數據點聚到一起很大程度上取決于初始聚類中心的挑選和k 值的大小.有很多辦法針對上訴的問題,防止K-means 局部收斂,以及一些關于聚類中心初始化問題[26-28],本文使用多次隨機抽取聚類中心和k 值來運行算法,然后挑選出最好的結果.
整個工控系統態(tài)勢感知模型主要分為3 個階段:態(tài)勢要素提取,態(tài)勢理解,態(tài)勢預測;每一個階段都依賴上一個階段的輸出.
其中態(tài)勢要素提取層作為基礎層也是最重要的一層,它的作用是從系統中提取出一些能夠表征系統狀態(tài)的信息也叫做安全態(tài)勢要素,本文使用去噪自編碼器去掉冗余無效的信息實現自動的提取有效的態(tài)勢要素,把這些信息作為態(tài)勢理解層的輸入;態(tài)勢理解層對輸入進來的信息做融合分析處理,得到系統當前安全態(tài)勢;而態(tài)勢預測層就根據系統當前的態(tài)勢來預測系統未來時間的態(tài)勢,配合安全管理人員做出正確的防護決策.
態(tài)勢理解算法主要是為了直觀的呈現出系統實時的安全狀況,從工控系統現場控制層數據中提取出有效的態(tài)勢要素,并進行合理的融合,實現當前態(tài)勢理解.
本文提出的工控系統態(tài)勢理解算法流程如圖3 所示,具體步驟如下:
Step 1.在歷史數據庫中取出系統正常運行時段的現場控制層所收集的數據;
Step 2.利用去噪自編碼器對數據進行壓縮降維,得到過濾掉冗余信息,保留主要信息的數據,并保留模型參數,以便后續(xù)實時檢測階段中對輸入的樣本進行態(tài)勢要素提取;

圖3 基于DAE 的工控系統態(tài)勢理解算法流程圖Fig.3 Flow chart of situation understanding algorithm for industrial control system
Step 3.對經過Step 2 變換之后的數據進行K-means 聚類,得到k 個聚類中心,和對應的k 個類別的數據集,對應k個正常運行工況;
Step 4.計算每個類別的數據集中每個數據點到對應的聚類中心的距離,取出最大值,記 dismax,得到集合 Dis=;
Step 5.對每個實時檢測到的數據做同樣的降維處理操作,并且計算到每個聚類中心的距離,得到Dis_t={dis_tj|j=1,2,3…k},再計算 d=Dis_t-Dis,得到 d={dj=(dis_tj-};
Step 6.如果Adj∈d>0,則記該時刻系統狀態(tài)偏離系統正常工況的程度為ε=min (d),否則記ε=0.
Step 7.以長度為L 的滑動窗口,在時間維度上對ε 進行融合,統計得到該時刻 ε 的均值 εavg和方差 εs;均值反應了系統在當前時刻系統偏離正常工況的程度,方差體現了系統狀態(tài)的穩(wěn)定性,最終得到表征系統態(tài)勢的二元組S=(εavg,εs).
由于目前在工控安全領域還沒有一個標準的測試數據集,尤其是實際工控系統在攻擊下的數據更是難以獲取,結合參考文獻[12]的實驗思路,以及在攻擊情況下,工業(yè)控制系統現場控制層的數據變化情況,所以本文使用了比較符合研究場景的Tenessee Eastman(TE)化工仿真數據集作為驗證數據集來說明算法的可執(zhí)行性和有效性.整個數據集由訓練集和測試集構成,包括正常狀態(tài)的數據和不同類型的異常狀態(tài)數據,不同類型的異常數據樣本中有960 個狀態(tài)數據,仿真時在第160 個時刻時引入異常,所以前160 個數據為正常數據,本文隨機取出4 個異常狀態(tài)數據樣本作為測試集進行實驗驗證,以異常工況1 和2 的數據樣本組成測試集1,異常工況3,4的數據樣本組成測試集2,在測試集中數據分布為:[1,160],[961,1120]時刻對應的數據為正常狀態(tài)數據,其他時刻區(qū)間內為異常狀態(tài)數據.
該數據集有52 個維度,表征系統運行時現場控制層中的各個傳感節(jié)點所檢測的數據,例如同一時刻不同節(jié)點所檢測的溫度,壓力等.該仿真系統屬于非線性復雜控制系統,有許多維度之間存在未知的非線性相關性,不利于后續(xù)要素融合計算處理,影響最終模型精度,所以需要使用去噪自編碼器進行數據變換,自動提取有效的數據信息,在保證最小化損失的前提下選擇變換之后的數據為42 維.
使用訓練集中1000 個正常狀態(tài)數據來對系統正常狀態(tài)空間進行建模.在進行K-means 算法聚類的時候,不斷的調整k 值,最終取k=5 時,聚類效果最好.而在現實的工控系統運行中,幾乎正常工況的個數是有一個確定值的,所以k 的取值可以根據不同的系統以及相關專業(yè)人員的知識確定,也可以使用輪廓系數法確定,達到最好的聚類效果.

圖4 測試集1 中各時刻εavgFig.4 εavg at each time in test set 1
最后以四個異常狀態(tài)數據樣本作為測試集,整個算法輸出各個時刻系統實時狀態(tài)偏離正常狀態(tài)空間的程度εavg和穩(wěn)定性大小εs如圖4 所示.

圖5 測試集1 中各時刻εsFig.5 εsat each time in test set 1
由圖4-圖7 可得,由本文所提算法輸出的結果與測試集中數據分布幾乎一致,即:在系統正常運行時段內,由算法輸出的εavg和εs為0 或者近乎為0,而在系統異常運行時段內,所對應時刻的εavg和εs都幾乎大于0.

圖6 測試集2 中各時刻εavgFig.6 εavgat each time in test set 2

圖7 測試集2 中各時刻εsFig.7 εsat each time in test set 2
由表1 和表2 可得,本文所提算法可以在對數據實現壓縮降低算法復雜度的前提下,仍然可以很好的把異常狀態(tài)數據和正常狀態(tài)數據區(qū)別開來.例如在表1 中,在t=80 或t=965 等系統安全運行的時段內,S=(0,0),表明系統在這些時刻正常運行,而在其他時刻諸如t=180 或t=750 等時刻,S中兩個元素均大于0,說明系統在這些時刻運行狀態(tài)異常,并且在系統狀態(tài)異常情況下,通過S 中兩個元素的數值大小來直觀的呈現出系統危險程度,就表1 中t=180 和t=750 兩個時刻而言,通過對 εavg和 εs兩個值的比較:St=180(0.72,0.060)>St=750(0.068,0.002),說明系統狀態(tài)在 t=180 時刻偏離正常狀態(tài)空間程度更大,其穩(wěn)定性更差,整個系統的態(tài)勢更加危險.由表3 分析可得,在使用去噪自編嗎器進行數據空間壓縮的前提下,該算法的時間復雜度大大的減少,但是另一方面可以發(fā)現其檢測精度有略微的下降,這是因為該數據集維度和數量對比現實中系統產生的數據來說還是太小,數據信息的冗余程度過于理想,導致數據降維損失了部分信息,但即使這樣,相比于時間成本的降低,其精度損失在大多數場景下也可以被接受,這也為該算法在實際處理大量高維數據的場景中保證檢測的實時性和精確性提供了可能性.

表1 測試集1 部分時刻對應檢測結果Table 1 Test set 1 partial time corresponding test results

表2 測試集2 部分時刻對應檢測結果Table 2 Test set 2 partial time corresponding test results

表3 算法運行結果對比Table 3 Comparisons of algorithm running results
結合文獻[12]和上述相關分析可知,被潛伏性惡意數據攻擊的工控系統其現場控制層所產生的數據會緩慢的并且有規(guī)律可循偏離系統狀態(tài)空間,從而使后續(xù)態(tài)勢預測階段可以基于態(tài)勢理解算法的輸出作時間序列上的預測,估計出系統未來時刻的整體安全態(tài)勢走向,提前作出安全防護決策.
本文提出了一種基于DAE 的工控系統態(tài)勢理解算法.該算法針對工控系統現場控制層的數據量大,維度高,且存在大量未知的非線性相關性的特點,利用去噪自編碼器提取出可以表征系統態(tài)勢的數據信息(態(tài)勢要素)并作為后續(xù)結合K-means 所構建的態(tài)勢理解算法的輸入,最終在滿足算法檢測精度的同時,由于數據維度的降低,實現了時間復雜度的降低;最后實驗證明本文提出的算法能在檢測到系統異常狀態(tài)的基礎上實現對系統安全狀況的直觀呈現,量化之后的態(tài)勢能為系統管理人員提供可靠的決策信息,也為后續(xù)態(tài)勢預測研究提供有效的輸入.
工控系統態(tài)勢感知研究領域目前尚處于起步階段,本文為態(tài)勢感知研究提供了一種新思路,但是在態(tài)勢感知的工控獨特要求及針對性方法設計方面還有待完善,仍需要更多的探索.