張鑫杰,任午令
(浙江工商大學(xué)計算機(jī)與信息工程學(xué)院,杭州,310018)
互聯(lián)網(wǎng)技術(shù)的發(fā)展正潛移默化地改變著人們的生活方式,拉近了人與人之間的距離,給人們的生活帶來了許多方便,但是任何事情都有兩面性,隨著網(wǎng)絡(luò)的普及,通過網(wǎng)絡(luò)進(jìn)行攻擊犯罪的事件也越來越多,一些勒索攻擊在生活中已經(jīng)屢見不鮮。面對日益嚴(yán)峻的攻擊行為,人們需要研究并部署安全系統(tǒng)來保護(hù)自己的電腦和相關(guān)的服務(wù)器,而入侵檢測系統(tǒng)(Intrusion detection systems,IDS)[1-2]作為一種檢測是否存在外界入侵行為的預(yù)防手段,對維護(hù)計算機(jī)系統(tǒng)安全、確保網(wǎng)絡(luò)的正常運行有著十分重要的意義[3-4]。
隨著技術(shù)的發(fā)展,運用于入侵檢測的方法也越來越多,從以前的基于規(guī)則進(jìn)行檢測[5]到傳統(tǒng)的機(jī)器學(xué)習(xí)[6],再到現(xiàn)在的深度學(xué)習(xí),學(xué)者們已經(jīng)做了大量的研究。比如文獻(xiàn)[7]中提出通過遺傳算法來尋找最合適的反向傳播(Back propagation,BP)神經(jīng)網(wǎng)絡(luò)權(quán)值,對傳統(tǒng)的BP 神經(jīng)網(wǎng)絡(luò)進(jìn)行了改進(jìn),提升了整個網(wǎng)絡(luò)的性能,但是在實際場景中數(shù)據(jù)的維數(shù)并不是固定不變的,如果數(shù)據(jù)的維數(shù)過高,冗余量大會導(dǎo)致整個網(wǎng)絡(luò)的計算復(fù)雜度大大增加從而使檢測的時間增加;文獻(xiàn)[8]提出將模糊C 均值聚類(Fuzzy C-means,F(xiàn)CM)應(yīng)用于入侵檢測中,可以有效地檢測出部分未知的攻擊,并且適用于動態(tài)的網(wǎng)絡(luò)環(huán)境,但是當(dāng)數(shù)據(jù)類別較多時需要很長的計算時間;文獻(xiàn)[9]提出通過信息增益(Information gain,IG)和主成分分析法(Principal component analysis, PCA)方法相結(jié)合進(jìn)行特征提取,通過這種方法進(jìn)行數(shù)據(jù)的降維有效地提高了分類模型的檢測率,但在降低誤檢率上效果并不是很理想;文獻(xiàn)[10]中提出使用Fisher-FCBF 算法來進(jìn)行特征提取,雖然大大降低了模型的計算時間,但在準(zhǔn)確率和誤報率方面并沒有提高;文獻(xiàn)[11]中先根據(jù)屬性比率數(shù)據(jù)特征提取方法進(jìn)行數(shù)據(jù)處理,然后進(jìn)行高斯混合聚類,最后使用隨機(jī)森林進(jìn)行分類,提高了準(zhǔn)確率,但是聚類時k 值難以確定,聚類的好壞對分類結(jié)果有較大的影響;文獻(xiàn)[12]提出通過獨立成分分析(Independent component analysis,ICA)算法來進(jìn)行特征提取,消除特征的冗余性,使模型具有更好的特征學(xué)習(xí)能力和更精確的分類能力。
綜上所述,現(xiàn)有的入侵檢測方法對數(shù)據(jù)進(jìn)行特征提取后往往只對分類模型的準(zhǔn)確率、誤報率和檢測時間等的某一方面做了改善,同時一些具有學(xué)習(xí)功能的方法在運行性能上也存在著不足。為此,本文提出了一種基于Fisher-PCA 和深度學(xué)習(xí)的入侵檢測方法。通過改進(jìn)的Fisher-PCA 特征提取方法,提高了入侵檢測分類模型的準(zhǔn)確率、檢測率,降低了誤報率;通過搭建具有收斂速度快、學(xué)習(xí)能力強(qiáng)等特征的深度神經(jīng)網(wǎng)絡(luò)(Deep neural networks, DNN)對數(shù)據(jù)進(jìn)行分類,進(jìn)一步提高了模型的運行性能;最后使用公開的KDD99 數(shù)據(jù)集對該入侵檢測算法進(jìn)行了測試,以驗證算法的有效性。
本文提出的一種基于Fisher-PCA 和深度學(xué)習(xí)的入侵檢測模型,能夠有效處理那些維度高、冗余量大的數(shù)據(jù),并且在準(zhǔn)確率和誤報率上有較好的表現(xiàn),其基本流程圖如圖1 所示。
首先對測試集和訓(xùn)練集中的數(shù)據(jù)進(jìn)行預(yù)處理,將每條報文數(shù)據(jù)的符號特征數(shù)字化(包括類別),再對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,然后進(jìn)行數(shù)據(jù)的Fisher 特征選擇和PCA 降維,將其輸入到設(shè)計好的DNN 神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,多次訓(xùn)練后模型達(dá)到最優(yōu)化,最后輸入測試集得到結(jié)果并對結(jié)果進(jìn)行規(guī)范化處理做出反應(yīng)。
Fisher 特征選擇算法的大體思路是借鑒了線性判別分析(Linear discriminant analysis,LDA)算法。LDA 是Fisher 于1936 年提出的一種有監(jiān)督學(xué)習(xí)的降維方法,其思想是將樣本點投影到一條直線上,使同類的樣本點盡可能地集中,而使不同類的樣本點盡量分離。下面給出如何找到這條直線的數(shù)學(xué)公式。
圖1 基本流程圖Fig.1 Basic flow chart
定義Sw、Sb和St分別表示類內(nèi)、類間和總體散度矩陣,滿足St=Sb+Sw,線性空間的某一條直線為向量W,則目標(biāo)函數(shù)可定義為[13]
求解出J(W)的極大值W?,則向量W?就是所要求解的這條直線。
根據(jù)LDA 算法的思想可以得出如下結(jié)論:在同一特征下,當(dāng)滿足類間相似度越大,而類內(nèi)相似度越小,說明該特征對于分類的有效性更高,該特征也就更加重要。Fisher 特征選擇算法的偽代碼如下。
輸入:訓(xùn)練樣本數(shù)據(jù)集。
輸出:重新排列后的數(shù)據(jù)集。
(1)計算輸入數(shù)據(jù)集的特征數(shù)n,類別數(shù)m。
fori=1:n
計算出每個特征的所有數(shù)據(jù)的平均值
forj=1:m
計算該特征值的所有類別各自方差,并把他們相加,表示類內(nèi)方差temp1;
計算該特征值下每一類數(shù)據(jù)的平均值和樣本總平均值的方差,將這些方差相加為類間方差temp2;
(2)計算特征重要性=temp2/(temp1+0.01)(避免temp1 為0)。
(3)按特征重要性降序排列。
PCA[14]是一種統(tǒng)計學(xué)方法,其目的是如何以最少的信息丟失將原有的變量濃縮成少數(shù)幾個因子(主成分),其具體的步驟如下。
(1)數(shù)據(jù)標(biāo)準(zhǔn)化,以消除量綱對數(shù)據(jù)的干擾。
式中:xij為矩陣中第i行第j列的值,μj和σj分別為第j維向量的均值和標(biāo)準(zhǔn)差,每個數(shù)據(jù)標(biāo)準(zhǔn)化后的結(jié)果為Zij。
(2)計算協(xié)方差矩陣S
(3)根據(jù)協(xié)方差矩陣S計算出對應(yīng)的特征值(λ1,λ2,…,λp)和特征向量a1,a2,…,ap。
(4)根據(jù)得到的特征值計算貢獻(xiàn)率η和累計貢獻(xiàn)率∑η。
(5)確定累計貢獻(xiàn)率大于某一值時滿足要求,取出前k個特征值對應(yīng)的特征向量a1,a2,…,ak組成p行k列的變換矩陣Q。
(6)得到降維后的k維數(shù)據(jù)矩陣T
首先確定網(wǎng)絡(luò)結(jié)構(gòu),設(shè)計了包含4 個隱藏層的DNN 模型,其中每一個隱藏層分別含有64 個隱藏單元,每一層訓(xùn)練的結(jié)果都作為下一層的輸入。
使用線性整流函數(shù)(Rectified linear unit,ReLU)作為模型中間層的激活函數(shù)。引入激活函數(shù)的目的是為了增加神經(jīng)網(wǎng)絡(luò)各層之間的非線性關(guān)系而不是簡單的矩陣相乘。與sigmoid 等其他一些激活函數(shù)相比,此激活函數(shù)不僅節(jié)省了計算時間,而且很好地解決了反向傳播時常常出現(xiàn)的不穩(wěn)定和梯度消失問題,其數(shù)學(xué)表達(dá)式為[15]
即當(dāng)x≥0 時,f(x)=x;當(dāng)x<0 時,f(x)= 0,如圖2 所示。
使用一種好的優(yōu)化算法是深度學(xué)習(xí)模型的關(guān)鍵,本模型使用Adam 優(yōu)化算法[16]來代替?zhèn)鹘y(tǒng)的梯度下降算法,與其他算法主要的區(qū)別在于為不同的參數(shù)設(shè)計獨立的自適應(yīng)學(xué)習(xí)率,其有著收斂的速度更快,所需內(nèi)存更小,損失函數(shù)波動較小等優(yōu)勢,適合解決包含大規(guī)模數(shù)據(jù)和參數(shù)的優(yōu)化問題。Adam 算法的核心步驟如下:
(1)計算開始t時間步的梯度
圖2 ReLU 激活函數(shù)Fig.2 ReLU activation function
(2)計算梯度均值
(3)計算梯度平方均值
(4)對梯度均值mt偏差進(jìn)行糾正,以降低對訓(xùn)練初期的影響
(5)對梯度平方均值vt偏差糾正
(6)更新梯度值(α為學(xué)習(xí)率,ε為默認(rèn)常數(shù))
最后一層采用Softmax 分類器,它是一種多類別分類器,將多個神經(jīng)元的輸出映射到[0,1]區(qū)間內(nèi),這些值的累加和為1(滿足概率性質(zhì)),最后選取出概率最大的結(jié)點作為分類結(jié)果。
實驗環(huán)境的各項指標(biāo)為,CPU:3.30 GHz;內(nèi)存:8 GB;顯卡:Intel(R) HD Graphics 4600 (2112 MB);OS:Windows7.0;開發(fā)環(huán)境:Pycharm 2019.1.2。
實驗所使用的數(shù)據(jù)集是由KDD Cup99[17]提供的10% 訓(xùn)練樣本和corrected 的測試樣本,訓(xùn)練集數(shù)據(jù)共494 021 條,測試集數(shù)據(jù)共311 029 條。數(shù)據(jù)集中各個類型的數(shù)據(jù)分布如表1 所示。
2.3.1 符號特征數(shù)字化
由于KDD99 數(shù)據(jù)樣本的42 維特征中,某些特征的值不是數(shù)值類型,所以要將其先轉(zhuǎn)為數(shù)字特征,通過如下方式處理:
表1 實驗數(shù)據(jù)類型的分布情況表Table 1 Distribution of experimental data types
(1)協(xié)議類型:共有3 種,將其從0 開始遞增順序?qū)ζ渚幋a,即
Protocol_type={“icmp”:0;“tcp”:1;“udp”:2}
(2)目標(biāo)主機(jī)的網(wǎng)絡(luò)服務(wù)類型:共有70 種,從0 開始遞增順序?qū)ζ渚幋a,即
Service_type={“IRC”:0;“X11”:1;“Z39_50”:2;…}
(3)連接正?;蝈e誤的狀態(tài):共有11 種,從0 開始遞增順序?qū)ζ渚幋a,即
Connection_type={“OTH”:0;“REJ”:1;“RSTO”:2;…}
(4)攻擊類型:即第42 維的攻擊類型標(biāo)簽,將其分為5 大類,從0 開始遞增序列對其編碼,即
Lable_type={“Normal”:0;“Dos”:1;“Probe”:2;“U2R”:3;“R2L”:4}
原數(shù)據(jù)樣例:
0,tcp,http,SF,181,5 450,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,9,9,1.00,0.00,0.11,0.00,0.00,0.00,0.00,0.00,normal
數(shù)字化后的數(shù)據(jù)樣例:
0,1,22,9,181,5 450,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,9,9,1.00,0.00,0.11,0.00,0.00,0.00,0.00,0.00,0
2.3.2 數(shù)據(jù)標(biāo)準(zhǔn)化
因為數(shù)據(jù)之間的量綱和數(shù)值的量級不一樣,所以如果不進(jìn)行標(biāo)準(zhǔn)化會對模型訓(xùn)練時間和檢測性能產(chǎn)生不小的影響。數(shù)據(jù)的標(biāo)準(zhǔn)化方法有很多種,本文所使用的標(biāo)準(zhǔn)化方法為min-max 方法,描述如下:定義序列x1,x2,…,xn公式為
yi的范圍在0 到1 之間,且沒有量綱。
標(biāo)準(zhǔn)化后的數(shù)據(jù)樣例:
0,5.000 000 00e-01,3.333 333 43e-01,8.999 999 76e-01,2.610 417 77e-07,1.057 130 05e-03, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.565 557 72e-02, 1.565 557 72e-02, 0, 0, 0, 0, 1, 0, 0,3.529 411 93e-02,3.529 411 93e-02,1,0,1.099 999 99e-01,0,0,0,0,0,0
2.3.3 Fisher 特征選擇
使用Fisher 特征選擇算法對訓(xùn)練集進(jìn)行特征選擇,得到每個特征索引號對應(yīng)的評價函數(shù)值,然后根據(jù)所得的評價函數(shù)值由高到底對相對應(yīng)的特征索引號進(jìn)行排序如下: [20,21,23,12,24,2,36,32,3,29,39,25,26,38,4,31,37,34,35,1,33,6,22,19,8,10,30,17,18,14,16,15,11,41,27,28,13,7,9,40,5],本實驗選取前35 個特征,組成新的35 維的訓(xùn)練數(shù)據(jù)集,對測試集也選取對應(yīng)的特征集組成新的測試集。
2.3.4 PCA 降維處理
通過PCA 降維方法對Fisher 特征選擇后的訓(xùn)練數(shù)據(jù)集進(jìn)行降維,得到的累計貢獻(xiàn)率與維數(shù)的關(guān)系如圖3 所示。為了在降維的同時盡量保留原始記錄的信息,取累計貢獻(xiàn)率為99.9%,即取陣的前20 維作為新的訓(xùn)練數(shù)據(jù)集,保留了幾乎全部原始數(shù)據(jù)集特征信息的同時達(dá)到降維目的,然后將訓(xùn)練數(shù)據(jù)集降維得到的變換矩陣對特征選擇后的測試集降維。
2.3.5 實驗結(jié)果及分析
采用準(zhǔn)確率AC、檢測率DR 和誤報率FA 來作為評價指標(biāo),其計算公式為
圖3 累計貢獻(xiàn)率與維數(shù)關(guān)系圖Fig.3 Relationship between cumulative contribution rate and the dimension
其中公式中各變量的含義如表2 所示。
這里將本文設(shè)計的DNN 模型命名為NDNN,將帶有Fisher-PCA 特征處理功能的模型命名為FP_NDNN,時間為檢測時間。這兩種模型的指標(biāo)對比如表3 所示。
表2 評價指標(biāo)中各變量的含義Table 2 Meaning of the variables in the evaluation index
表3 NDNN 和FP_NDNN 模型的指標(biāo)比較Table 3 Index comparison between NDNN and FP_NDNN models
由表3 對比可知,經(jīng)過Fisher 和PCA 進(jìn)行特征處理后的模型在準(zhǔn)確率和檢測率上有較小的提升,但在入侵檢測中的重要指標(biāo)誤報率上有較大的降低,相比于NDNN 模型的誤報率相對降低了77.2%。檢測時間下降了25%。
FP_NDNN 模型與其他模型的指標(biāo)對比如表4 所示。
表4 FP_NDNN 模型與其他模型的指標(biāo)比較Table 4 Index comparison between FP_NDNN and other models
由表4 對比可知,本文模型FP_NDNN 與傳統(tǒng)的機(jī)器學(xué)習(xí)算法支持向量機(jī)(Support vector machine, SVM)和傳統(tǒng)的人工神經(jīng)網(wǎng)絡(luò)(Artificial neural network, ANN)相比,在各個性能上都有大幅度的提高;與通過PCA 對數(shù)據(jù)進(jìn)行處理并結(jié)合卷積神經(jīng)網(wǎng)絡(luò)的PCA-CNN 算法相比,在準(zhǔn)確率和檢測率上不相上下,但是誤報率下降了36%;與DBN4 算法相比可能在準(zhǔn)確率和檢測率上略有不足,但在誤報率上下降了63%。
本文所采用的模型結(jié)構(gòu)為64—64—64—64,不同的模型結(jié)構(gòu)對實驗結(jié)果可能會有不同的影響,一些不同的模型結(jié)構(gòu)的指標(biāo)比較如表5 所示。
表5 不同模型結(jié)構(gòu)的指標(biāo)比較Table 5 Index comparison of different model structures
由表5 對比可知:模型結(jié)構(gòu)越復(fù)雜,其檢測所需的時間也越長;在準(zhǔn)確率和檢測率上,第3 和第4 種模型要略好于第1 和第2 種;在誤報率方面,不同的模型結(jié)構(gòu)差別還是比較大,并不是越復(fù)雜的模型結(jié)構(gòu)誤報率越低,4 種模型結(jié)構(gòu)中第3 種誤報率最低,也是本文所采用的。
上述所分析的是模型對正常數(shù)據(jù)和攻擊數(shù)據(jù)的檢測效果,使用FP_NDNN 模型對不同攻擊類型進(jìn)行檢測并與其他模型進(jìn)行比較的結(jié)果如表6 和7 所示,評價指標(biāo)與前面不同,這里所使用的準(zhǔn)確率和漏報率的計算公式分別為
準(zhǔn)確率=預(yù)測的攻擊類型和實際的攻擊類型相同的數(shù)目/預(yù)測為該攻擊類型的數(shù)目
漏報率=把某類攻擊樣本預(yù)測為正常樣本的數(shù)量/該類攻擊樣本的數(shù)量。
表6 對不同攻擊類型檢測的準(zhǔn)確率Table 6 Detection accuracy of different attack types %
表7 對不同攻擊類型檢測的漏報率Table 7 False negative rates of different attack types of detection %
由表6 和7 結(jié)果對比可知:對于Dos 攻擊類型的檢測,3 種模型的檢測效果都不錯,并且指標(biāo)也不相上下;對于Probe 攻擊類型地檢測,本文方法與GBDT 模型不相上下,要優(yōu)于文獻(xiàn)[20]的方法;對于U2R攻擊類型的檢測,GBDT 模型的檢測效果最差,本文方法略優(yōu)于文獻(xiàn)[20];對于R2L 攻擊類型的檢測,文獻(xiàn)[20]在準(zhǔn)確率方面要優(yōu)于GBDT 模型和本文方法,但是在漏報率方面,本文方法要略好于其他兩種模型。
由于現(xiàn)在網(wǎng)絡(luò)上的攻擊數(shù)據(jù)維度高、噪聲大,如果不進(jìn)行特征的提取,當(dāng)模型進(jìn)行學(xué)習(xí)時,不僅效率和性能低下,而且分類的結(jié)果也不是特別理想。本文通過Fisher 方法進(jìn)行特征的選擇,再用PCA 進(jìn)行特征降維。在不改變數(shù)據(jù)特征信息的同時,能夠有效地減少模型的檢測時間。實驗表明,通過Fisher和PCA 進(jìn)行特征提取能夠使NDNN 深度神經(jīng)網(wǎng)絡(luò)模型在提高準(zhǔn)確率和檢測率的同時,大大地降低誤報率。與其他一些模型相比,本文模型在誤報率上有明顯的優(yōu)勢。但是,此方法可能不是最好的提取特征的方法,NDNN 神經(jīng)網(wǎng)絡(luò)模型的性能也存在著進(jìn)一步提升的空間,而要更加充分學(xué)習(xí)數(shù)據(jù)特征之間的關(guān)系。在后續(xù)工作中,可進(jìn)一步研究更好的特征提取方法,與分類模型有效地融合,并改進(jìn)模型的優(yōu)化算法,將此入侵檢測算法應(yīng)用于實際的網(wǎng)絡(luò)中進(jìn)行實驗并不斷改進(jìn)。