譚敏生,彭 敏,丁 琳,吳 冕
(南華大學(xué)計(jì)算機(jī)學(xué)院,衡陽 421000)
隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,網(wǎng)絡(luò)安全問題備受國家與社會的強(qiáng)烈關(guān)注。入侵檢測作為安全防范的一種重要手段,通過收集和分析計(jì)算機(jī)系統(tǒng)和用戶的事件信息,及時(shí)發(fā)現(xiàn)入侵行為,提醒管理人員采取相應(yīng)措施,有效防范攻擊,減少相應(yīng)損失。目前主流的入侵檢測技術(shù)主要是將智能算法與入侵檢測相結(jié)合[1],聚類算法和支持向量機(jī)算法研究較多。Ambusaidi等人[2]提出了一種基于非線性相關(guān)系數(shù)的入侵檢測方法,能夠較準(zhǔn)確地提取網(wǎng)絡(luò)流量記錄之間的線性和非線性相關(guān)性,降低誤報(bào)率,有效區(qū)分正常和異常行為。Kumar 等人[3]提出了一種基于 K 均值聚類算法來提高入侵檢測的準(zhǔn)確率。Bhavsar等人[4]將支持向量機(jī)分類算法應(yīng)用于入侵檢測中。Gadal等人[5]提出了一種基于K-均值聚類和序列最小優(yōu)化分類相結(jié)合的混合機(jī)器學(xué)習(xí)入侵檢測技術(shù)。上述方法能在一定程度上取得更好的檢測效果,但特征提取具有一定的復(fù)雜性,不能全面反應(yīng)數(shù)據(jù)的相關(guān)性。
近年來,深度學(xué)習(xí)已經(jīng)成為當(dāng)今研究熱點(diǎn),深度神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)等多種深度學(xué)習(xí)算法已逐步應(yīng)用于入侵檢測領(lǐng)域。Jin等人[6]提出了一種基于深度神經(jīng)網(wǎng)絡(luò)的入侵檢測模型,該模型有4個(gè)隱含層,每一層有100個(gè)隱含單元,使用線性修正單元作為激活函數(shù)。Alom等人[7]利用改進(jìn)的深度信念網(wǎng)絡(luò)進(jìn)行入侵檢測,獲得了較好的準(zhǔn)確率。Raman等人[8]將概率神經(jīng)網(wǎng)絡(luò)應(yīng)用于入侵檢測技術(shù)中來提高檢測性能。Nadeem等人[9]構(gòu)建的梯形網(wǎng)絡(luò)將神經(jīng)網(wǎng)絡(luò)與無監(jiān)督學(xué)習(xí)相結(jié)合,取得了較好的精確度。Zou 等人[10]利用遺傳算法具有的全局優(yōu)化能力結(jié)合神經(jīng)網(wǎng)絡(luò),在入侵檢測領(lǐng)域取得了較好的效果。Kim J等人[11]將深度學(xué)習(xí)中的長短期記憶神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)應(yīng)用于入侵檢測中,驗(yàn)證了LSTM分類器比其它分類器具有一定的有效性。Kolosnjaji等人[12]通過將卷積神經(jīng)網(wǎng)絡(luò)和LSTM神經(jīng)網(wǎng)絡(luò)結(jié)合起來,構(gòu)造了一個(gè)分層次特征提取的體系結(jié)構(gòu)。Vinayakumar等人[13]根據(jù)卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn),將網(wǎng)絡(luò)流量建模為時(shí)間序列的入侵檢測系統(tǒng)。Liu等人[14]將卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)合,構(gòu)造了入侵檢測模型;賈凡等人[15]提出了基于卷積神經(jīng)網(wǎng)絡(luò)的入侵檢測算法,通過深度學(xué)習(xí),將非線性模型轉(zhuǎn)化成更抽象的形式,強(qiáng)化原始數(shù)據(jù)的分類能力,提高特征提取的準(zhǔn)確度。
然而,基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)方法應(yīng)用于入侵檢測領(lǐng)域時(shí),其檢測性能與全連接層、卷積層的初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器以及全連接層神經(jīng)元數(shù)等選取有較大關(guān)系,若選取不好,容易導(dǎo)致網(wǎng)絡(luò)波動,學(xué)習(xí)過程也易陷入局部最優(yōu)。本文利用遺傳算法強(qiáng)大的全局尋優(yōu)能力,通過遺傳算法的選擇、交叉和變異等操作獲得最優(yōu)初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等來優(yōu)化卷積神經(jīng)網(wǎng)絡(luò);并將優(yōu)化后的卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于入侵檢測,對入侵?jǐn)?shù)據(jù)進(jìn)行學(xué)習(xí)和識別,與未優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò)和典型機(jī)器學(xué)習(xí)算法相比,準(zhǔn)確率有明顯提高,誤報(bào)率有明顯降低。
利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)能夠充分對數(shù)據(jù)特征進(jìn)行非線性映射,挖掘各個(gè)特征之間的聯(lián)系,提高特征提取的準(zhǔn)確度,處理多維數(shù)據(jù)。同一層部分神經(jīng)元之間的權(quán)重和偏移相同,當(dāng)輸入層的特征維度較多時(shí),只需將卷積層的神經(jīng)元與前一層的部分神經(jīng)元進(jìn)行連接。本文根據(jù)LeNet5的基本模塊構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)框架,采用如圖1所示的結(jié)構(gòu)圖進(jìn)行構(gòu)建,固定1個(gè)輸入層、1個(gè)輸出層、1個(gè)全連接層,卷積層和池化層相互交替且具有相同的層數(shù)。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
卷積層為特征提取層,可以使原信號特征增強(qiáng),并且降低噪音。卷積運(yùn)算是卷積核與原始特征或上一層的輸出特征進(jìn)行卷積,然后再加上偏置值,得到當(dāng)前的特征,其運(yùn)算方法如(1)所示
(1)
(2)
卷積層輸出特征向量的大小則由式(3)確定,其中o為輸出特征的大小,i為輸入的特征大小,k為卷積和的大小,s為移動的步長,p為填充數(shù)
(3)
下采樣層(池化層)一般在卷積層下面,主要降低卷積層輸出的特征向量,減少參數(shù)數(shù)量,進(jìn)一步提取主要特征。下采樣輸出特征的大小由式(4)確定,其中ps為采樣的大小
(4)
遺傳算法(Genetic Algorithm,GA)是一種模擬生物進(jìn)化的算法,其具有強(qiáng)大的全局尋優(yōu)能力和良好的收斂速度改善能力。通過將卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的卷積層、全連接層的初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等作為遺傳算法的種群,然后經(jīng)過選擇、交叉和變異等操作后獲得最優(yōu)后代,構(gòu)建了一種基于遺傳算法的卷積神經(jīng)網(wǎng)優(yōu)化算法(Genetic Algorithm Optimization Convolutional Neural Network,GAOCNN),該算法利用遺傳算法強(qiáng)大的全局隨機(jī)搜索能力及卷積神經(jīng)網(wǎng)絡(luò)挖掘特征聯(lián)系能力,克服卷積神經(jīng)網(wǎng)絡(luò)因初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等容易導(dǎo)致的網(wǎng)絡(luò)波動、陷入局部最優(yōu)問題。
將卷積神經(jīng)網(wǎng)絡(luò)的卷積層與全連接層的初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)及優(yōu)化器等作為遺傳算法的種群,通過python語言字典中一個(gè)鍵對應(yīng)多個(gè)值的形式來保存種群內(nèi)的所有個(gè)體。
適應(yīng)度函數(shù)是遺傳算法評價(jià)各個(gè)體好壞的依據(jù),一般將適應(yīng)度高的個(gè)體進(jìn)行下一代遺傳操作。本文將卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練和預(yù)測后使用二分類交叉熵作為損失函數(shù),由損失函數(shù)得到的準(zhǔn)確率來定義適應(yīng)度函數(shù),方法如式(5)所示;卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練中使用EarlyStopping()函數(shù),并設(shè)定patience的值為5,如果epoch為5的范圍內(nèi)精確度不再提升則停止訓(xùn)練。
(5)
選擇算子是將當(dāng)前種群中選擇好的個(gè)體作為父代將基因傳給下一代,本文首先利用利用式(6)計(jì)算平均適應(yīng)度,將其作為選擇適應(yīng)度大于平均適應(yīng)度時(shí)的閾值(sum為種群適應(yīng)度的總和,popsize為種群的大小)。使用sorted函數(shù)對適應(yīng)度進(jìn)行排序,對群體中所有個(gè)體獲得的適應(yīng)度大小進(jìn)行排序,然后根據(jù)保留率選取適應(yīng)性強(qiáng)的個(gè)體作為父代,最后從剩余適應(yīng)性不強(qiáng)的幸存?zhèn)€體中按選取率進(jìn)行選取。
變異算子是從種群中根據(jù)已知的變異率,隨機(jī)選取某個(gè)個(gè)體所對應(yīng)的鍵,再隨機(jī)選取該鍵所包含多個(gè)值中的一個(gè)。交叉算子是遺傳算法中產(chǎn)生新個(gè)體的來源,本文首先利用式(7)確定需要繁殖孩子的大小(其中pl為父代的大小),然后根據(jù)需要孩子的量進(jìn)行繁殖;在繁殖的過程中,首先隨機(jī)產(chǎn)生兩個(gè)不同的父代和母代,然后隨機(jī)產(chǎn)生交叉點(diǎn),再將父代和母代進(jìn)行交換,最后通過變異算子對孩子進(jìn)行變異。
(6)
dl=popsize-pl
(7)
1)建立卷積神經(jīng)網(wǎng)絡(luò)基本框架,確定種群大小和最大遺傳代數(shù)等相關(guān)參數(shù);
2)初始化種群,同時(shí)將損失函數(shù)值和準(zhǔn)確率函數(shù)值設(shè)置為0;
3)將初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器以及全連接層神經(jīng)元數(shù)等編碼成染色體;
4)由3)中的染色體,隨機(jī)生成一個(gè)完整的卷積神經(jīng)網(wǎng)絡(luò),并進(jìn)行相關(guān)訓(xùn)練;
5)計(jì)算染色體的適應(yīng)度值,如果符合優(yōu)化標(biāo)準(zhǔn),則進(jìn)入9);
6)對染色體進(jìn)行選擇操作;
7)對染色體進(jìn)行交叉操作;
8)對染色體進(jìn)行變異操作;
9)查看新個(gè)體是否滿足最優(yōu)標(biāo)準(zhǔn)或是否達(dá)到最大進(jìn)化代數(shù),若滿足繼續(xù)下一步;否則返回步驟5);
10)使用遺傳算法得到的最優(yōu)初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等,更新卷積神經(jīng)網(wǎng)絡(luò)作為新的網(wǎng)絡(luò)訓(xùn)練模型。
根據(jù)上節(jié)提出的基于遺傳算的卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化算法,提出一種基于優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的入侵檢測算法(Genetic Algorithm Optimization Convolutional Neural Network Intrusion Detection Algorithm,GAOCNN-IDA)。利用遺傳算法的全局尋優(yōu)能力和卷積神經(jīng)網(wǎng)絡(luò)的特征提取能力,對入侵?jǐn)?shù)據(jù)進(jìn)行檢測,將通過GAOCNN算法獲得的初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等,更新到基于卷積神經(jīng)的入侵檢測算法中,并重新進(jìn)行訓(xùn)練測試,通過對攻擊數(shù)據(jù)和正常數(shù)據(jù)進(jìn)行學(xué)習(xí)來判斷入侵?jǐn)?shù)據(jù)的屬性。GAOCNN-IDA主要步驟如下:
1)將KDDCUP99數(shù)據(jù)集進(jìn)行特征提取,篩選出所需要的數(shù)據(jù);
2)對特征提取之后的數(shù)據(jù)集進(jìn)行數(shù)值化處理,保證所數(shù)據(jù)為數(shù)值類型;
3)對數(shù)值化數(shù)據(jù)集進(jìn)行歸一化處理;
4)根據(jù)1)~3)確定卷積神經(jīng)網(wǎng)絡(luò)的基本框架;
5)調(diào)用GAOCNN算法優(yōu)化所使用的卷積網(wǎng)絡(luò)的初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等;
6)對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練;
7)采用訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)對入侵?jǐn)?shù)據(jù)進(jìn)行檢測。
實(shí)驗(yàn)數(shù)據(jù)采用KDDCUP99網(wǎng)絡(luò)入侵?jǐn)?shù)據(jù)集,該數(shù)據(jù)集約有500萬條連接數(shù)據(jù)記錄,每一條數(shù)據(jù)記錄包含41個(gè)特征屬性和1個(gè)類標(biāo)簽屬性,數(shù)據(jù)集包含四種攻擊類型和一種正常數(shù)據(jù)標(biāo)簽。如下是部分的數(shù)據(jù)記錄:
0,tcp,http,SF,181,5450,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,5,5,0.00,0.00,0.00,0.00,1.00,0.00,0.00,6,6,1.00,0.00,0.17,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,private,SH,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1.00,1.00,0.00,0.00,0.50,1.00,0.00,14,1,0.07,0.71,0.50,0.00,0.50,1.00,0.00,0.00,nmap.
0,tcp,http,SF,54540,8314,0,0,0,2,0,1,1,0,0,0,0,0,0,0,0,0,1,3,0.00,0.00,0.00,0.67,1.00,0.00,1.00,2,2,1.00,0.00,0.50,0.00,0.00,0.00,0.00,0.00,back
5.1.1 特征的提取
KDDCUP99數(shù)據(jù)集的每一個(gè)連接都由41維特征組成,樣本數(shù)據(jù)集數(shù)據(jù)非常多,所以要從中選擇合理的數(shù)據(jù)進(jìn)行實(shí)驗(yàn)分析。本文實(shí)驗(yàn)根據(jù)文獻(xiàn)[16]所提出的觀點(diǎn),將對決策判定沒有任何作用的屬性刪除,即刪除數(shù)據(jù)集中l(wèi)and、urgent、su_attempted、num_outbound_cmds和is_hot_login五項(xiàng)屬性。
5.1.2 數(shù)據(jù)數(shù)值化處理
由于該數(shù)據(jù)集每一條正?;蛘弋惓?shù)據(jù)記錄都含41個(gè)特征屬性,大部分特征數(shù)據(jù)是數(shù)值型的,但協(xié)議名、網(wǎng)絡(luò)服務(wù)類型和flag標(biāo)志位為非數(shù)值型,為便于卷積神經(jīng)網(wǎng)絡(luò)計(jì)算和處理,將這些非數(shù)值數(shù)據(jù)進(jìn)行數(shù)值化編碼。例如,對于protocol_typr特征,其包含3個(gè)符號:tcp,udp,icmp,將其編碼為0,1,2。同理對網(wǎng)絡(luò)服務(wù)類型和flag標(biāo)志位進(jìn)行相應(yīng)的數(shù)值化處理。
5.1.3 數(shù)字特征歸一化
為了讓卷積神經(jīng)網(wǎng)絡(luò)更容易訓(xùn)練,運(yùn)行時(shí)的收斂速度更快,實(shí)驗(yàn)選擇對所有的數(shù)據(jù)按照式(8)進(jìn)行歸一化處理。
(8)
其中Mmin為某一列中最小的值,Mmax為某一列中最大的值,y為需要?dú)w一化的值。將“kddcup.data_10_percent_corrected”數(shù)據(jù)用做訓(xùn)練數(shù)據(jù),將“corrected”數(shù)據(jù)用做測試數(shù)據(jù),詳見表1,將訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集都經(jīng)過上述數(shù)據(jù)預(yù)處理。
表1 KDD數(shù)據(jù)類型
實(shí)驗(yàn)在臺式計(jì)算機(jī)上完成,配置為:Inter3.50GHz處理器,128GB內(nèi)存,64位Windows10操作系統(tǒng);編程工具為基于tensorflow的keras。遺傳算法相關(guān)參數(shù)設(shè)置如表2所示,卷積神經(jīng)網(wǎng)絡(luò)部分參數(shù)優(yōu)化范圍如表3所示。
表2 遺傳算法相關(guān)參數(shù)
表3 卷積神經(jīng)網(wǎng)絡(luò)參數(shù)優(yōu)化的部分范圍
5.3.1 入侵檢測核心指標(biāo)
入侵檢測的核心指標(biāo)主要是準(zhǔn)確率(accuracy,Ac)、檢測率(detection rate,Dr)和誤報(bào)率(flase alarm,F(xiàn)a),其計(jì)算方法如下:
(9)
其中,Tp為正確分類攻擊數(shù)據(jù)的數(shù)目,Tn為正確分類正常數(shù)據(jù)的數(shù)目,F(xiàn)p為錯(cuò)誤分類正常數(shù)據(jù)的數(shù)目,F(xiàn)n為錯(cuò)誤分離錯(cuò)誤數(shù)據(jù)的數(shù)目。
5.3.2 GAOCNN-IDA與CNN(未優(yōu)化的普通卷積神經(jīng)網(wǎng)絡(luò))比較
為證明本文所提算法的有效性,利用遺傳算法優(yōu)化后的卷積神經(jīng)網(wǎng)絡(luò)與具有相同卷積層的未優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行攻擊檢測比較,其中卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)如表4所示,訓(xùn)練次數(shù)epoch都為30,batch_size=1000,所用數(shù)據(jù)集都經(jīng)過前述預(yù)處理過程,得到檢測結(jié)果如表5所示。CNN1算法的準(zhǔn)確度為90.53%,檢測率為81.36%,誤報(bào)率為2.52%;而GAOCNN1-IDA算法的準(zhǔn)確率提高到92.26%,檢測率提高到83.13%,誤報(bào)率則降為2.12%;CNN2算法的準(zhǔn)確度為91.07%,檢測率為83.08%,誤報(bào)率為2.03%;而GAOCNN2-IDA算法的準(zhǔn)確率提高到94.67%,檢測率提高到88.43%,誤報(bào)率則降為1.31%;CNN3算法的準(zhǔn)確度為91.54%,檢測率為83.89%,誤報(bào)率為1.71%;而GAOCNN3-IDA算法的準(zhǔn)確率提高到94.86%,檢測率提高到89.67%,誤報(bào)率則降為1.28%;實(shí)驗(yàn)結(jié)果表明,GAOCNN-IDA算法的準(zhǔn)確率和檢測率有明顯提高,誤報(bào)率有一定程度降低。
表4 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
表5 GAOCNN-IDA與CNN性能比較
5.3.3 GAOCNN-IDA與其它機(jī)器學(xué)習(xí)算法比較
將本文GAOCNN2-IDA算法與典型機(jī)器學(xué)習(xí)算法應(yīng)用于入侵檢測進(jìn)行對比,所用數(shù)據(jù)集同樣都經(jīng)過上述預(yù)處理過程,檢測結(jié)果如表6所示。其中,基于支持向量機(jī)(Support Vector Machine, SVM)的入侵檢測算法準(zhǔn)確率為90.13%,檢測率為82.67%,誤報(bào)率為6.28%;基于BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)的入侵檢測算法準(zhǔn)確率為76.81%,檢測率為70.14%,誤報(bào)率為8.23%;基于決策樹C4.5的入侵檢測算法準(zhǔn)確率為86.18%,檢測率為80.29%,誤報(bào)率為6.43%;而 GAOCNN2-IDA算法準(zhǔn)確率為94.67%,檢測率為88.43%,誤報(bào)率為1.31%。GAOCNN2-IDA算法的準(zhǔn)確率和檢測率明顯高于其它典型機(jī)器學(xué)習(xí)算法,誤報(bào)率明顯低于其它典型機(jī)器學(xué)習(xí)算法。因此,本文提出的GAOCNN2-IDA算法明顯優(yōu)于其它幾種典型機(jī)器學(xué)習(xí)算法。
表6 GAOCNN2-IDA與其它典型機(jī)器學(xué)習(xí)算法性能比較
卷積神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于入侵檢測領(lǐng)域,其檢測性能與卷積層、全連接層的初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等密切相關(guān)。本文利用遺傳算法強(qiáng)大的全局尋優(yōu)能力,通過遺傳算法的選擇、交叉和變異等操作獲得最優(yōu)初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等來優(yōu)化卷積神經(jīng)網(wǎng)絡(luò);將優(yōu)化后的卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于入侵檢測,對入侵?jǐn)?shù)據(jù)進(jìn)行學(xué)習(xí)和識別。與BP神經(jīng)網(wǎng)絡(luò)、決策樹、支持向量機(jī)等算法相比,本文的算法對入侵?jǐn)?shù)據(jù)檢測的準(zhǔn)確率、檢測率有明顯提高,誤報(bào)率有明顯降低
利用遺傳算法優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)雖有時(shí)間消耗,但優(yōu)化過程可獨(dú)立于檢測過程。更為重要的是一旦獲取到最優(yōu)初始權(quán)重、閾值、網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)、優(yōu)化器及全連接層神經(jīng)元數(shù)等,可縮短卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練和檢測時(shí)間。