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