曾文獻,張淑青,孟慶林,李子坤
(河北經(jīng)貿(mào)大學 信息技術(shù)學院,河北 石家莊 050061)
隨著科技的發(fā)展,互聯(lián)網(wǎng)技術(shù)廣泛應用于人類生活的方方面面,但用戶在享受便利的同時,網(wǎng)絡(luò)攻擊變得越來越嚴重,導致用戶的個人信息甚至財產(chǎn)受到嚴重的威脅.在此環(huán)境的影響下,網(wǎng)絡(luò)入侵檢測系統(tǒng)(IDS)成為最新ICT(Information and Communication Technology)系統(tǒng)中不可或缺的一層,網(wǎng)絡(luò)入侵檢測技術(shù)根據(jù)信息來源的不同和檢測方法的差異進行信息分類,進而確定數(shù)據(jù)是正常還是異常[1].本研究選擇了誤差反向傳播神經(jīng)網(wǎng)絡(luò)(BPNN)方法構(gòu)建模型,并采用KDD99數(shù)據(jù)集作為實驗數(shù)據(jù)集.KDD99數(shù)據(jù)集主要涵蓋拒絕服務攻擊(Dos)、來自遠程主機的未授權(quán)訪問(R2L)、未授權(quán)的本地超級用戶特權(quán)訪問(U2R)、端口監(jiān)視或掃描(Probe)和高級持續(xù)性威脅(APT)等攻擊類型.其中APT攻擊具有高度隱蔽、手段多樣和目標明確的特點[2],具有極大的破壞力,是目前國內(nèi)外網(wǎng)絡(luò)入侵技術(shù)研究的重點,本研究將APT攻擊作為重點研究對象之一,APT攻擊的階段圖見圖1.
圖1 APT攻擊階段圖
在傳統(tǒng)的網(wǎng)絡(luò)入侵檢測方法中,存在著收斂速度慢、資源占用率大、成本高等缺點[3].并且當突發(fā)入侵事件發(fā)生時,部分檢測方法不能夠識別該網(wǎng)絡(luò)攻擊行為,進而導致信息泄露.為了解決上述問題,首先對不同入侵行為的目的進行分析,使用分類算法確定原始數(shù)據(jù)的主要特征,進行數(shù)據(jù)的預處理,偏差標準化算法(Z-Core)將連續(xù)數(shù)據(jù)離散化,然后使用相同數(shù)據(jù)集進行模擬實驗訓練并對結(jié)果進行分析對比,以提高模型的準確率和穩(wěn)定性.
系統(tǒng)的處理流程主要包括數(shù)據(jù)提取、數(shù)據(jù)處理、攻擊分析及報警響應.具體流程如圖2所示.
圖2 系統(tǒng)處理流程
數(shù)據(jù)提取主要是對網(wǎng)路攻擊數(shù)據(jù)的采集,根據(jù)不同的攻擊行為,盡可能多地提取不同類型的數(shù)據(jù),以保證實驗結(jié)果的準確性;數(shù)據(jù)處理是對已提取的數(shù)據(jù)進行預處理的過程,以減小檢測誤差;攻擊分析是對不同的入侵行為的分析,以檢測攻擊類型;報警響應是解決已檢測出的攻擊的重要措施,可以根據(jù)入侵數(shù)據(jù)的危害程度,選擇主動或被動兩種方案.
BPNN的主要特點是信號前向傳播,而誤差反向傳播,優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)模型的訓練流程如圖3所示.模型訓練結(jié)束后,將測試數(shù)據(jù)傳入優(yōu)化的BP模型中,分析攻擊類型并報警響應,根據(jù)測試結(jié)果,判斷模型的性能.
圖3 模型訓練流程
BP神經(jīng)網(wǎng)絡(luò)模型在人工神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上使用梯度下降優(yōu)化算法進行數(shù)據(jù)集訓練,是目前使用最廣泛的模型之一[2].相較于其他神經(jīng)網(wǎng)絡(luò),BP網(wǎng)絡(luò)相對成熟,結(jié)構(gòu)上分為輸入層、1個或多個隱藏層及輸出層3部分[4].
BP神經(jīng)網(wǎng)絡(luò)的過程主要可分兩階段,第一階段為信號的前向傳播,信號從輸入層經(jīng)過隱藏層再到輸出層;第二階段為誤差的反向傳播,從輸出層到隱含層再到輸入層.在這兩個階段不停地對輸入層到隱藏層的權(quán)重wij和偏置aj以及隱藏層到輸出層的權(quán)重wjk和偏置bk進行修改.假設(shè)輸入層、輸出層、隱藏層的節(jié)點個數(shù)分別為n,m,l,學習率為η,Yk為輸出期望,具體計算如公式(1)~(4)所示.
隱藏層的輸出公式:
輸出層的輸出公式:
誤差計算公式:
在上式中,令 ek=(Yk-Ok),則則權(quán)值的更新公式可記為:
以上公式中,i=1,2,…,n,j=1,2,…,l,k=1,2,…,m.
盡管傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)在非線性映射能力、自學習和自適應、泛化能力和容錯能力等方面相較于其他傳統(tǒng)機器學習方法有一定的優(yōu)勢[5],但隨著研究的深入,不足之處也越發(fā)明顯.包括:1)容易導致局部最優(yōu);2)訓練過程中的收斂速度比較慢;3)檢測能力和訓練能力之間容易出現(xiàn)過擬合現(xiàn)象.針對這些問題,本研究主要從改進BP神經(jīng)網(wǎng)絡(luò)Dropout隨機丟棄方法和改變激活函數(shù)兩方面進行優(yōu)化,將節(jié)點間的相關(guān)性與Dropout正則化方法相結(jié)合,根據(jù)節(jié)點間的相關(guān)程度以不同的概率刪除節(jié)點,進而提高檢測的效率.
2.2.1 Dropout正則化方法
Dropout正則化方法是一種預防神經(jīng)網(wǎng)絡(luò)過擬合的方法[6],Dropout正則化方法是將隱藏層的N個神經(jīng)元在每次訓練的迭代過程中,以概率P(一般P=0.5)隨機暫時刪除部分神經(jīng)元,用余下的(1-P)*N個神經(jīng)元所構(gòu)成的網(wǎng)絡(luò)進行訓練,訓練結(jié)果如圖4所示.
節(jié)點的隨機丟棄首先是根據(jù)定義好的概率P進行選擇要刪除的節(jié)點,強制將其激活值置為0,根據(jù)概率P生成二項分布的向量q(n)(由0和1構(gòu)成),0表示節(jié)點被暫時刪除,連接斷開,1表示節(jié)點被保留.將向量q(n)與上層的輸出q(n)相乘得到X1(n)作為這層的輸入,用于BP神經(jīng)網(wǎng)絡(luò)的訓練,達到隨機丟棄的效果.具體計算如公式(5)~(8)所示:
以上公式中,Binomial(p)為二項分布,X(n)表示上層輸出的節(jié)點,W(n+1)表示權(quán)重矩陣,B(n+1)表示偏置向量,g則表示激活函數(shù),經(jīng)過刪除處理后的節(jié)點X1(n)乘以對應的權(quán)重W(n+1)加上偏置B(n+1),再過激活函數(shù),得到輸出值 Z(n+1).
2.2.2 PReLU函數(shù)代替ReLU函數(shù)
在激活函數(shù)選擇的過程中,雖然ReLU激活函數(shù)在BP神經(jīng)網(wǎng)絡(luò)研究過程中應用較為廣泛,但考慮到入侵檢測應用過程中需要大量的數(shù)據(jù),而ReLU激活函數(shù)將矩陣內(nèi)的負值都設(shè)為0,容易丟失全部負數(shù)參數(shù)信息,并且在較大梯度流參數(shù)更新后,易發(fā)生鎖死現(xiàn)象.針對這些問題本研究提出了用PReLU函數(shù)代替ReLU函數(shù)作為隱藏層的激活函數(shù),具體函數(shù)表達式如下式所示:
圖4 Dropout訓練的網(wǎng)絡(luò)結(jié)構(gòu)
式中i表示不同的通道,由公式(6)、(7)可以看出,PReLU在輸入小于0時,不會丟失全部負數(shù)輸入?yún)?shù)信息,因此不易發(fā)生訓練鎖死現(xiàn)象[7].當a更新時,采用帶動量更新方式,帶動量更新公式如下所示:
函數(shù)曲線圖如圖5所示.
圖5PReLU函數(shù)曲線圖
2.2.3 改進的Dropout隨機丟棄方法
在入侵檢測技術(shù)的設(shè)計過程中,考慮到使用Dropout正則化方法丟棄節(jié)點后,剩余節(jié)點的相關(guān)性過大會導致大量的數(shù)據(jù)冗余,使神經(jīng)網(wǎng)絡(luò)的稀疏性降低,進而影響入侵檢測算法執(zhí)行的效率,因此本研究將節(jié)點間的相關(guān)性與Dropout正則化方法相結(jié)合,以不同的概率刪除節(jié)點.若節(jié)點間的相關(guān)性較大,則以較大的概率刪除節(jié)點,同時對神經(jīng)網(wǎng)絡(luò)進行稀疏性處理;若節(jié)點間的相關(guān)性較小,則以適度小的概率刪除節(jié)點,保留數(shù)據(jù)的特征,進而優(yōu)化BP神經(jīng)網(wǎng)絡(luò),以提高入侵檢測技術(shù)檢測結(jié)果的準確性.
在改進過程中,首先,節(jié)點間相關(guān)性大小是由輸出向量之間的相關(guān)性決定的,對于節(jié)點vi和vj,如果存在vj=a*vi+b(a,b 為實數(shù)),則稱節(jié)點 vj可由 vi線性表示. 節(jié)點 vi對其下層節(jié)點 vm的輸出為 yim=g(viwim+bi),所以節(jié)點 vi的輸出向量為 Yi=[yj0,yj1,…,yjn],同理,得到節(jié)點 vj的輸出向量為 Yj=[yj0,yj1,…,yjn].
節(jié)點間的相關(guān)性由各個節(jié)點輸出值的方差決定,節(jié)點輸出值的方差計算公式為:
式中vin代表的是第i個節(jié)點的第n批次的輸出,vi是第i個節(jié)點的所有輸出值的期望.得到所有節(jié)點的輸出,構(gòu)成作用于下一層每個節(jié)點的向量,節(jié)點相關(guān)性的計算公式為:
根據(jù)公式(12)計算這一層中任意兩個節(jié)點間的相似性Rij,根據(jù)Rij值的大小引入閾值(一般為介于0和1之間的值,根據(jù)網(wǎng)絡(luò)復雜性和經(jīng)驗進行調(diào)整),區(qū)分為高度相關(guān)和低度相關(guān).以不同的概率生成一個二項分布的向量q(n),將q(n)與上層的輸出Y(n)的積Y1(n)作為這層的輸入,最后,通過公式(15)計算得到最終輸出值.具體計算公式如下:
基于BP神經(jīng)網(wǎng)絡(luò)的入侵檢測技術(shù)在研究過程中對數(shù)據(jù)集的要求很高,基于PSO-BP神經(jīng)網(wǎng)絡(luò)的入侵檢測技術(shù)優(yōu)化算法的研究[8]中采用了KDD99入侵測試數(shù)據(jù)集,因此本研究也選擇了性能優(yōu)異、影響范圍廣的KDD99數(shù)據(jù)集進行實驗,以檢驗入侵算法的好壞,并按照相應的算法對數(shù)據(jù)集進行數(shù)據(jù)預處理后進入神經(jīng)網(wǎng)絡(luò)模塊中進行訓練.同時,為保證實驗過程的嚴謹性,本研究對河北經(jīng)貿(mào)大學受到的網(wǎng)絡(luò)攻擊進行提取分類,并將其與KDD99數(shù)據(jù)集混合,共同進行模型的訓練與測試.
3.1.1 KDD99數(shù)據(jù)集分析
KDD99數(shù)據(jù)集共包含4類異常特征、39種攻擊,其中有22種訓練集和17種未知攻擊類型的測試集.數(shù)據(jù)集中的攻擊類型及分類標識如表1所示.
表1 攻擊類型及分類標識
3.1.2 數(shù)據(jù)預處理
通過對KDD99數(shù)據(jù)集的分析可以看出,該數(shù)據(jù)集已經(jīng)去噪處理且比較理想,但不同攻擊類型的數(shù)據(jù)差異很大,比如U2R攻擊僅占0.01%,R2L占0.23%,Probe占0.83%,Normal占19.69%[9].因此,在研究過程中將訓練集與測試集的數(shù)據(jù)混合均勻,然后進行去重處理并按照訓練集測試集8∶2的比例進行數(shù)據(jù)的劃分,生成新的訓練集和測試集.
數(shù)據(jù)預處理過程包括標記處理和特征處理.本研究用數(shù)字0到n-1來表示字符特征.對標記處理來講,按照表1將數(shù)據(jù)集中的樣本的攻擊類型轉(zhuǎn)換為Normal,Dos,Probe,U2R,R2L 5個類別.由于檢測系統(tǒng)不能處理字符串,因此通過字符轉(zhuǎn)換將5個類別轉(zhuǎn)換為數(shù)字型,分別用0,1,2,3,4來表示.
特征處理主要包括字符轉(zhuǎn)換和歸一化.在KDD99數(shù)據(jù)集的41個特征中,有3個特征屬于字符型特征,分別是service,protocol_type和flag.特征處理就是將它們從字符型轉(zhuǎn)換為數(shù)字型.使用0~69代表service中的70個特征值,0,1,2代表protocol_type中的3個特征值,0~10代表flag中的11個特征值.
數(shù)據(jù)預處理階段需要將數(shù)據(jù)集中的連續(xù)特征離散并歸一化,主要采用了Z-Core法,它是一種通過數(shù)據(jù)集均值和標準差的計算而進行的數(shù)據(jù)標準化過程.屬性的均值和標準差E(xi)計算公式如下:
屬性值標準化公式為:
經(jīng)處理后,屬性值符合標準正態(tài)分布,即均值為0,標準差為1.
3.1.3 數(shù)據(jù)特征選擇
在數(shù)據(jù)集的特征描述中,并不是每一個特征都對訓練結(jié)果起作用,因此本研究使用棄一法進行特征選擇.每次從數(shù)據(jù)集中刪除1個特征進行重新選擇,如果檢測率下降或誤報率上升,則認為是1個重要特征;反之則為不重要特征,可將其剔除[1]用選擇出來的特征進行神經(jīng)網(wǎng)絡(luò)訓練,可發(fā)現(xiàn)各類別的檢測率均有上升,并且模型訓練時間減少,可提高檢測系統(tǒng)的檢測效率.檢測結(jié)果如表2所示.
表2 檢測率檢測結(jié)果
檢測率對比如圖6所示,從結(jié)果中可以看出,在Dos攻擊下,優(yōu)化后的算法和傳統(tǒng)的算法檢測率分別為93.69%和84.64%,各類型攻擊的檢測率均得到了明顯的提高.
使用Google開源數(shù)據(jù)流引擎TensorFlow驗證改進BP神經(jīng)網(wǎng)絡(luò)算法效果,TensorFlow支持在多種平臺上運行,如CPU,GPU或Android設(shè)備,符合實驗要求.
圖6 優(yōu)化前后算法檢測率
本研究使用優(yōu)化前的BP神經(jīng)網(wǎng)絡(luò)與優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)進行對比仿真實驗.每個BPNN上進行兩次實驗,每次實驗進行500次迭代,在KDD99測試數(shù)據(jù)集上評估每次實驗性能.為了對比實驗結(jié)果,選用準確率和誤報率作為性能度量指標,其中TP為真正例,F(xiàn)P為假正例,F(xiàn)N為假反例,TN為真反例[10].準確率和誤報率定義如下:
損失函數(shù)變化曲線如圖7所示,從圖中可以看出,當?shù)螖?shù)達到500次以上時,圖像趨于穩(wěn)定,交叉熵可降低至0.192 5,模型的收斂速度明顯提高.
實驗結(jié)果表明,本研究方法可以比較準確地檢測出網(wǎng)絡(luò)入侵信號,當?shù)螖?shù)足夠多時,模型效果好,準確率達到了96.64%,相較于傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)準確率上升了6.51%,如圖8所示.
同時,將文獻[11]的結(jié)果與本研究結(jié)果進行對比,對比結(jié)果如表3所示.可以看出,與文獻[11]研究模型的性能相比,本算法的準確率、誤檢率性能均得到優(yōu)化,達到了預期實驗效果.
圖7 損失函數(shù)變化曲線
圖8 優(yōu)化BPNN準確率變化曲線
表3 性能對照表
神經(jīng)網(wǎng)絡(luò)在IDS中的應用前景廣泛,在國內(nèi)外都獲得了一致好評.實驗結(jié)果表明,通過對BP算法的優(yōu)化以及對數(shù)據(jù)的特征處理,使得模型的準確率達到了96.64%,誤檢率降低到3.65%,交叉熵降低至0.192 5.相較于傳統(tǒng)的BP算法,改進算法具有良好的表征學習和分類能力,并且隨著數(shù)據(jù)量的上升,模型的收斂效果和穩(wěn)定性都有了較大的提升.