鄭燦偉,李世明,2,王禹賀,杜 軍,倪蘊濤,趙 艷
1(哈爾濱師范大學 計算機科學與信息工程學院,哈爾濱 150025)2(上海市信息安全綜合管理技術研究重點實驗室,上海 200240)3(洛陽師范學院 信息技術學院,河南 洛陽 471934) E-mail:hsdlsm@163.com
工業(yè)控制系統(tǒng)(Industrial Control System,ICS)被應用于電力、石油化工、制造業(yè)和和交通運輸等領域[1].此外,其在國家的關鍵基礎設施中也發(fā)揮著重要作用,如水利系統(tǒng)、金融系統(tǒng)和通信系統(tǒng)等.因此,ICS的安全性直接影響一個國家的經濟命脈和社會穩(wěn)定.
隨著信息技術的快速發(fā)展和ICS網絡協(xié)議逐漸趨于標準化,工業(yè)化與信息化的融合也更加緊密.最初,ICS是隔離存在的系統(tǒng),故沒有充分考慮連接外部網絡后的安全問題.現在,ICS與外部的連接逐漸頻繁,潛在的網絡安全問題也逐漸暴露出來.近年來,世界ICS受到的網絡攻擊的次數顯著增加.2021年美國最大油氣管道遭受網絡攻擊,被迫關閉數天,引起美國汽油市場的波動;2018年臺積電的工廠和運營網絡遭受病毒攻擊,造成生產線的停滯;以及2015年烏克蘭電網遭受攻擊,導致數百萬人在圣誕節(jié)期間陷入黑暗,等等.此外,據美國權威統(tǒng)計機構統(tǒng)計,僅在2010—2013年間,ICS應急響應小組累計響應了600多起ICS安全事件,且年均安全事件呈現急劇上升趨勢[2].針對ICS的安全性問題,權威組織提出相關標準和建議.2018年,ISA99委員會發(fā)布了ISA/IEC 62443安全標準,該標準建議采用靈活的框架,以解決ICS中當前和未來的安全漏洞[3].當然,為了確保工業(yè)生產的穩(wěn)定性,制定相應標準的同時,還需要防范ICS被惡意入侵.因此,入侵檢測技術作為研究的熱點,入侵檢測模型作為入侵檢測技術中的重要方法再次成為關注的焦點.
入侵檢測模型適用于不同的場景.根據應用場景不同,模型需要做出相應的調整.基于深度學習[4-6]和機器學習[7,8]的傳統(tǒng)入侵檢測模型作為一種可靠的異常數據檢測方法,在傳統(tǒng)網絡中可以高準確率的識別出攻擊類型數據.但是,工控場景中的數據具有不平衡、維度高、攻擊數據類型復雜多樣的特點,并且ICS對模型的分類時間也有特殊要求.因此,需要對傳統(tǒng)入侵檢測模型進行改進,以適用于工控場景.近年來,基于工控應用場景的特點,借鑒傳統(tǒng)入侵檢測模型的思想,一些學者提出許多適用于ICS的入侵檢測模型.
針對數據不平衡問題,傳統(tǒng)解決方式還有過采樣[9]、欠采樣[10]和SMOTE.但是,過采樣雖然可以擴展小樣本的數量,提升模型分類效果,但是會產生過擬合的現象.欠采樣通過刪除樣本的方式,提升模型分類效果,同時也會增大丟失重要大樣本數據的概率.SMOTE方式增大了類邊界重疊的概率,會生成一些無效樣本.文獻[11]使用改進Border-SMOTE降低數據的不平衡性對模型檢測準確率的影響,提升了分類模型TWSVM對攻擊樣本的識別能力,但是模型對復雜攻擊類型的效果有待驗證.針對模型分類時間問題,文獻[12]使用改進鯨魚算法優(yōu)化模型參數的方式,加快了模型的收斂速度,進而減少分類時間;文獻[13]通過包含隨機森林在內的多組對比實驗,證明簡單模型收斂速度快;但是,以上均沒有解決數據不平衡的問題.OCSVM具有較快的收斂速度,但是模型準確率較低[14].Dong H等人將單一的SVM應用于Modbus TCP/IP協(xié)議下的ICS內,取得了較好的實驗效果,但是難以解決多分類問題[15].針對模型分類準確率的問題,石樂義、朱紅強等人[16]提出了基于相關信息熵的CNN-BiLSTM入侵檢測模型,將信息熵用于特征選擇,CNN-BiLSTM模型用于數據分類,提升了模型準確率和收斂速度,但是模型的超參數多,不易訓練;文獻[17]集成深度神經網絡DNN和決策樹DT來用于檢測攻擊型數據,在兩個數據集上證明其適用性,模型可以高準確率的識別出正常數據和攻擊數據,但是模型分類效果僅局限于二分類問題.
綜上所述,雖然現存模型在ICS中取得了較好的檢測效果,但是依然存在諸多缺陷:1)沒解決數據不平衡問題或解決數據不平衡問題的方式存在問題使得小樣本數據檢測率降低,數據分類偏向于大樣本數據;2)使用簡單模型進行分類,模型收斂速度快,但是準確率較低且不適用于多分類問題;3)超參數較多的分類模型,準確率較高,但是不易訓練,分類時間較長.
針對上述問題,本文將條件生成對抗網絡(CGAN)[18]和深度森林(Deep Forest)[19]相組合,融合兩者優(yōu)點,提出一種綜合效果較好的CGAN-Deep Forest入侵檢測模型.模型在解決數據不平衡問題的基礎上,具有準確率高、小樣本檢測率高、分類速度快的特點.在Gas數據集上,通過與隨機森林和深度卷積神經網絡進行對比實驗,模型有效性和創(chuàng)新型得到驗證.
生成對抗網絡(GAN)[20]是由Goodfelllow提出的一種借鑒零和博弈思想的數據生成模型,后被用于解決數據不平衡問題[21-24].條件生成對抗網絡(CGAN)作為GAN的改進模型,其結構依然由生成器(G)和判別器(D)兩部分組成[25],如圖1所示.
圖1 CGAN模型結構Fig.1 CGAN model structure
其中隨機變量x表示真實數據,y表示數據標簽,z表示噪聲數據.CGAN與GAN上的不同之處在于生成器和判別器中分別加入條件標簽y,可以定向生成指定類型的數據,完成數據的定向擴充,彌補了GAN隨機生成數據的缺點[26].CGAN模型中生成器可接收噪聲及其標簽(z|y),輸出生成數據G(z|y).判別器可接收生成數據G(z|y)、真實數據及其標簽(x|y),并輸出損失函數對應的數值用于反映輸入數據的真實性,該數值可進一步指導模型參數更新.上述博弈過程中生成器和判別器交替訓練、迭代更新,達到動態(tài)平衡時價值函數收斂到0.5左右,此時模型趨于穩(wěn)定,生成器生成的數據接近于真實數據.CGAN模型的數學表達式如公式(1)所示:
z~pz(z)[log(1-D(G(z|y)))]
(1)
如公式(1)所示,CGAN模型訓練分兩步進行:1)固定生成器G不動,調整判別器D來最大化價值函數V(D,G),讓判別器完成真實數據與生成數據的區(qū)分;2)固定判別器D不動,調整生成器G來最小化價值函數V(D,G),讓生成器盡可能生成判別器無法輕易識別的數據.兩步交替進行,直至達到動態(tài)平衡為止.
深度森林作為一種深度學習算法,由多粒度掃描和級聯森林兩部分組成[27].多粒度掃描時,首先對輸入數據進行切分,其次將切分后的數據輸入到由隨機森林和完全隨機森林組成的森林層進行處理,最后將處理后的特征向量輸入到級聯森林并進行下一步處理.級聯森林的各層分別由隨機森林和完全隨機森林組成,其對多粒度掃描輸出的特征向量進行逐層處理,最后用輸出概率向量表示分類結果.
多粒度掃描借鑒卷積神經網絡中卷積核的思想,具有對數據特征進行不同尺度提取的優(yōu)點[28].多粒度掃描善于提取原始數據間的空間關系,所以當數據為圖像格式時可以較好的發(fā)揮它的優(yōu)勢;但是,在入侵檢測領域產生的數據通常都是結構序列化數據,因此特征間的關系不像圖像那樣突出.故在多粒度掃描時用不同大小的窗口和指定步長,對輸入數據特征信息進行不同尺度的提取,不同大小的窗口可以增強數據的表現能力,增強數據特征間的關聯性,從而進一步保證分類準確率.
級聯森林借鑒深度神經網絡分層的思想,通過逐層處理獲取更多的潛在信息,逐步逼近正確分類結果.因為訓練層沒有使用卷積神經網絡,取而代之的是由決策樹[29]組成的森林層.決策樹作為基分類器,通過集成學習方式將多個弱分類器集合在一塊,構成一個強分類器,多個強分類器作為一個訓練層進行分類處理.所以,級聯森林的訓練層參數少,計算復雜度低.
為了在保證準確率的前提下,解決數據不平衡問題,提高小樣本檢測率,降低整體模型的復雜度,減少分類時間,本文提出基于CGAN-Deep Forest的工業(yè)控制系統(tǒng)入侵檢測框架,該框架主要由數據預處理和入侵檢測模型兩部分組成,其中入侵檢測模型又主要由CGAN和Deep Forest組成.本文入侵檢測模型的整體執(zhí)行流程為:首先,將ICS原始數據集進行預處理,使其符合本文模型可接受的數據類型;然后,將預處理后的數據放入CGAN中,對小樣本數據定向擴充;最后,將擴充后的數據集進行特征提取后,輸入Deep Forest進行數據分類,輸出分類結果.
數據預處理一般情況下可分為數值化、標準化和歸一化.因本文所用數據集中無字符型屬性,故無需進行one-hot編碼和數值化,只需進行標準化和歸一化.
1)標準化:原始數據通過公式(2)進行標準化,標準化處理之后將會加快模型梯度下降速度,進而提高分類精度.其中x表示原始數據,μ表示均值,σ表示方差,z表示標準化處理后的結果.
(2)
2)歸一化:標準化完成以后,通過公式(3)將標準化數據映射在區(qū)間[-1,1]內來消除數據量綱影響,使其符合模型的輸入,保證模型的準確率.
(3)
CGAN作為一種特殊的深度學習模型,是一種數據生成模型而不是數據分類模型.模型可以在生成器和判別器對抗過程中逐漸生成無限接近于真實數據的生成數據,實現數據的定向擴充.若數據是非平衡數據,則可以使用CGAN來解決數據不平衡問題,降低數據不平衡性對模型檢測率的影響,提高模型檢測的準確率.
深度森林作為一種深度學習模型,與其它深度學習模型相比,具有超參數少、深度動態(tài)增加、準確率較高的特點[30].在本文入侵檢測模型中深度森林擔當分類器的角色,可以在保證較高準確率的前提下擁有更快的模型訓練速度,降低數據分類時間.
圖2 CGAN-Deep Forest模型結構Fig.2 CGAN-Deep Forest model structure
鑒于ICS接收的數據具有非平衡性、攻擊類型復雜和維度高的特點,以及CGAN和深度森林所具有的優(yōu)良性能.CGAN可以實現數據的定向擴充,生成小樣本數據;深度森林作為分類模型而言,具有準確率高、易訓練、小樣本檢測率高的特點,適用于攻擊類型復雜的工控環(huán)境,具有較好的綜合解決問題的能力.本文充分整合CGAN和DeepForest兩個單一模型的優(yōu)點,創(chuàng)建適用于ICS的入侵檢測模型CGAN-DeepForest,模型結構如圖2所示.
將預處理后的Gas數據集輸入CGAN模型,按照指定的迭代次數,完成CGAN模型的訓練.然后,根據數據分布情況,輸入數據標簽,借助訓練完成的CGAN模型完成數據的定向擴充.再將擴充后的小樣本數據集與預處理后的Gas數據集進行混合,對混合后的數據集進行特征提取并按比例分成訓練集和測試集,然后用訓練集訓練深度森林模型;訓練結束之后,用測試集測試訓練完的模型,輸出數據的分類結果.
3.2.1 數據定向擴充
CGAN的生成器和判別器一般情況下是由全連接層組成的一種深度神經網絡.本文模型中的CGAN借鑒卷積神經網絡的優(yōu)點,對傳統(tǒng)CGAN進行了改進,將判別器中的一個全連接層替換為卷積神經網絡[31],通過卷積神經網絡的優(yōu)勢可以增強數據的表達能力,進而保證CGAN模型經過較少的迭代次數就可以達到較穩(wěn)定的狀態(tài),生成符合要求的擴充數據,加快模型的收斂速度.CGAN的判別器所用卷積神經網絡參數如表1所示.
表1 卷積神經網絡參數Table 1 Convolutional layer parameters
本文模型使用CGAN對數據集中的小樣本數據進行定量擴充,使數據集接近平衡狀態(tài).具體步驟如下:
Step1.數據預處理以后,按照指定的迭代次數,分批次訓練CGAN模型.將處理后的數據集分批次按照CGAN的輸入格式輸入CGAN模型進行訓練,完整遍歷一次數據集記為一次迭代.
Step2.訓練過程中,將真實數據與生成數據進行混合.訓練判別器過程中,記錄每一批次判別器的損失函數值,同時更新判別器的參數.若完成一次迭代,需將一次迭代中的所有批次損失函數求均值后記錄.
Step3.訓練過程中,每一批次數據完成判別器的訓練,就需固定判別器,訓練生成器.訓練過程中記錄CGAN模型的損失函數,同時更新生成器的參數.若完成一次迭代時,需將一次迭代中的所有批次損失函數求均值后記錄.
Step4.在判別器和生成器完成指定迭代間隔以后,按照需求設置類別參數和數量參數,對小樣本數據進行定向擴充,解決數據不平衡問題,并將擴充后的數據存儲.判別器和生成器參數的更新過程中,若判別器損失函數達到0.5,則說明達到動態(tài)平衡,生成器生成的數據近似為真實數據,此時的CGAN模型達到最佳狀態(tài).
Step5.完成一次迭代以后,若沒有達到指定的迭代次數,則繼續(xù)交替執(zhí)行生成器和判別器,執(zhí)行Step 2-Step 3,直到完成指定的迭代次數.否則,將最接近CGAN最佳狀態(tài)時產生的擴充數據集與原數據集進行混合,準備用于訓練Deep Forest模型.
3.2.2 訓練DeepForest模型
CGAN完成對數據擴充以后,緩解了數據不平衡性對分類模型準確率和檢測率的影響.使用隨機森林[32]對數據進行特征提取后,借助Deep Forest對數據集進行分類.Deep Forest訓練過程分為多粒度掃描和級聯森林兩步,如圖3和圖4所示.
圖3 多粒度掃描Fig.3 Multi-grained scanning
圖4 級聯森林Fig.4 Cascade forest
Step2.級聯森林階段,若有標簽信息,將連接信息分為訓練集和驗證集,其中訓練集分別輸入深度森林層的隨機森林和完全隨機森林組成的森林層進行模型訓練,用驗證數據對模型進行驗證.若驗證輸出結果滿足要求,結束模型訓練,若不滿足將訓練輸出結果與連接信息進行整合形成新的連接信息,對自動增加森林層進行訓練.
Step3.級聯森林階段,若無標簽信息,輸入信息為測試集.進入測試階段,說明模型訓練達到所需的要求,模型訓練完成,模型層數無需增加,只需用訓練好的模型對輸入的測試集輸出結果進行預測即可.
Step4.最后用測試集對模型進行測試,選出最大概率所對應的類標簽作為輸出結果,輸出混淆矩陣,按照指定評價指標對模型分類效果進行評估.
1)實驗環(huán)境:編譯軟件為PyCharm編輯器,運行環(huán)境為Python3.6,使用框架為TensorFlow1.14、Keras2.3.1、Sklearn0.23.2,適用處理器為IntelCoreI54200H,內存為8GBDDR3L.
2)數據集:本文使用數據集Gas來自密西西比州立大學搭建的天然氣管道實驗平臺,采集自天然氣管道控制系統(tǒng)網絡層的數據信息,經過數據清洗以后形成數據集Gas.本文所用數據集為Gas數據集總量的10%,數據類型分為8類,1類正常數據,7類異常數據,每條數據記錄包含26列固定屬性特征和1列標簽屬性,數據分布如表2所示.
表2 數據分布Table 2 Data distribution
其中Category為攻擊類型,Label為類標簽,Count為各類的統(tǒng)計數量,Imbalance為非平衡系數(大樣本類與小樣本類的比值)[33].由Imbalance系數可知Gas數據集是非平衡數據集,標簽為0的數據為大樣本,標簽為1,3,5,6的數據為小樣本.
在不考慮數據集的不平衡性對模型影響的前提下,傳統(tǒng)模型使用基于混淆矩陣的準確率(Acc)、查準率(Precision)、查全率(Recall)作為模型評價指標,但是數據不平衡時小樣本類對Acc的影響較小,因此會有誤報情況的出現.本文在考慮到數據非平衡性影響的前提下,在以上評價指標基礎上又引入F1作為模型評價指標,F1同時兼顧查準率和查全率,其為Precision和Recall的一種加權平均,可以綜合的評價模型的效果.本文所用評價指標公式為(4)-公式(7):
(4)
(5)
(6)
(7)
其中TP代表混淆矩陣中正確分類的正常樣本數;FP代表混淆矩陣中錯誤分類的正常樣本數;TN代表混淆矩陣中正確分類的異常樣本數;FN代表混淆矩陣中錯誤分類的異常樣本數.
針對本文模型設計3組對比實驗,驗證本文模型的有效性和創(chuàng)新性.第1組對比實驗:改進CGAN前后對比實驗,證明卷積層可以增加數據的表達能力,使判別器具有較穩(wěn)定的收斂效果.第2組對比實驗:使用深度森林作為分類器的CGAN平衡前后的對比實驗,證明CGAN在處理數據不平衡問題方面的有效性.第3組對比實驗:使用改進CGAN完成數據平衡之后,使用不同的分類器,驗證本文所用深度森林分類器,綜合來說,具有較好的分類效果.
4.3.1 改進CGAN對比實驗
CGAN在判別器和生成器對抗過程中逐漸達到平衡狀態(tài),平衡狀態(tài)時判別器準確率在0.5附近,判別器無法判別數據的真實性,此時CGAN模型達到最佳狀態(tài),生成器生成的數據最接近真實數據.但是,原始CGAN不穩(wěn)定收斂于0.5附近,鑒于卷積神經網絡的優(yōu)點,故本文使用卷積神經網絡對CGAN判別器進行改進,改進前后對比如圖5所示.
圖5 CGAN改進前后收斂狀態(tài)對比Fig.5 CGAN improves the convergence state comparison before and after
改進之后,雖然也是在0.5附近波動,但是CGAN收斂更加穩(wěn)定,明顯更接近穩(wěn)定于0.5.可以證明CGAN中添加卷積改進后,生成數據效果會更好.并且,當改進CGAN迭代到第55次時,生成的數據最接近真實數據,因此接下來實驗選用改進CGAN的第55次訓練結果對數據集小樣本類進行擴充.
4.3.2 CGAN平衡前后對比實驗
對使用數據集的數據種類進行分類統(tǒng)計,表明本文使用數據集為非平衡數據集,標簽為1、3、5和6數據較少.因此,使用改進的CGAN對標簽為1、3、5、6的小樣本類分別進行擴充,進行本階段實驗.在數據不平衡問題被解決前后,分別將數據集的80%作為訓練集,20%作為測試集,以深度森林作為分類模型,進行對比實驗.
在沒進行數據平衡處理之前,分類模型總準確率為92%,時間消耗為28.02s,NMRI、MFCI和Dos攻擊的查準率、查全率和F1均為0,具體分類實驗結果如表3所示.
對數據平衡處理,需要對數據進行定量擴充.為了尋找最佳擴充量,對比以下3種擴充方案.
方案1.對標簽為1、5、6的小樣本分別擴充750、1000和800條數據,標簽為3的數據不進行擴充,使部分小樣本在同一數量級.經過上述數據平衡處理之后,分類模型總準確率提高了3%,達到95%,時間消耗為48.83s,NMRI、MFCI和Dos的查準率、查全率和F1分別接近提高95%、84%、90%;沒進行數據擴充的MSCI類型實驗結果變化不大,具體分類實驗結果如表4所示.
表4 CGAN平衡后Deep Forest分類結果(Ⅰ)Table 4 Deep Forest classification results after CGAN equilibrium(Ⅰ)
表5 CGAN平衡后Deep Forest分類結果(Ⅱ)Table 5 Deep Forest classification results after CGAN equilibrium(Ⅱ)
方案2.對標簽為1、3、5、6的小樣本分別擴充1000條數據.經上述數據平衡處理之后,模型總準確率達到95%,時間消耗為63.85s,具體分類實驗結果如表5所示.
方案3.對標簽為1、3、5、6的小樣本分別擴充3000條數據.經上述數據平衡處理之后,模型總準確率達到96%,時間消耗為247.78s,具體分類實驗結果如表6所示.
表6 CGAN平衡后Deep Forest分類結果(Ⅲ)Table 6 Deep Forest classification results after CGAN equilibrium(Ⅲ)
以上4組實驗結果表明,改進CGAN在處理數據不平衡方面起到了較好的作用,數據的定向擴充可以提高不同類型小樣本檢測率.但是,對比擴充方案1、方案2和方案3可知隨著小樣本數據量的增多小樣本檢測效果不再明顯提高,時間成本卻在顯著增加.基于上述情況,后續(xù)實驗使用方案1對數據進行擴充,驗證本文模型綜合效果.
4.3.3 不同分類器對比實驗
本階段,通過使用平衡處理之后的數據集和不同類型的分類器進行對比實驗,進一步證明模型的創(chuàng)新性.本文模型可以在解決數據不平衡問題和提升小樣本檢測率的情況下,提高整體檢測準確率,降低模型訓練和分類時間.
分類模型選用機器學習中的隨機森林時,分類模型總準確率達到89%,時間消耗為3.07s,具體分類實驗結果如表7所示.
表7 CGAN平衡后隨機深林分類結果Table 7 Random deep forest classification results after CGAN equilibrium
通過對比表4和表7實驗結果表明:模型使用隨機森林作為分類器時,雖然對小樣本具有檢測效果,且模型收斂速度較快,但是各攻擊類型的查準率、查全率和F1整體低于本文模型的實驗結果.另外,與本文模型相比,其整體準確率也低了6%.
分類模型選用深度卷積神經網絡時,其迭代訓練150次之后,整體準確率為94%,訓練時間為73.45s,迭代過程如圖6所示.與本文模型相比,兩者準確率相近時,準確率都在94%附近,時間成本提升了50%,深度卷積神經網絡分類時間大約多25s.
通過以上多組對比實驗可以證明,本文模型CGAN-Deep Forest綜合效果較好.通過CGAN平衡前后對比實驗,證明CGAN在復雜的工控環(huán)境中,依舊具有較強的解決數據不平衡問題的能力.通過不同分類器間的對比實驗,證明經過平衡處理之后,深度森林可以充分發(fā)揮自身優(yōu)勢,多項評價指標最佳,綜合表現能力最好.因此,本文模型各組成部分充分發(fā)揮自身優(yōu)勢,進而充分保障整體模型可以同時解決數據不平衡問題、準確率問題、小樣本檢測率問題和分類時間問題.
目前,在工業(yè)控制領域存在許多入侵檢測模型,但是缺少一種綜合性的入侵檢測模型,可以兼顧處理多方面問題.因此,本文提出入侵檢測模型CGAN-DeepForest,應用于ICS的入侵檢測領域.模型各組成部分優(yōu)勢互補,確保具有較強的綜合解決問題的能力.首先,為了數據生成模型具有較為穩(wěn)定的效果,對原始CGAN進行改進.然后,借助改進CGAN來完成數據的定向擴充,解決數據的不平衡問題.最后,對平衡后的數據集使用隨機森林進行特征提取后,使用準確率高、小樣本檢測性能好、訓練和分類時間短的深度森林對數據進行分類,輸出分類結果.經過實驗驗證,在工業(yè)控制領域,CGAN-DeepForest模型可以取得了較好的效果.未來研究重點在于,進一步改進CGAN,使其震動幅度減小,降低CGAN的發(fā)散可能性.在不同數據集上驗證本文模型的有效性,證明模型的普適性.