楊錦溦, 楊宇, 姚鋮鵬, 尹坤
(武警工程大學信息工程學院, 西安 710086)
20世紀80年代, Endsley[1]提出了態勢感知這一概念,即“在一定的時空范圍內,認知、理解環境因素,并且對未來的發展趨勢進行預測”。網絡安全態勢感知(network security situation awareness,NSSA)可以融合所有可獲取的信息并對網絡的安全態勢進行評估,實現了傳統的網絡攻防方式向積極主動對網絡攻擊進行一定的分析、評估和預測的轉變,對安全分析給予決議參考,對于提升網絡監管水平、應急響應水平、預測網絡安全等方面具有重要價值[2]。
在已有的網絡安全態勢感知方法中,入侵檢測系統(intrusion detection system, IDS)是一種積極的安全防護形式,對網絡開展實時性的監測,能夠較好地發現網絡攻擊,為相關人員提供了重要的響應決策[3]。近年來,更多的新型的算法被應用在了IDS領域來構建相對穩定以及準確性更高的入侵檢測系統。機器學習策略通常需要人工選取特征,由此要求諸多從業人員具備更為專業的理論素養。但是,因為網絡中數據急劇增加,網絡帶寬也有了明顯的提高,信息的復雜特質以及特性的多元化也正呈現出持續的提升態勢,新型的網絡攻擊形式越來越多,淺層的機器學習已然無法實現分析以及預測的目標。深度學習為學習樣本信息的潛在規律以及表示層次,建立起包含諸多隱藏層的非線性網絡系統可以較好地滿足高維度研究,效率更高,能夠結合具體情況搭建模型,不局限于具體的固定問題,于處理入侵檢測方面有著重要價值[4]。文獻[5]提出了一種基于深層隨機卷積神經網絡-雙向長短時記憶網絡(deep stochastic convolutional neural network-bi-directional long short-term memory,DSCNN-BiLSTM)的入侵檢測方法,該方法引入了深度可分離卷積代替標準卷積從而減少了模型參數,降低了計算量,并應用雙向長短期記憶網絡(bi-directional long short-term memory,BiLSTM)提取長距離依賴信息的特征,以解決前后特征之間的影響問題。文獻[6]提出了一種改進人工蜂群優化神經網絡的網絡安全態勢評估方法,通過引入混沌序列改進人工蜂群算法提高蜂群的多樣性,使其具備更強大的全局搜索能力。然后,利用改進的蜂群算法代替反向傳播算法來優化神經網絡的各權值參數,提高了安全評估精度,加快了收斂速度。文獻[7]通過分析總線中入侵數據幀的特點,提出了基于門控循環單元(gated recurrent unit,GRU) 的入侵檢測方法,達到與長短期記憶(long short-term memory,LSTM) 模型相當的檢測精度,并且具有更短的訓練和檢測時間。
但是真實的網絡攻擊樣本數據集具有不平衡性,正常行為流量明顯多于異常行為流量,初始數據集攻擊形式的不平衡性會導致分類器的訓練會出現較大偏差,分類結果往往會傾向于在數據集中更加頻繁出現的樣本,現階段已知數據樣本對新型攻擊活動的預測以及歸類效果應對并不理想,從而影響最終的入侵檢測分類結果,無法對少見或者未知的攻擊類型進行有效的檢測。
針對數據樣本不平衡的缺點,提出一種新的入侵檢測模型,即DCGAN-DNN。該模型是將改進后的深層卷積生成對抗網絡(deep convolutional generative adversarial networks,DCGAN)和深度神經網絡(deep neural network,DNN)相結合。生成對抗網絡(generative adversarial networks,GAN)由生成 網絡和判別 網絡兩個神經網絡組成,生成網絡反復學習真實 樣本的分布,最終達到生成真實 度很高的假樣本的目的,從而對數據集進行增強和擴充。DCGAN網絡在計算機 視覺、圖像翻譯等領域有著廣泛的應用,而在入侵檢測中GAN及DNN相結合的研究并不多。文獻[8]引入了AT-GANs評估對抗樣本的散布;文獻[9]針對黑盒惡意軟件檢測系統提出了一種基于廣義對抗網絡的惡意軟件生成算法(MalGAN);文獻[10]提出了一類應用GANs應對ML進攻的策略,從而促使IDS在應對攻擊性流量干擾的時候表現更為平穩;文獻[11]引入了 Cycle-GAN將ADFA-LD數據集轉化成圖像形式,將得到的綜合性的異常信息和原始信息一同用在模型的訓練方面;文獻[12]提出了圍繞GAN為基礎的全新的對抗網絡架構繼而進行對抗攻擊,這一攻擊能夠欺騙以及躲避入侵檢測模塊;文獻[13]將戰略對抗性干擾引入GAN網絡的樣本數據中, 用來更好地訓練IDS模型,在應對這種對抗性干擾時能夠有更好的檢測效果;文獻[14]提出了一類圍繞GAN損失函數為核心的高效能系統,自常規的樣本內研究它的分布以及得到最為相近的樣本,之后結合測試以及真實樣本彼此的不同從而詮釋異常信息的評估。此類研究均應用了GAN,但GAN訓練存在不可控性,會導致梯度消失情況,經常性的誘發生成器出現無意義的輸出,有時反而會導致數據集更加龐雜,特征不夠明晰,反而增加了之后工作的難度,降低準確性。因此,文獻[15]提出了DCGAN,將卷積神經網絡和GAN結合起來,得到一個訓練更穩定、較容易收斂、生成較高數據質量的網絡。
根據當前的研究情況來看,DCGAN大量運用到圖像數據集處理當中,但是尚未涉及網絡安全態勢感知領域用來擴充增強數據集。為此,將DCGAN引入數據預處理中,并對DCGAN的生成網絡中的激活函數進行改進,最后利用CIC-IDS-2017數據集對DCGAN-DNN模型進行評估,和已有的過采樣方法如ROS、SMOTE進行對比。
根據Goodfellow等[16]提出的生成對抗網絡架構,生成模型與判別模型進行博弈對抗,從而確定樣本是來自模型分布還是數據分布。對抗網絡在均采用多層感知模塊的情況下最為適用,為能夠學習生成器于數據x的分布pg,定義了輸入噪音z的先驗變量pz(z),將數據空間的映射定義為G(z;θg),其中G為典型的含有參量θg的多層感知模塊的可微函數。之后再定義一個用來輸出單獨標量的多層感知機D(x;θd)。D(x)表示x來自真實數據分布,而不是pg的概率。訓練D從而最大化分配給訓練樣本以及生成新樣本的正確標簽的概率,訓練G使lg1-D[G(z)]最小化,則D和G的訓練均為有關值函數V(G,D)的極小化極大的博弈過程,可表示為[16]

Ez~pz(z)lg{1-D[G(z)]}
(1)
GAN包含典型的兩個網絡部分,所以需要就該網絡進行獨立的交錯迭代練習,旨在使得生成器可以學習獲得真實數據的散布,即pdata(x)=pg(x)。
首先,固定G,最優判別器D可表示為

(2)
給定任意生成器G,判別器D的最大化目標函數為

lg[1-D(x)]dx
(3)
式(3)中:訓練判別器D的訓練目標可以看作為條件概率P(Y=y|x)的最大似然估計,當y=1時,x來自pdata(x);當y=0時,x來自pg。
式(1)中的極小化極大問題可變形為



(4)

生成對抗網絡中對抗網絡在生成過程中無需反饋回路,因此不需要馬爾可夫鏈進行采樣,可以較好地利用分段線性單元,提升了反向傳播的能力[13]。
DCGAN將卷積神經網絡(convolutional neural networks,CNN)和GAN結合起來,從而使生成的數據質量以及多樣性得以保證。DCGAN引入了歸一化(batch normalization,BN)穩定訓練,使用ReLU激活函數降低梯度消失風險,消除池化層,引入跨步卷積以及微步幅卷積較好的保持了數據特征[17]。DCGAN運行成本較低,可運行在CPU上,處理數據樣本較為便捷迅速,有利于對數據集進行實時的動態分析。
DCGAN對GAN的框架做出的改進有:①全卷 積網絡結合跨步卷積取代了確定性空間池函數,支持網絡學習自身的空間下采樣,DCGAN將這一策略應用于生成以及判別網絡內,支持學習自身的空間上采樣;②于卷積特征的前提下去除了全連接層,全局平均池可以提升模型的穩定效果,但同時減小了收斂速度。而在最高卷積 特征的中間區域,直接將生成 網絡的輸入和判別 網絡的輸出連接起來,有較為理想的效果;③批歸一化處理通過對每個單元的輸入進行歸一化,使其具有零均值和單位方差,從而穩定學習,這有助于解決由于初始化不良導致的訓練問題,并且有利于梯度流向更深的網絡。
DCGAN 的架構大致為:①判別網絡使用跨步卷積替代全部池化層,生成網絡使用分數跨步卷積替代全部池化層;②于生成網絡和判別網絡內均應用了批歸一化;③為能夠搭建更為深度的系統去除全連接層;④除去生成 網絡的輸出層采用了Tanh激活函數,其他 層均采用了ReLU激活函數;⑤各層的判別網絡中均應用了LeakyReLU激活[18]。
入侵檢測模型如圖1所示,主要包括:①DCGAN網絡的訓練,交替訓練判別器和生成器;②生成新的數據樣本,將加入新生成的樣本的訓練集進行循環訓練;③DNN分類器的訓練,采用最終得到的真假混合樣本作為訓練集對DNN進行訓練,而后以真實的數據集作為測試集,通過DNN分類器進行分類,檢驗入侵檢測模型效果。

圖1 DCGAN-DNN入侵檢測模型Fig.1 DCGAN-DNN intrusion detection model
2.1.1 訓練判別器D
如圖1所示,控制生成器G保持不變,判別器D的輸入層為真實攻擊的樣本集{x1,x2,…,xm}和生成器生成的假攻擊樣本集{G(z1),G(z2),…,G(zm)},輸出層為判別樣本真假的概率值,即{D(x1),D(x2),…,D(xm)}和{D[G(z1)],D[G(z2)],…,D[G(zm)]}。判別模塊D的訓練目的是準確的識別真假樣本,因此相當于二分類器,真實攻擊樣本輸出為1,否則為0;最后結合激活函數把概率值轉化成樣本預測分類標簽,采用交叉熵損失函數分析算出損失值。
2.1.2 訓練生成器G
生成器G需要將生成網絡以及判別網絡的串聯進行訓練,它的訓練宗目的是得到判別模塊D難以辨別的假樣本,經過第一步之后,判別器D有了初步的判別能力,如圖1所示,把生成器G得到的假攻擊樣本集{G(z1),G(z2),…,G(zm)}當做串聯在判別器D之后的輸入層,樣本為真假樣本的概率值為輸出層。訓練生成器G的目標值設為1,最大可能地得到真實樣本。采用交叉熵損失函數分析算出損失值。
2.1.3 交替訓練
在損失值以及循環頻次沒有達到設置的閾值時,前兩個步驟交替對判別器D以及生成器G訓練,直至達到設置的閾值終止訓練,結合Adam優化器更新優化梯度。
如圖1所示,當損失值或指定的循環數達到設定閾值時,則把最后得到的攻擊樣本集{G(z1),G(z2),…,G(zm)},添加至之前的生成樣本集內,獲得新樣本。
使用DNN算法來構建分類器,用以檢測新生成數據樣本集的平衡性。深度神經網絡可以結合組合低層次特征構成更高層次的潛在特征,最后的訓練集是混合數據集,DNN分類器分析真實標簽以及預測結果之間的損失loss,直至實現預設的閾值。如圖1所示,把測試集輸入訓練完畢的DNN分類器內進行分類,DCGAN-DNN系統入侵檢測模型算法為:①數據預處理,將數據集CSV文件之中的文本轉換成數值,去除缺失值所在行,就特征數據進行歸一化,把字符特征以及分類標簽進行one-hot編碼,縮放至[0,1]區間;②結合預處理了的數據集為訓練集就DCGAN予以練習;③輸入隨機噪聲,得到新的攻擊樣本,同時添加至原始訓練集內,最后獲得測試樣本集;④訓練DNN分類器;⑤把測試集輸入到訓練完畢的分類器中,得到分類結果。
使用5個典型的指標評價入侵檢測性能,分別是準確率Accuracy、精確率Precision、召回率Recall、假陽性率FPR和F1-measure[19],即

(5)
(6)
(7)

(8)
(9)
表1為真陽性(TP)、真陰性(TN)、假陽性(FP)、假陰性(FN)的混淆矩陣[15]。

表1 混淆矩陣Table 1 Confusion matrix
選用CIC-IDS-2017數據集,該數據集包含最新的常見攻擊,并且滿足現實攻擊的所有標準。這一數據集的信息,截至2017年7月7日(周五)下午17:00,共計5 d。
周一是正常的一天,只包括正常的流量,周二、周三、周四和周五上午和下午分別執行FTP-Patator、SSH-Patator、DoS、Heartbleed、Web攻擊、滲透、僵尸網絡和DDoS攻擊[20]。表2總結了一周中每天每個文件中所包含的攻擊類型。

表2 CIC-IDS-2017數據集的文件描述Table 2 File descriptions of the CIC-IDS-2017 dataset
好的檢測模型應該能夠檢測任何類型的攻擊,為了設計一個能夠全面檢測的入侵檢測系統,需要將一周的流量數據合并在一起,形成一個單獨的數據集供IDS使用。通過合并CIC-IDS-2017數據集中5 d的數據,可以得到一個包含3 119 345個實例和83個特征,包含15個類標簽(1個正常標簽+ 14個攻擊標簽)的數據集。通過數據預處理,檢查組合數據集中的實例,將缺少類標簽的實例和缺少信息的實例刪除之后,CIC-IDS-2017的組合數據集中現有2 830 540個實例。表3為各種攻擊類型數據的數量,并且可以發現CIC-IDS-2017數據集存在很大程度上的類別不平衡問題,類別不平衡的數據集可能會誤導分類器,分類結果偏向于大多數類別。

表3 CIC-IDS-2017 數據集數據分布Table 3 Distribution of data in the CIC-IDS-2017 dataset
實驗以CIC-IDS-2017數據集作為樣本數據對DCGAN-DNN入侵檢測模型的性能進行評估,并將實驗結果與其他過采樣方法作以比較。
3.3.1 實驗參數和激活函數改進
步驟1計算使用Adam優化 器,學習率lr為0.000 2,批處理batch為128,循環數epoch為60 000。
步驟2對生成網絡中的線性整流(rectified linear unit, ReLU)激活函數加以改進在DCGAN算法中,生成網絡主要使用了ReLU激活函數。然而以ReLU作為激活函數雖然解決了梯度消失的問題,但仍存在著均值偏移問題和神經元死亡問題,對于生成網絡訓練的穩定性和生成樣本效果有較大影響,因此針對這兩個問題對ReLU激活函數加以改進。將ReLU函數x<0的部分用tanh函數取代,定義為

(10)
式(10)中:α為常數,x<0部分圖像根據斜率α變化。
函數右邊的線性成分有著ReLU函數特質,對于x不低于0的方面導數是常數,故而于飽和區之中沒有梯度是0的情況,可以較好的處理梯度損失情況,左邊的非線性方面不單單可以使得均值更加趨向0,規避均值偏轉情況,此外因為左邊方面沒有硬飽和性,沒有存在神經元死亡情況。
步驟3損失函數計算。判別器的輸入為真實樣本以及生成器生成的假樣本,輸出為輸入樣本的真假概率。兩類樣本通過判別器后獲得未歸一化的概率,即真、假樣本在判別器中的損失結果。實驗中真樣本的損失函數輸入為真樣本的損失結果及其標簽1,假樣本的損失函數輸入為假樣本的損失結果及其標簽0,最終將輸出結果作均值處理得到判別器D的損失值。
生成器訓練的目的是得到仿真度較高的假樣本,從而確保判別模塊難以識別真假。所以,把樣本的優化目標值設成1,交叉熵損失函數輸入為假樣本的損失結果及標簽1,最終產生的結果為生成器G的損失值。
3.3.2 結果分析
從表3可以看出,CIC-IDS-2017數據集中不同攻擊類型數量差距較大,導致訓練樣本不平衡。CIC-IDS-2017數據集對于FTP-Patator、SSH-Patator、Heartbleed、Web攻擊、滲透和僵尸網絡等攻擊只有少數記錄,由于正常網絡流量BEGINS、Dos Hulk、PortScan這3種數據樣本過于龐大,為提高生成新樣本和訓練分類器的效率提高,先刪除一部分冗余數據,然后使用DCGAN針對其他不同的攻擊類型來生成新的攻擊樣本以平衡訓練數據集。結果如表4所示。
DCGAN-DNN模型結合DCGAN得到攻擊樣本,用來平衡增強數據集的過采樣方法主要有:隨機過采樣器(ROS)[17]和合成少數過采樣(SMOTE),為驗證DCGAN有更好的效果,下面通過比較ROS-DNN和SMOTE-DNN兩種過采樣分類模型。比較結果如表5所示。
可以看出,所提出的DCGAN-DNN模型在CIC-IDS-2017數據集上的檢測性能相比其他方法具有更高的準確率、精確率、F1-measure和FPR值。實際上ROS、SMOTE過采樣技術都有一定的缺陷,ROS是訓練樣本的簡單復制,可能會出現模型過擬合情況,削弱了分類模塊的泛化特性,SMOTE結合最近鄰

表4 在CIC-IDS-2017數據集上生成的樣本數量Table 4 Number of samples generated on the CIC-IDS-2017 dataset

表5 CIC-IDS-2017數據集上不同過采樣方法的檢測性能比較Table 5 Different oversampling methods on the CIC-IDS-2017 dataset comparison of detection performance
策略為少數樣本產生新樣本,容易過度泛化,相較而言DCGAN是通過學習真實樣本的特征分布,根據特征標簽生成樣本,能夠最大程度保留數據樣本的自身特性,并且訓練生成網絡時所采用的改進的激活函數讓訓練更加穩定,對模型進行了更好的優化。
提出了DCGAN-DNN入侵檢測方法,得出以下結論。
(1)DCGAN能夠通過學習已知真實樣本的數據特征來生成新的樣本數據在一定程度上解決了樣本不平衡的問題,提升了分類器對少數以及未知攻擊的檢測效果。在CIC-IDS-2017數據集上對DCGAN-DNN的分類性能進行了評估,并與兩種傳統的過采樣方法ROS、SMOTE進行比較,測試結果表明,所提出的改進的DCGAN-DNN模型就少數樣本攻擊表現出較好的檢測水平。
(2)對于DCGAN算法的改進,即將生成網絡中ReLU函數的非零區域改為tanh函數,有效地改善了均值偏移和神經元壞死的問題。