宗學軍 金 瓊 李鵬程
(沈陽化工大學信息工程學院 遼寧 沈陽 110142)
在信息化和工業化的深度融合過程中,工業控制系統(Industrial Control System, ICS)的發展呈現出開放的趨勢,逐漸地使用標準化的網絡協議和公開透明的應用軟件,甚至打破傳統的局域網內部控制與企業網絡互聯,因此ICS面臨的安全形勢越來越嚴峻[1]。2010 年“震網”病毒的爆發讓全球意識到ICS已成為黑客的主要目標,由2014年10月韓國核電站病毒、2015年12月烏克蘭電網斷電、2016年3月德國核電站病毒等工業安全事件的發生可以看出ICN安全問題日益突出[2]。
入侵檢測系統(Intrusion Detection System,IDS)是一種對網絡傳輸數據實時監視,并對數據進行識別和預警的網絡安全防護技術[3]。通過機器學[4]和深度學習[5]建立入侵檢測模型,用于快速有效區分正常流量和攻擊行為,對攻擊行為進行預警。隨著傳統工業轉型升級,網絡安全威脅日益向工業領域蔓延,工業入侵檢測[6]逐漸成為ICN安全的研究熱點。
在工業入侵檢測算法方面的研究中,文獻[7]將單類SVM算法應用到Modbus TCP/IP協議下的異常檢測中,但是文中尚未解決多分類問題,大數據樣本實施難度也比較大;文獻[8]將KNN算法應用于工業控制系統中間人攻擊檢測中,但是當數據維度高、樣本不平衡時,檢測效果比較差;文獻[9]對6種機器學習算法進行對比,結果表明決策樹算法表現最好,但是對某些攻擊類別召回率偏低的問題仍未解決;文獻[10]使用borderline-SMOTE算法解決了數據不平衡的問題,在小樣本數據條件下檢測效果很好,但是未在其他數據集上驗證方法的可行性;文獻[11]將自動編碼器應用于特征提取,但是檢測效果相對其他研究而言還有一些不足。
通過上述分析可知,ICN數據中存在著攻擊樣本不平衡、樣本特征維度高的問題,這些問題都會影響檢測效果。樣本不平衡導致訓練的模型偏向多數類,忽視少數類,對少數類別的檢測效果較差;特征維度高導致模型提取重要特征的難度變大,使得整體的檢測效果較差。在入侵檢測領域中,傳統的機器學習模型雖然已經做出巨大貢獻,但是檢測效果還有很多不足。相比之下,當前的深度學習模型雖然也沒有很好地解決上述問題,但是它具有更強的學習能力,也能夠達到更好的檢測效果。
目前,深度學習廣泛應用在語音處理、計算機視覺、自然語言處理等領域,近幾年來也逐漸應用在入侵檢測領域。在計算機視覺領域中,生成對抗網絡(Generative Adversarial Networks,GAN)被應用在圖像識別[12]、圖像生成[13]等方面。通過利用GAN圖像生成的能力來進行攻擊樣本數據生成,可以解決樣本不平衡的問題。稀疏自編碼器(Sparse Auto-Encoder,SAE)被應用在圖像分類[14]、特征提取[15]等方面。同樣,通過利用SAE特征提取的能力來進行數據降維,可以解決樣本特征維度高的問題。在本文入侵檢測算法的研究過程中,為了能夠取得更好的檢測效果,首先使用GAN的變體結構ACGAN,半監督學習的ACGAN與無監督學習的GAN相比,ACGAN優勢在于可以通過向輸入中增加標簽信息不斷調節生成的數據類別,對不平衡樣本的數據增強效果更好;其次使用SAE的改進結構BN-SSAE,通過改變內部網絡結構提高特征學習的能力,對特征維度高樣本的特征提取效果更好。因此,本文提出ACGAN與BN-SSAE相結合的方法,增強工業入侵檢測的效果。
本文以ACGAN、BN-SSAE和MLP為基礎,建立工業入侵檢測模型,如圖1所示。模型主要由數據分析及預處理、數據增強、特征提取、分類器組成。模型主要分為四個模塊,通過模塊化設計使模型調參變得簡單,同時模塊之間各司其職,使模型具有良好的擴展性和應用性。模型的主要工作流程,首先輸入ICN原始數據,然后經過四個模塊處理,最后輸出檢測結果。

圖1 工業入侵檢測模型
ICN原始數據不能直接用于入侵檢測研究,在此之前需要對原始數據進行分析及預處理。
假設ICN原始數據Xraw={x1,x2,…,xn,y},其中:{x1,x2,…,xn}表示數據n個特征;y是標簽值。
連續型特征min-max歸一化,即:
(1)


在ICN數據中經常出現由于某些攻擊類別樣本較少而導致的樣本不平衡問題,這嚴重影響了模型對不平衡類別的檢測能力。本文提出一種ACGAN[16]數據增強算法。通過將生成不平衡類別的樣本加到數據中,使樣本分布更加合理,提高模型對少數類別的檢測能力。需要注意的是,不能過度地增加樣本,否則會導致模型過擬合。本文的ACGAN結構如圖2所示。

圖2 ACGAN結構
ACGAN基本網絡結構由數據輸入層、噪聲輸入層、生成器網絡、判別器網絡和輸出層構成。本文設計的ACGAN中生成器網絡和判別器網絡都是MLP構成,包含輸入層、隱藏層和輸出層,MLP結構簡單收斂速度快,可以很好地實現生成器網絡和判別器網絡的功能。
h1=f1([z,y′]·w1+b1)
(2)
xfake=f2(h1·w2+b2)
(3)
式中:f1為非線性激活函數ReLU;f2為非線性激活函數Sigmoid;w1、w2為權重矩陣;b1、b2為偏置向量。
將真數據xreal與假數據xfake輸入判別器D,判別數據來源的真假(real或fake)和數據類型y1,y2,…,yn。在判別器網絡中,輸入真數據xreal時:
h2=f3(xreal·w3+b3)
(4)
sreal=f4(h2·w4+b4)
(5)
yreal=h2·w5+b5
(6)
輸入假數據xfake時:
h3=f3(xfake·w3+b3)
(7)
sfake=f4(h3·w4+b4)
(8)
yreal=h3·w5+b5
(9)
式中:f3為非線性激活函數ReLU;f4為非線性激活函數Sigmoid;w3、w4、w5為權重矩陣;b3、b4、b5為偏置向量。
損失函數包含真假數據來源(S)判別損失和樣本標簽(Y)判別損失。真假來源采用對數損失函數,如式(10)和式(11)所示;樣本標簽采用多分類交叉熵損失函數,如式(12)和式(13)所示。
L1=-Elog(1-sfake)
(10)
L2=-Elogsreal
(11)
(12)
(13)
生成器G損失函數為LG=L1+L3;判別器D損失函數為LD=L1+L2+L3+L4。
生成器G通過對LG的優化,提高“造假能力”,判別器D通過對LD的優化,提高“判別能力”,G和D通過互相博弈,不斷調節生成器和判別器網絡參數,最終達到一種穩定平衡狀態,輸出數據X″。
ICN數據由于特征維度較高導致提取重要特征難度大,直接影響模型最終檢測效果。本文提出一種SSAE算法,對數據逐層降維,深層次特征提取,提高模型的檢測能力。本文設計的BN-SSAE由三個正則化稀疏自編碼器(Batch Normalization Sparse Auto-Encoder,BN-SAE)[17]構成,單個BN-SAE由Input層、Dropout層、Encode層、BatchNormalization(BN)層、Decode層和Output層組成。
n=f(m)=s(m·w+p)
(14)
式中:f是編碼函數;s是非線性激活函數ReLU;w是權重矩陣;p是偏置向量。
在BN層中,對該層的數據批歸一化,通過引入可學習重構參數λ、γ,加快神經網絡收斂速度,防止梯度消失和爆炸,即:
(15)

在Decode層中:
(16)
式中:g是解碼函數;s是非線性激活函數ReLU;wT是Encode層w權重矩陣的轉置;q是偏置向量。
單個BN-SAE代價函數包括重構損失和稀疏損失,即:
JBN-SAE(θ)=JMSE(θ)+Jsparse(θ)
(17)
重構損失采用均方差損失函數,即:
(18)
(19)
單個BN-SAE的代價函數為:
(20)
式中:β為權重系數,用來控制稀疏約束項。
單個BN-SAE的特征提取能力不足,表達能力有限。為了使模型的學習能力更強,將三個BN-SAE上下級聯形成棧式結構,棧式BN-SAE結構如圖3所示。采用逐層貪婪法進行無監督預訓練,保存預訓練過程中三個BN-SAE中BN層和Encode層權重矩陣,將權重矩陣傳遞給重新構建的BN-SSAE結構如圖4所示,再對BN-SSAE整體參數進行微調,得到最佳結構。通過對三個BN-SAE代價函數的優化來實現對整個BN-SSAE的優化。

圖3 棧式BN-SAE結構

圖4 BN-SSAE結構

y=fdence(Wdence·n+bdence)
(21)
(22)
式中:Wdence為全連接層權重矩陣;bdence為偏置向量;fdence為非線性激活函數ReLU;yi為全連接輸出特征的第i維;P(yi)為預測類別i的概率,0≤P(yi)≤1。
入侵檢測模型的評價指標主要有模型的準確率(Accuracy,ACC)、漏報率(FNR)和誤報率(FPR),以及各個類別的精確率(Precisione,P)、召回率(Recall,R)和F1值(F1-measure),計算公式如下:
(23)
(24)
(25)
(26)
(27)
(28)
式中:TP表示正確識別的攻擊類別數目;FN表示漏報即未正確識別攻擊類別的數目;FP表示誤報即錯誤識別正常類別的數目;TN表示正確識別的正常類別數目。
使用密西西比州立大學天然氣管道控制系統數據集[18]進行實驗,數據集包括1種正常數據和7種攻擊數據,數據集描述如表1所示。

表1 數據集描述
數據集26個特征包括4個離散型特征和22個連續型特征。離散型特征包括control_mode、control_scheme、pump、solenoid,對4個離散型特征進行One-Hot編碼。離散型特征包括command_address、response_address等,對22個連續型特征進行min-max歸一化,對8個標簽值One-Hot編碼。經過預處理以后,特征31維,標簽8維。
根據表1可以看出,該原始數據集中存在數據不平衡的問題,攻擊樣本MSCI、MFCI的數量遠少于其他樣本的數量,在這種情況下用于訓練分類器模型,模型很大程度會偏向多少類,忽略少數類,導致模型的泛化能力不強。因此本文使用ACGAN數據增強算法對少數類樣本進行過采樣,多數類樣本降采樣,生成平衡數據集。根據需求對生成平衡數據集的樣本進行隨機采樣,將生成樣本適當地加入到原始數據集,不能過度增加樣本防止模型過擬合。
ACGAN參數設置,隨機初始化噪聲維度noise_dim為100,一次迭代輸入模型的樣本數目batch_size為1 000,全部樣本訓練次數num_epochs為100,保留神經元的概率keep_prob為0.9,初始化學習率init_lr為0.001。繪制訓練過程中生成器G和判別器D的損失函數曲線如圖5所示。

圖5 G和D損失函數
可以看出,生成器G和判別器D通過互相博弈,達到了一種穩定平衡狀態,生成平衡數據集如表2所示。在平衡數據集中隨機采樣500個MSCI和500個MFCI樣本加入原始數據集,ACGAN前后結果對比如表3所示。

表2 平衡數據集

表3 ACGAN前后對比
在保證數據集中各類樣本比例情況下,將ACGAN前后的數據集分別劃分9份作為訓練集和1份作為測試集。
數據預處理以后特征屬性31維、標簽值8維。特征維度較高,直接用于分類很可能導致模型檢測效果較差。尤其在某些數據集中,不同的攻擊樣本相似度高,淺層次的特征提取直接導致相似樣本無法被區分,本文使用BN-SSAE模型進行深層次特征提取,對數據降維。可以通過設置神經元數目unit來確定提取特征的維度,如表4所示。

表4 參數設置
將ACGAN前數據集劃分的訓練集和測試集,按照上述參數設置,開始逐層進行無監督的預訓練,預訓練過程中三個BN-SAE損失函數如圖6所示。

圖6 損失函數
可以看出,三個BN-SAE的誤差代價函數圖像均收斂于0.1以下,已經達到深層次特征提取的作用。
2.5.1不同的BN-SSAE結構實驗結果對比
對ACGAN前的數據集,使用不同的BN-SSAE結構進行特征提取,再使用MLP分類器進行分類,對比不同的BN-SSAE結構對檢測結果的影響。
MLP參數設置,第一層神經元數目unit為32,激活函數ReLU;第二層dropout為0.3;第三層神經元數目unit為8,激活函數Softmax;分類損失函數categorical_crossentropy,優化器函數optimizer為Adam,初始化學習率lr為0.001,一次輸入模型的樣本數目batch size為500,epoch為100。
BN-SSAE設置不同神經元數目unit以及稀疏系數ρ,其他參數不變。不同SSAE結構和MLP分類器結合,實驗結果對比如表5所示。

表5 不同BN-SSAE模型實驗結果對比
上述實驗結果表明,當特征降到14維時,訓練集和測試的ACC都達到最高。隨著維度變低或變低,模型檢測結果都沒有變得更好。因此可以確定最佳BN-SSAE模型結構為[31,20,14],ρ=0.04。
2.5.2ACGAN前后實驗結果對比
使用最佳BN-SSAE模型結構和已經確定好的MLP參數,對ACGAN前后的數據集進行檢測,實驗結果對比如表6所示。

表6 ACGAN前后實驗結果對比(%)
可以看出,ACGAN后訓練集ACC提高0.22百分點,測試集ACC提高0.38百分點;誤報率FPR降低0.471百分點,漏報率FNR降低0.017百分點。ACGAN對于提高模型的檢測精度、降低誤報率和漏報率效果明顯。ACGAN前后各種樣本類型評價指標對比如圖7所示。

圖7 ACGAN前后樣本類型評價指標對比
可以看出,MSCI和MFCI在ACGAN后,召回率R和F1值均有所提高,ACGAN對不平衡樣本具有數據增強效果。
2.5.3 不同的機器學習入侵檢測模型
在入侵檢測中,比較常用的機器學習算法包括決策樹(Decision Tree,DT)、隨機森林(Random Forest,RF)、樸素貝葉斯(Naive Bayes,NB)、支持向量機(Support Vector Machine,SVM)、K最近鄰(K-Nearest Neighbor,KNN)。 使用這些常用算法建立入侵檢測模型,對密西西比州立大學數據集進行檢測,不同機器學習模型檢測結果對比如表7所示。

表7 檢測結果對比(%)

表8 誤報率、漏報率對比(%)
可以看出,傳統的機器學習模型在檢測結果上面相對本文的深度神經網絡模型還略有不足,KNN表現最好,訓練集ACC達到95.41%,測試集ACC達到95.16%。在未進行ACGAN數據增強的情況下,使用BN-SSAE與MLP結合對數據集進行檢測,檢測結果相對于目前表現最好的機器學習模型,訓練集ACC提高3.57百分點,測試集ACC提高3.60百分點,這足以證明本文設計的BN-SSAE深層次特征提取能非常有效地提高分類器性能。為了能夠展現本文設計的入侵檢測模型的優越性,對模型的多種評價指標進行綜合對比。以機器學習模型表現最好的KNN為例子與本文模型進行對比,結果如圖8所示。

圖8 樣本類型評價指標對比
可以看出,KNN算法對NMRI、MSCI和MFCI的檢測效果不好。MSCI和MFCI兩類主要是由于數據不平衡導致召回率R和F1值比較低,NMRI在這里并不能直觀地看出問題所在,但是通過對原始數據進行分析以后問題就顯而易見了,因為NMRI相對于其他攻擊類型特征值不明顯,與其他攻擊類型相似,機器學習淺層次的特征提取導致檢測效果差。相比之下,本文的入侵檢測模型無論是在不平衡樣本的處理上,還是在特征值不明顯的攻擊樣本的特征提取上,都達到非常好的效果。
可以看出,KNN算法檢測結果的誤報率FPR、漏報率FNR都偏高,沒有達到入侵檢測的要求。
實驗使用最新公開的加拿大網絡安全研究所的CICIDS2017入侵檢測數據集[19]驗證模型可行性和有效性,數據集包括1種正常數據和14種最新攻擊數據,共有84個特征屬性和1個標簽。攻擊類型包括暴力破解、端口掃描、各類DoS/DDoS、Heartbleed、Web攻擊、滲透和僵尸網絡等。數據集存在樣本高度不平衡的問題,最多類別樣本可達幾十萬,最少類別樣本僅為11個。相比于密西西比州立大學數據集,該數據集特征屬性更多、攻擊類型更多、樣本更不平衡,使用該數據集驗證模型更能體現模型性能。
按照本文入侵檢測模型的實現步驟,首先對CICIDS2017數據集進行分析及預處理,其次使用ACGAN進行數據增強,然后使用BN-SSAE深層次特征提取,最后通過MLP網絡輸出檢測結果。
ACGAN前后數據集對比如表9所示。

表9 ACGAN前后數據集對比
ACGAN前后實驗結果對比如表10所示。

表10 ACGAN前后結果對比(%)
可以看出,ACGAN前訓練集ACC、測試集ACC、誤報率FPR和漏報率FNR均已經達到入侵檢測的要求,證明BN-SSAE特征提取的作用非常明顯。ACGAN后訓練集ACC提高0.07百分點,測試集ACC提高0.06百分點;誤報率FPR降低0.04百分點,漏報率FNR降低0.09百分點,檢測能力也有小幅度提高,但是在這里ACGAN前后的變化并不明顯,主要是由于該數據樣本數目龐大,實驗過程中也沒有破壞原始的數據分布,只是增加少數不平衡樣本,提高模型對不平衡樣本的檢測能力。再對ACGAN前后各種樣本類型評價指標進行綜合對比,結果如圖9所示(其中0-14表示15種類型的標簽值)。

圖9 各種樣本類型評價指標對比
由圖9可以更明顯地看出,標簽值為8、9、13和14的四種攻擊類型在ACGAN后,精確度P、召回率R和F1值都有大幅度提高,ACGAN對少數類樣本的數據增強效果非常明顯。
針對日趨嚴峻的ICN安全問題,本文提出以ACGAN、BN-SSAE和MLP為基礎建立工業入侵檢測模型。使用密西西比州立大學數據集進行實驗,結果表明本文模型相對于傳統的機器學習模型,對ICN多種攻擊類別的精確率P、召回率R和F1值都更高,而且模型最終準確率更高(99.14%),誤報率更低(0.599%),漏報率更低(0.583%),多種評價指標綜合表明本文模型性能較好,符合工業入侵檢測的要求。利用加拿大網絡安全研究所的CICIDS2017數據集進行驗證,該數據集相比密西西比州立大學數據集,數據維度更高,攻擊類型更多,樣本更不平衡,導致檢測難度大得多,但是多種評價指標表明模型仍然有較好的檢測效果,尤其是對少數類樣本的檢測能力十分優秀,這也讓入侵檢測過程中的少數類樣本更加具有研究意義,證明該模型在工業入侵檢測中具有可行性和有效性。
本文提出ACGAN數據增強和BN-SSAE深層次特征提取,解決了在工業入侵檢測過程中ICN數據存在的問題,提高了工業入侵檢測效果,為ICN安全防護技術拓寬了研究思路并提供了技術支撐。