徐雪麗,段 娟,肖創(chuàng)柏,張 斌
(北京工業(yè)大學 信息學部,北京 100124)
面對互聯(lián)網(wǎng)帶來的便利,人們對網(wǎng)絡(luò)的依賴程度愈來愈高,互聯(lián)網(wǎng)技術(shù)正在逐步改變?nèi)藗兊纳睢⒐ぷ骱蛯W習方式.作為一種信息傳遞的載體,顯然網(wǎng)絡(luò)已經(jīng)是人們現(xiàn)實生活中必不可少的組成部分.然而,我們也面臨著越來越多的網(wǎng)絡(luò)安全威脅問題,新型特征的網(wǎng)絡(luò)攻擊不斷出現(xiàn),因此,網(wǎng)絡(luò)異常檢測已經(jīng)成為當前互聯(lián)網(wǎng)安全問題中一個亟待解決的問題[1].常用的異常檢測方法,例如防火墻技術(shù)和身份驗證機制等,因其防護能力較弱,也僅能夠滿足最基礎(chǔ)的防護需求.一旦遭到黑客的破壞性攻擊,普通的防護技術(shù)基本不起作用[2],個人、公司甚至是國家的信息數(shù)據(jù)將面臨著泄露等致命的危險.近些年,國內(nèi)外學者對網(wǎng)絡(luò)流量異常檢測的研究也日益增多,并且他們的研究方法已經(jīng)取得了不錯的效果,網(wǎng)絡(luò)異常檢測方法也已經(jīng)成為安全領(lǐng)域一項重要的研究[3,4],此類系統(tǒng)的目的是識別已經(jīng)發(fā)生或者正在進行的入侵行為[5].
網(wǎng)絡(luò)異常檢測本質(zhì)上可以歸類為網(wǎng)絡(luò)數(shù)據(jù)報文的分類問題,即正常網(wǎng)絡(luò)數(shù)據(jù)報文和異常網(wǎng)絡(luò)數(shù)據(jù)報文.現(xiàn)有的主流文本分類有兩種類型:傳統(tǒng)的機器學習分類算法和深度學習分類算法.前者分類算法主要有K最近鄰算法[6],Boosting 算法[7],支持向量機[8],K 均值聚類算法[9],樸素貝葉斯模型[10],決策樹模型[11]等.大多數(shù)傳統(tǒng)的機器學習算法屬于淺層學習,不適合超大批量的高維學習的預測要求,并不能很好的解決現(xiàn)實網(wǎng)絡(luò)環(huán)境中存在著的復雜入侵數(shù)據(jù)分類問題,因此識別數(shù)據(jù)報文的準確度較低,誤報率較高[5].相反,深度學習算法能夠應(yīng)對高維度特征的復雜數(shù)據(jù),與其它機器學習方法相比,采用基于深度學習的分類方法能夠從網(wǎng)絡(luò)數(shù)據(jù)中提取更好的特征,以創(chuàng)建較好的模型,在入侵檢測方面顯著提高了分類的準確性[12].事實證明基于深度神經(jīng)網(wǎng)絡(luò)的研究方法在異常檢測分類問題上較傳統(tǒng)機器學習方法有較高的準確率和較低的誤報率.深度學習算法的優(yōu)勢在于它并不依賴于特征工程,并能夠智能有效的識別入侵行為的異常特征[13].目前,深度學習在這一應(yīng)用的分類算法主要有:循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[14],深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)[15],卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)[16].卷積神經(jīng)網(wǎng)絡(luò)(CNN)由于其學習高維數(shù)據(jù)特征的能力顯著,因此得到廣泛應(yīng)用.
目前,針對入侵檢測問題的方法已有大量的國內(nèi)外學者開展了相關(guān)方面的研究,近些年,隨著機器學習算法愈來愈受到科研人員的重視,眾多方法被運用于網(wǎng)絡(luò)流量入侵異常檢測領(lǐng)域,相對于傳統(tǒng)的檢測機制檢測效果有了很大的提升,是當前公認的有效算法之一.
在無監(jiān)督學習方面,Wang Q[17]提出了一種新型的異常檢測聚類方法FCC,該方法引入了模糊連通性的概念用來計算不同數(shù)據(jù)類別的實例之間的相似性,算法不僅可以檢測已確定的入侵類型特征,還可以檢測它們的變體.Zhang J 等[18]將機器學習中的隨機森林算法RF 運用于網(wǎng)絡(luò)入侵監(jiān)測系統(tǒng)上,檢測網(wǎng)絡(luò)傳輸流量中的異常值,并對隨機森林的離群值檢測算法進行了修改,降低了算法的計算復雜度,提高了性能.但是該算法表明隨著網(wǎng)絡(luò)攻擊數(shù)量的逐步增加,其性能表現(xiàn)出下降趨勢.Wang ZH 等[19]將基于粒子群的模糊C 均值的算法模型FCM 運用到入侵檢測監(jiān)控系統(tǒng)上,并能夠讓系統(tǒng)檢測出未標識的原始網(wǎng)絡(luò)流量數(shù)據(jù).該方法能夠克服普通入侵異常監(jiān)測系統(tǒng)較易陷于局部最優(yōu)問題的缺點和不足.使得檢測的準確率有所提升并且該方法也擴大了適用性.但該算法的需要耗費較長的時間,增加了時間成本,不能保證系統(tǒng)的實時性.
在有監(jiān)督學習方面,Kim J 等[20]將循環(huán)神經(jīng)網(wǎng)絡(luò)算法模型RNN-IDS 應(yīng)用到入侵檢測中,該模型將深度神經(jīng)網(wǎng)絡(luò)技術(shù)和ReLU 修正線性單元激活函數(shù)相結(jié)合,通過與隨機森林、支持向量機等一些常用的機器學習算法完成了對比實驗,驗證了該方法在二分類以及多分類中具有較好的檢測效果.Dong B 等[21]歸納了普通的機器學習算法在入侵異常檢測領(lǐng)域中的效果,并給出了與深度學習的方法運用于入侵檢測問題上的對比實驗,發(fā)現(xiàn)深度學習算法模型在準確率和誤報率指標上表現(xiàn)的更好,得出了深度學習技術(shù)改變了網(wǎng)絡(luò)面臨著的安全評估挑戰(zhàn)的結(jié)論.Kwon D 等[22]建立了淺層CNN,中層CNN,深層CNN 等3 種用于異常檢測問題的卷積神經(jīng)網(wǎng)絡(luò)模型,并對不同深度所帶來的影響作出了評價.3 個模型在與傳統(tǒng)的機器學習分類器的比較上具有較高的檢測精度,但是這些模型在平衡和非平衡數(shù)據(jù)集的檢測精度方面具有差異.Roy SS 等[23]提出了一種運用深度神經(jīng)網(wǎng)絡(luò)的入侵異常檢測的算法模型,并與支持向量機(SVM)方法在該領(lǐng)域種的應(yīng)用做了實驗比對,其結(jié)論表明與SVM 用于網(wǎng)絡(luò)入侵系統(tǒng)的效果相當,驗證了深度神經(jīng)網(wǎng)絡(luò)作為入侵攻擊分類器的潛在能力.Yin CL 等在文獻[5]提出了一種基于循環(huán)神經(jīng)網(wǎng)絡(luò)的用于入侵異常監(jiān)測(RNN-IDS)深度學習算法模型.并研究了該模型在二元分類和多元分類中的性能,以及所神經(jīng)元包含的數(shù)量和多個不相同的學習速率對訓練模型性能產(chǎn)生的影響,表明了RNN-IDS 優(yōu)于傳統(tǒng)機器學習算法,更適合于對分類模型的建模.但是該模型采用的循環(huán)神經(jīng)網(wǎng)絡(luò)存在著潛在的梯度消失和爆炸的風險.
當前,基于深度學習的流量異常檢測技術(shù)雖然得到眾多國內(nèi)外研究者的青睞,并表現(xiàn)出來不錯的檢測效果,但是還有很多待改進的空間,目前還面臨著以下問題:(1)保證檢測模型較高的準確率和較低的誤報率一直以來都是國內(nèi)外學者研究的重點,現(xiàn)有的異常檢測系統(tǒng)的大多數(shù)模型的準確率還有待進一步提高;(2)大多數(shù)異常檢測算法模型能夠很好的識別訓練數(shù)據(jù),然而在測試數(shù)據(jù)上顯現(xiàn)出效果不佳的問題,普遍存在著模型過擬合的情況;(3)異常檢測系統(tǒng)是實時在線監(jiān)控數(shù)據(jù)的系統(tǒng),網(wǎng)絡(luò)數(shù)據(jù)傳輸量巨大,保障檢測的實時性是目前在線監(jiān)測系統(tǒng)需解決的關(guān)鍵性問題,由于很多深度學習的模型復雜參數(shù)過多,導致訓練難度加大,模型的訓練速度變慢的問題,不能很好的保證實時性,因此,提高訓練速度至關(guān)重要;(4)在大數(shù)據(jù)時代下,計算機技術(shù)在持續(xù)發(fā)展,網(wǎng)絡(luò)環(huán)境也在不停地產(chǎn)生著改變,對異常檢測算法模型的適用性也會具有更高的要求.
本文針對以上存在的問題提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)和支持向量機的網(wǎng)絡(luò)流量入侵檢測方法,考慮到為了適于卷積神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)格式的要求,本研究將每條網(wǎng)絡(luò)數(shù)據(jù)報文處理成一個二維矩陣形式.為了防止大多數(shù)網(wǎng)絡(luò)模型存在的過擬合現(xiàn)象,本文采用permutation 將數(shù)據(jù)索引隨機化,然后將二維數(shù)據(jù)輸入到卷積神經(jīng)網(wǎng)絡(luò)中,從中學習數(shù)據(jù)的有效特征.并運用支持向量機分類器做分類處理.最后,通過與本文所采用的數(shù)據(jù)集上其他兩個主流模型對比,驗證了本模型有較高的準確率,更適合處理網(wǎng)絡(luò)異常檢測問題.
本文運用Google TensorFlow[23]來實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)模型的訓練,本文模型包含了提出的模型和需要對比的兩種模型.在數(shù)據(jù)集的選擇上,本文使用2013年京都大學蜜罐系統(tǒng)的網(wǎng)絡(luò)流量數(shù)據(jù)集[24].它包含24 個統(tǒng)計特征,即來自1999年KDD CUP 數(shù)據(jù)集的14 個特征[25],以及10 個附加特征.在此基礎(chǔ)之上,為了適于本文所提出的算法模型CNN-SVM,通過以下步驟對數(shù)據(jù)集進行了處理:(1)數(shù)據(jù)處理,為了與已有的模型作實驗對比以及適應(yīng)本文算法模型,本文在原有數(shù)據(jù)集的基礎(chǔ)上對特征進行了補充,但并不對原有數(shù)據(jù)集產(chǎn)生影響,然后將數(shù)據(jù)集中的每條數(shù)據(jù)處理成一個5×5 的二維矩陣;(2)標簽處理,將原有數(shù)據(jù)集標簽0 處理成[1,-1],標簽1 處理成[-1,1];(3)數(shù)據(jù)打亂,由于數(shù)據(jù)集固定順序,會限制梯度優(yōu)化方向的可選擇性,導致收斂點選擇空間變少,以至于造成模型的過擬合.為了防止訓練模型過擬合,在數(shù)據(jù)訓練之前,對數(shù)據(jù)集的順序做隨機改變,從而打亂數(shù)據(jù)的順序.為了不改變原數(shù)據(jù)集的順序,該處理方式選用permutation函數(shù)來完成.
隨著愈來愈多的學者深入到深度學習知識層面,推動著深度學習廣泛應(yīng)用與各個領(lǐng)域.其中,卷積神經(jīng)網(wǎng)絡(luò)也是深度學習領(lǐng)域的一種非常突出的訓練模型的方法,在圖像識別、圖像處理、人臉識別、音頻檢索、EGG 分析等應(yīng)用[26]中獲得了非常不錯的效果.Agarap 等[27]提出了一種GRU-SVM 模型,并將其應(yīng)用到入侵檢測分類問題中,取得了較好的效果,受到該論文的啟發(fā),本文提出了一種CNN-SVM 處理模型,利用卷積神經(jīng)網(wǎng)絡(luò)訓練數(shù)據(jù),并將卷積神經(jīng)網(wǎng)絡(luò)的輸出作為SVM 的輸入,模型架構(gòu)如圖1所示.
為適應(yīng)本文CNN-SVM 模型結(jié)構(gòu),將數(shù)據(jù)集進行了預處理,已經(jīng)在數(shù)據(jù)預處理部分進行了介紹,下面將會對本文算法過程進行詳細介紹,主要分為兩大部分:卷積神經(jīng)網(wǎng)絡(luò)的處理和支持向量機的處理.
在卷積神經(jīng)網(wǎng)絡(luò)中,卷積核是最為核心的一個部分,卷積核設(shè)計的好壞關(guān)系到數(shù)據(jù)特征提取效果的優(yōu)劣,它是一個需要特殊設(shè)計的帶權(quán)值矩陣,卷積核將輸入數(shù)據(jù)對應(yīng)部分作加權(quán)和,通過激活函數(shù)的處理產(chǎn)生輸出矩陣.為了讓模型學習到更多有效的特征,并且盡可能的減少時間消耗,本文模型采用兩個卷積層,同時考慮到本文從數(shù)據(jù)中提取到的特征數(shù)量,所以本文模型中第一個卷積層采用32 個卷積核,每個卷積核設(shè)計為一個4×4 的二維矩陣.第二個卷積層采用16 個卷積核,卷積核的大小是2×2,這樣經(jīng)過預處理后的輸入數(shù)據(jù),再經(jīng)過兩個卷積層的卷積處理,有效的采集了數(shù)據(jù)的局部特征,這些特征會按一定形式組合在一起,并以此作為卷積層部分的輸出,每經(jīng)過一個卷積層的處理都會跟隨一個用于特征處理的池化層,進一步對數(shù)據(jù)進行提取,本文使用的兩個池化層卷積核大小均為2×2.在經(jīng)過卷積層和池化層的兩次處理后,利用全連接層對數(shù)據(jù)進行處理.另一方面,考慮到ReLU激活函數(shù)具有較好的性能,收斂速度快,減小了梯度消失的可能性,另一個優(yōu)點是ReLU激活函數(shù)可以將負值輸入轉(zhuǎn)換成零,如式(1)所示,其中x表示輸入信號,因此小于零區(qū)域的輸入不會將神經(jīng)元激活,從而稀疏了網(wǎng)絡(luò)結(jié)構(gòu),使得計算效率較高,同時在結(jié)合本文模型實驗過程中,表現(xiàn)出了很好的性能,因而使用ReLU作為了本文的激活函數(shù).本文模型的CNN 模型結(jié)構(gòu)參數(shù)如表1所示.
圖1 CNN-SVM 模型結(jié)構(gòu)圖
表1 CNN 模型結(jié)構(gòu)參數(shù)
深度學習是一個對輸入數(shù)據(jù)不斷迭代學習,不斷優(yōu)化的過程,數(shù)據(jù)在經(jīng)過CNN 模型處理后,需要進行反向傳播以便更新權(quán)重,從而達到更好的分類效果.因為網(wǎng)絡(luò)異常檢測屬于典型的二分類問題,同時支持向量機本質(zhì)上就是為解決二分類問題而設(shè)計的,所以本文采用了支持向量機(SVM)算法計算鉸鏈損失(hinge loss),然后使用Adam 優(yōu)化函數(shù)來改變梯度.支持向量機通過一定的映射準則把非線性的低維空間中的數(shù)據(jù)樣本映射到高維空間,在高維空間中構(gòu)造一個最優(yōu)的超平面w·x+b=0 ,其中w為該超平面的法向量,b為偏值.對于卷積層和全連接層處理后的輸出,使用支持向量機能更好的將其劃分為兩類.
由于L2-SVM 算法相比于L1-SVM 具有更穩(wěn)定的性能,因此本文采用了L2-SVM 算法,其在一定程度上也降低了過擬合的風險,數(shù)學表達式如式(2)所示.
其中,y′是 實際標簽值,w為該超平面的法向量,b為偏值,n是每批次處理的數(shù)據(jù)量.通過設(shè)置適合于本文模型的懲罰參數(shù)C,使用L2-SVM 計算出鉸鏈損失,最后利用計算出的鉸鏈損失以及設(shè)置合理的學習率,使用Adam 優(yōu)化函數(shù)來優(yōu)化網(wǎng)絡(luò)參數(shù),這樣便達到了更好的訓練效果.
總的來說,本文模型根據(jù)網(wǎng)絡(luò)異常檢測的特點,使用卷積神經(jīng)網(wǎng)絡(luò)學習輸入數(shù)據(jù)的有效特征,最后使用L2-SVM 算法計算出鉸鏈損失,從而根據(jù)損失來優(yōu)化網(wǎng)絡(luò)參數(shù),得到了更好的分類效果.
為了驗證本文模型CNN-SVM 的檢測效果,實驗在8 GB 內(nèi)存、Intel(R)Core(TM)i5-4590 CPU2@3.30 GHz的計算機上進行.本文包含3 個實驗,分別是本文模型CNN-SVM、傳統(tǒng)的入侵檢測模型GRU-Softmax 和Agarap 等[27]提出的GRU-SVM 模型,實驗將本文模型與其它兩個模型在多方面進行了詳細對比.
為了更好的與另外兩個模型進行實驗對比,在評價指標中使用了混淆矩陣,該評價矩陣是2×2 的情況分析表,它非常適宜于對二分類運用情況的評價,以矩陣形式匯總數(shù)據(jù)集中的真實值的類別和預測值的類別,然后根據(jù)此矩陣進行判斷,模型評估的混淆矩陣如表2所示,橫向是預測的值,縱向是真實的值.其中,TP代表著真實值屬于正類,預測值屬于正類的數(shù)量;TN代表著真實值屬于負類,預測值屬于負類的數(shù)量;FP代表著真實值屬于負類,預測值屬于正類的數(shù)量;FN代表著真實值屬于正類,預測值屬于負類的數(shù)量.
表2 模型評估的混淆矩陣
結(jié)合混淆矩陣,本文對真陽性率、真陰性率、假陽性率以及假陰性率進行實驗了對比,其中,式(3)至式(6)表示的是實驗結(jié)果中的真陽性率,真陰性率,假陽性率和假陰性率的計算方法,名詞含義如表3所示.
另外,本文實驗在準確率、召回率、精準率以及誤報率4 個方面進行了對比,各性能指標的公式如式(7)至式(10)所示,各個公式的釋義如表4所示.
表3 名詞含義
表4 名詞釋義
為了更加真實、可靠的進行網(wǎng)絡(luò)模型訓練,實驗采用權(quán)威數(shù)據(jù)集—京都大學蜜罐系統(tǒng)的網(wǎng)絡(luò)流量數(shù)據(jù)[24]進行實驗,其中,用于訓練模型的數(shù)據(jù)集和用于測試的數(shù)據(jù)集的具體分布情況如表5所示.
表5 訓練數(shù)據(jù)集和測試數(shù)據(jù)集的類別分布情況(單位:條)
在進行實驗過程中,會使用到較多預先設(shè)定的超參數(shù),CNN-SVM、GRU-Softmax 和GRU-SVM 這3 種網(wǎng)絡(luò)算法模型所采用的超參數(shù)如表6所示,其中,超參數(shù)分別是Batch_Size (每批處理的數(shù)據(jù)條數(shù))、EPOCHS(訓練的輪次數(shù))、LEARNING_RATE (學習率)、CELL_SIZE (隱藏單元的個數(shù))、NUM_CLASS (類別數(shù)量)、KEEP_PROB (元素被保留的概率)、SVM_C (懲罰參數(shù)).
通過實驗,模型CNN-SVM、GRU-Softmax 和GRU-SVM 測試后TP、TN、FP、FN統(tǒng)計情況分布如表7所示.
通過計算CNN-SVM、GRU-Softmax 和GRUSVM 等3 種網(wǎng)絡(luò)模型的測試性能:真陽性率、真陰性率、假陽性率、假陰性率如表8所示.實驗表明,本文模型CNN-SVM 通過上述4 個方面參數(shù)比較,誤判率較低,其性能都優(yōu)于另外兩個模型,從而提高了網(wǎng)絡(luò)異常檢測的準確率.
表6 3 種模型實驗超參數(shù)設(shè)置
表7 3 種模型測試的TP、TN、FP、FN數(shù)量分布
表8 3 種模型測試性能
另外,實驗對CNN-SVM、GRU-Softmax 和GRUSVM 等3 種網(wǎng)絡(luò)模型測試數(shù)據(jù)的準確率、召回率、精準率以及誤報率進行了統(tǒng)計,結(jié)果如表9所示.實驗統(tǒng)計表明,雖然GRU-SVM 的性能相比于GRU-Softmax有較大的提升,但本文模型相較于GRU-SVM 模型有更大的提升,從而證明了本文模型的可行性.
表9 3 種模型在測試集中表現(xiàn)的評價指標的統(tǒng)計數(shù)據(jù)
3種模型的訓練時間如表10所示,其中本文模型CNN-SVM 的訓練和測試時間都優(yōu)于其它兩個模型.3 種模型的在訓練數(shù)據(jù)集中的準確率和測試數(shù)據(jù)集中的準確率如圖2和圖3所示,從示意圖中能夠看出,本文模型在訓練數(shù)據(jù)以及測試數(shù)據(jù)上準確率都高于其它兩種模型.
表10 3 種模型所用的訓練時間統(tǒng)計(單位:s)
圖2 3 種模型在訓練數(shù)據(jù)集中的準確率對比
圖3 3 種模型在測試數(shù)據(jù)集中的準確率對比
3種模型訓練時的損失變化曲線如圖4、圖5和圖6所示.
從圖4~圖6可以發(fā)現(xiàn),GRU-Softmax 模型損失變化波動幅度較大,相比之下CNN-SVM 模型和GRUSVM 模型損失曲線相對平緩,但從曲線變化趨勢可以看出CNN-SVM 要優(yōu)于GRU-SVM 模型,因而可以看出本研究所提出的模型在收斂性方面表現(xiàn)最好.
圖4 CNN-SVM 模型訓練的損失變化曲線
圖5 GRU-SVM 模型訓練的損失變化曲線
圖6 GRU-Softmax 模型訓練的損失變化曲線
本文提出了一種新型的網(wǎng)絡(luò)入侵異常檢測方法模型CNN-SVM,該模型首先利用卷積神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)進行處理,通過多個卷積層和池化層,學習訓練數(shù)據(jù)中的有效特征,然后將卷積神經(jīng)網(wǎng)絡(luò)的輸出作為支持向量機(SVM)的輸入.通過與傳統(tǒng)模型GRU-Softmax 和新模型GRU-SVM 進行實驗對比,本文模型在準確率上分別提高了19.39%和12.83%,同時誤報率較低,本文模型也大大降低了訓練時間和測試時間,從而驗證了本文模型在網(wǎng)絡(luò)異常檢測中具有更好的檢測效果.但是,本文模型CNN-SVM 僅在當前數(shù)據(jù)集上驗證了模型的檢測效果,下一步將會把本文模型應(yīng)用到多種數(shù)據(jù)集上,并繼續(xù)優(yōu)化模型,進一步提高檢測效果.