陳土生
(廣東工業(yè)大學(xué)計算機學(xué)院,廣州 510006)
SCADA(Supervisory Control And Data Acquisition,數(shù)據(jù)采集與監(jiān)控系統(tǒng))系統(tǒng)廣泛應(yīng)用于電力、天然氣、水利和石油石化等重要行業(yè),實現(xiàn)監(jiān)視控制和數(shù)據(jù)采集功能,從而保障系統(tǒng)的正常運作[1]。以前SCADA系統(tǒng)使用專有的通信機制和協(xié)議,與外部公共網(wǎng)絡(luò)是隔離的,這保障了它的安全性;如今,為了提高資源配置和生產(chǎn)的效率,SCADA系統(tǒng)開始接入因特網(wǎng),安全問題也隨之產(chǎn)生[2]。例如:2010年,伊朗核電站因為Stuxnet蠕蟲病毒的感染推遲了發(fā)電[3];2011年出現(xiàn)了一種潛伏在工控系統(tǒng)中的Duqu病毒,目的是竊取數(shù)據(jù)信息和獲取遠(yuǎn)程接入權(quán)限[4];2012年,黑客攻擊者利用Flame病毒攻擊SCADA系統(tǒng),以實現(xiàn)對其遠(yuǎn)程操控,嚴(yán)重危害了系統(tǒng)安全[5];2014年出現(xiàn)的Havex病毒可以通過郵件和釣魚等方式攻擊工控系統(tǒng)[6]。面對工控網(wǎng)絡(luò)安全事件的頻繁出現(xiàn),工業(yè)控制系統(tǒng)入侵檢測技術(shù)成為了國內(nèi)外研究的熱點。
傳統(tǒng)機器學(xué)習(xí)算法被應(yīng)用在入侵檢測中并取得了一定的成果,但是多屬于淺層學(xué)習(xí),在真實的工業(yè)環(huán)境中,連續(xù)工作的控制系統(tǒng)會產(chǎn)生大量、高維、非線性、時序性強的數(shù)據(jù),使得傳統(tǒng)的淺層學(xué)習(xí)方法存在局限性[7]。例如,SCADA網(wǎng)絡(luò)數(shù)據(jù)噪聲的存在,使得決策樹[8]容易出現(xiàn)過擬合,導(dǎo)致分類精度下降;支持向量機(SVM)[9-11]在處理大量數(shù)據(jù)時需要消耗大量的計算資源;人工神經(jīng)網(wǎng)絡(luò)(NN)[12-13]需要訓(xùn)練的參數(shù)多且無法表示數(shù)據(jù)在時間上的關(guān)系。因此,面對SCADA網(wǎng)絡(luò)中大量復(fù)雜數(shù)據(jù)的分類問題,基于傳統(tǒng)淺層機器學(xué)習(xí)的異常流量檢測方法不能有效處理。相對的,深度學(xué)習(xí)可通過深層非線性網(wǎng)絡(luò)結(jié)構(gòu)充分學(xué)習(xí)數(shù)據(jù)的特征,能夠解決海量高維數(shù)據(jù)的分析問題。深度學(xué)習(xí)的理念在2006年由Hinton等首次提出[14],目前在過程建模[15]、圖像分類[16]和語音識別[17]等領(lǐng)域獲得了很好的成果。近年來,深度學(xué)習(xí)被應(yīng)用到入侵領(lǐng)域。Tang等人[18]利用深層神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)對 NSL-KDD 數(shù)據(jù)集進行分類,在僅僅使用六個基本特征的情況下就達到了較好的分類效果。Yin等人[7]提出了RNN入侵檢測模型,但標(biāo)準(zhǔn)RNN存在梯度消失的問題,且對時間信息的記憶能力不足。於幫兵等人[19]將長短時記憶網(wǎng)絡(luò)(Long Short Term Memory,LSTM)應(yīng)用到了工控入侵檢測,改善了RNN梯度消失和時間記憶能力不足的問題,但是LSTM神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)較多,時間復(fù)雜度較大。
本文提出了一種基于Adam優(yōu)化GRU神經(jīng)網(wǎng)絡(luò)的SCADA系統(tǒng)入侵檢測方法,其能夠通過GRU神經(jīng)網(wǎng)絡(luò)深層結(jié)構(gòu)對數(shù)據(jù)特征充分學(xué)習(xí),利用更新門和重置門來保存數(shù)據(jù)在時間維度上的信息,解決了RNN梯度消失和記憶能力不足等問題,同時相對于LSTM減少了訓(xùn)練參數(shù)的個數(shù),降低了時間復(fù)雜度,并使用Adam算法優(yōu)化了神經(jīng)網(wǎng)絡(luò)的梯度訓(xùn)練過程,減少了訓(xùn)練時間。本文使用密西西比州立大學(xué)提出的SCADA系統(tǒng)標(biāo)準(zhǔn)數(shù)據(jù)集[20]對Adam優(yōu)化的GRU模型進行實驗驗證。為了解決原始的SCADA系統(tǒng)標(biāo)準(zhǔn)數(shù)據(jù)集中不同的特征間最值差異過大的問題,使用歸一化方法進行預(yù)處理,然后通過多次實驗調(diào)整GRU模型的參數(shù)得到較優(yōu)模型。最后把本文模型與 DNN[18]、SVM[10]、NN[12]等傳統(tǒng)機器學(xué)習(xí)方法和含有時間尺度的RNN[7]、LSTM[19]方法進行對比實驗,結(jié)果表明本文提出的算法可以更有效地處理SCADA系統(tǒng)入侵檢測問題。
RMSProp(Root Mean Square Prop)算法[21]是 Geoffrey E.Hinton提出的一種優(yōu)化算法,該算法對權(quán)重矩陣W和偏置矩陣b的梯度使用了微分平方加權(quán)平均數(shù),相對于Momentum算法進一步優(yōu)化了參數(shù)在更新過程中變化范圍過大的問題,并且進一步加快成本函數(shù)的收斂速度。假設(shè)在第t輪迭代過程中,RMSProp算法更新公式可以表示為:
其中,sdw和sdb分別是成本函數(shù)在前t-1輪迭代過程中累積的梯度和梯度動量,W和b分別為權(quán)值矩陣和偏置矩陣,α為學(xué)習(xí)率,β為梯度累積參數(shù),?為一個很小的數(shù)值,為了防止分母為零,一般為10-8。
原始RNN的隱藏層只有一個狀態(tài),只能記憶近期的輸入。為了解決該問題,Hochreiter和Schmidhuber[22]提出了長短時記憶網(wǎng)絡(luò)LSTM,添加了單元狀態(tài)(Cell State)c來保存長期的狀態(tài),如圖1所示。
圖1 RNN與LSTM隱藏狀態(tài)對比圖
LSTM使用“門”(Gate)來實現(xiàn)遺忘或記憶的功能。門實際是一個全連接層,由一個sigmoid函數(shù)和矩陣點乘操作組成。它的輸入是一個向量,輸出是一個0到1之間的實數(shù)向量。其中0代表完全丟棄,1代表完全通過。一個LSTM記憶單元由遺忘門(Forget Gate)、輸入門(Input Gate)和輸出門(Output Gate)組成。其中遺忘門控制上一時間步單元狀態(tài)的保留程度;輸入門決定當(dāng)前時間步的輸入保存到單元狀態(tài)的程度;單元狀態(tài)到記憶單元的最終輸出值則由輸出門決定。通過這種方法,當(dāng)誤差沿時間和上一層進行反向傳遞時,會被保持為更加恒定的水平,從而解決了梯度消失和梯度爆炸的問題。圖3顯示了LSTM記憶單元的基本構(gòu)造。上一時間步的輸出和單元狀態(tài),[· , ·]為矩陣拼接運算,Wf、Wi、Wc、Wo為權(quán)值矩陣,σ為sigmoid激活函數(shù),可以得到遺忘門ft、輸入門it、輸出門ot、輸入候選矩陣C't分別為:
圖2 LSTM記憶單元邏輯圖
圖2中,xt為t時刻的輸入,ht-1和Ct-1分別為為
至此,已經(jīng)有了遺忘門ft,用來控制上一時間步輸出被遺忘的程度;輸入門it,用來控制新信息被加入的多少和輸入候選矩陣C't,可以使用下面公式更新記憶單元的單元狀態(tài):
最后,先利用tanh函數(shù)將單元狀態(tài)Ct激活,輸出門ot控制單元狀態(tài)Ct被過濾的程度,從而得到最終輸出ht。
文獻[18]將LSTM應(yīng)用到了工控入侵檢測,并在工控標(biāo)準(zhǔn)數(shù)據(jù)集上驗證了其分類準(zhǔn)確率高于基于RNN入侵檢測方法。
原始的SCADA系統(tǒng)標(biāo)準(zhǔn)數(shù)據(jù)集中不同特征具有不同的量綱和取值范圍,為了消除特征之間的量綱影響,需要對數(shù)據(jù)進行歸一化處理。本文采用Min-Max標(biāo)準(zhǔn)化,對原始數(shù)據(jù)進行線性變換,使得結(jié)果值映射到[0,1]之間。轉(zhuǎn)換函數(shù)如下:
其中,max(x)和min(x)分別為樣本特征的最大值和最小值。
GRU神經(jīng)網(wǎng)絡(luò)是LSTM的一個改進,它在保持LSTM的效果同時精簡了結(jié)構(gòu),減少了訓(xùn)練參數(shù)的數(shù)量,降低了時間復(fù)雜度。LSTM的記憶模塊的結(jié)構(gòu)比較復(fù)雜,它實現(xiàn)了三個門計算,即遺忘門、輸入門和輸出門;而GRU只使用了兩個門,分別為更新門(Update Gate)和重置門(Reset Gate),即圖 3 的zt和rt,更新門用來控制前一時間步的狀態(tài)信息被帶入到當(dāng)前狀態(tài)中的程度,重置門用于控制忽略前一時間步的狀態(tài)信息的程度。
圖3 GRU記憶單元邏輯圖
圖3中,xt為t時刻的輸入,ht-1為上一時間步的輸出,可以得到記憶單元輸出ht的迭代計算公式為:
其中,Wr、Wz、Wh'為權(quán)值矩陣,zt和rt分別為更新們和重置們輸出,h't為輸入候選矩陣。
另外,為了加快權(quán)值矩陣的訓(xùn)練,梯度訓(xùn)練算法采用文獻[23]中的Adam算法。該算法充分利用了梯度的一階矩估計(First Moment Estimation)和二階矩估計(Second Moment Estimation),把 AdaGrad[24]算法和 RMSPro算法的優(yōu)點結(jié)合了起來,使得梯度更新的計算更加高效,對內(nèi)存需求更少,而且參數(shù)的更新不受梯度的伸縮變換影響,適用于大量數(shù)據(jù)及高維特征參數(shù)的場景,而且能夠解決梯度稀疏或梯度噪聲大的問題。其算法原理可以表示為:
其中,mt和vt分別為一階動量項和二階動量項,β1和β2分別為一階矩估計和二階矩估計的指數(shù)衰減率,一般分別取0.9和0.999,m't和v't分別為各自的修正值。Wt表示第t時間步的權(quán)值矩陣,gt表示第t時間步代價函數(shù)對于權(quán)值矩陣的梯度大?。沪翞閷W(xué)習(xí)率,?是一個取值很小的數(shù)(一般為1e-8),目的是避免分母為0。
基于GRU設(shè)計的工控入侵檢測算法整體流程如圖4所示。
本文采用的數(shù)據(jù)集為天然氣管道數(shù)據(jù)采集與監(jiān)控系統(tǒng)的網(wǎng)絡(luò)層數(shù)據(jù),是密西西比州立大學(xué)于2014年提出的SCADA系統(tǒng)入侵檢測標(biāo)準(zhǔn)數(shù)據(jù)集。數(shù)據(jù)集包含正常數(shù)據(jù)和7種不同攻擊類型的數(shù)據(jù),經(jīng)過了數(shù)值化處理后,每一條數(shù)據(jù)包含了1個類別標(biāo)簽和26個特征(命令地址、響應(yīng)地址、時間等)。表1表示了數(shù)據(jù)類別和標(biāo)簽的對應(yīng)關(guān)系。
表1數(shù)據(jù)描述
實驗的訓(xùn)練集包含了4000條數(shù)據(jù),測試集為1000條數(shù)據(jù),在5折交叉驗證意義下進行分類效果評價。本文實驗的仿真平臺為:Win10 64位操作系統(tǒng),Intel i3-3120M CPU 2.50GHz,8GB內(nèi)存,使用Keras深度學(xué)習(xí)框架(不使用GPU加速)。實驗參數(shù):隱藏層為1層,輸入層和輸出層向量維度分別為26和8,時間序列長度為200,梯度訓(xùn)練算法使用Adam算法,最大迭代次數(shù)epoch取100,每批次樣本數(shù)為200,學(xué)習(xí)率α初始值為0.001,在每個epoch中使用公式(22)更新學(xué)習(xí)率,一階矩估計和二階矩估計的指數(shù)衰減率β1和β2分別取0.99和0.999;為了獲取最優(yōu)模型,隱藏層單元個數(shù)選取20、50、80、100分別進行實驗。
準(zhǔn)確率ACC、召回率TPR和誤報率FPR是工控入侵檢測算法的典型評價指標(biāo)。表2為混淆矩陣,其中TP表示正確識別為攻擊類的樣本數(shù),F(xiàn)P為錯誤識別為攻擊類的樣本數(shù),TN為正確識別為正常類的樣本數(shù),F(xiàn)N為錯誤識別為正常類的樣本數(shù),由定義可以得到準(zhǔn)確率ACC、召回率TPR和誤報率FPR的公式為:
表2混淆矩陣
(1)基于GRU神經(jīng)網(wǎng)絡(luò)的SCADA系統(tǒng)入侵檢測模型
為了確定GRU神經(jīng)網(wǎng)絡(luò)隱藏層的節(jié)點數(shù),本文進行了多組對比實驗,根據(jù)準(zhǔn)確率ACC、召回率TPR、誤報率FPR和訓(xùn)練時間來找出分類效果最佳的參數(shù)。表3為實驗結(jié)果,故當(dāng)選取隱藏層節(jié)點為80時,分類準(zhǔn)確度為相對最優(yōu)的。
表3不同隱藏層節(jié)點下的效果
(2)對比實驗結(jié)果分析
為了驗證GRU神經(jīng)網(wǎng)絡(luò)模型在SCADA系統(tǒng)入侵檢測領(lǐng)域的優(yōu)越性,本文首先和具有時間尺度的RNN和LSTM進行對比實驗。另外,為了更加全面地考察本文算法在解決工控入侵檢測問題的效果,對不具有時間尺度的傳統(tǒng)機器學(xué)習(xí)算法,如:SVM、決策樹C4.5、ANN和DNN也進行了仿真實驗。最后在準(zhǔn)確率、召回率、誤報率和訓(xùn)練時間下進行比較,結(jié)果如表4所示。
表4不同算法的分類結(jié)果
從表4可以看出,GRU與LSTM的準(zhǔn)確率相差無幾,但是訓(xùn)練時間明顯少于LSTM,這是因為GRU比LSTM少了一個Gate,減少了矩陣乘法運算,當(dāng)訓(xùn)練集很大時GRU將會節(jié)省很多時間。另外,GRU的準(zhǔn)確率明顯高于RNN,因為當(dāng)記憶的時間步較大時,RNN存在梯度消失或梯度爆炸的問題,導(dǎo)致其時間記憶能力有限。同時,從表4可以看到,與不具有時間尺度的算法相比,GRU的效果最好,準(zhǔn)確率明顯大于C4.5、SVM和NN等傳統(tǒng)淺層機器學(xué)習(xí)算法,其中C4.5、SVM和NN的召回率相對較低,對攻擊類型數(shù)據(jù)的識別能力較差;DNN的準(zhǔn)確率接近GRU,但是其對攻擊數(shù)據(jù)的識別能力相對較差,召回率明顯小于GRU。上述算法對各種類別數(shù)據(jù)的準(zhǔn)確率如圖5所示,可以看出GRU在各種類別數(shù)據(jù)上的準(zhǔn)確率都較高,尤其是DoS(拒絕服務(wù)攻擊)和NMRI(簡單惡意響應(yīng)注入攻擊)的分類效果明顯好于其他算法;另外,全部算法對MFCI(惡意功能命令注入攻擊)的檢測效果都較差,但是對正常數(shù)據(jù)、MPCI(惡意參數(shù)命令注入攻擊)和RECO(偵查攻擊)的分類準(zhǔn)確率都很高。
圖5正常數(shù)據(jù)及各類攻擊數(shù)據(jù)檢測結(jié)果
面對SCADA系統(tǒng)中大量、高緯度、時序性強的網(wǎng)絡(luò)流量數(shù)據(jù),傳統(tǒng)的機器學(xué)習(xí)算法,如決策樹、SVM、NN等不能有效地提取數(shù)據(jù)的特征信息,為此,本文提出了基于Adam優(yōu)化GRU神經(jīng)網(wǎng)絡(luò)的SCADA系統(tǒng)入侵方法,利用GRU神經(jīng)網(wǎng)絡(luò)的深層結(jié)構(gòu)對數(shù)據(jù)特征進行充分學(xué)習(xí),使用更新門和重置們來保存數(shù)據(jù)在時間維度上的信息,解決了RNN時間記憶能力有限的問題,同時相對于LSTM簡化了記憶單元結(jié)構(gòu),在保持效果的同時減少了計算量,縮減了訓(xùn)練時間,并使用Adam算法優(yōu)化了神經(jīng)網(wǎng)絡(luò)的梯度訓(xùn)練過程,最后通過實驗構(gòu)了相對最優(yōu)的模型,和同樣具有時間尺度的LSTM、RNN以及C4.5、SVM、NN和DNN等傳統(tǒng)機器學(xué)習(xí)算法進行對比實驗,從總體檢測效果(準(zhǔn)確率、召回率、誤報率、平均訓(xùn)練時間)和不同類別數(shù)據(jù)檢測效果兩個方面進行了分析。結(jié)果表明本文方法的效果最好,總體分類準(zhǔn)確率明顯大于C4.5、SVM和NN等傳統(tǒng)淺層機器學(xué)習(xí)算法和RNN,和LSTM準(zhǔn)確率基本相同但大幅度減少了訓(xùn)練時間,另外本文方法在各種類別數(shù)據(jù)上的分類準(zhǔn)確率都較高,尤其是DoS和NMRI的分類效果明顯好于其他算法。因此基于Adam優(yōu)化的GRU神經(jīng)網(wǎng)絡(luò)入侵檢測方法非常適用于海量高維時序性強的工控數(shù)據(jù)的入侵檢測問題,為SCADA系統(tǒng)的入侵檢測提供了一種新的方法。