李 勇 張 波
(重慶郵電大學(xué)自動(dòng)化學(xué)院 重慶 400065)
隨著互聯(lián)網(wǎng)規(guī)模的不斷擴(kuò)大,互聯(lián)網(wǎng)與人們的生活融合得越來(lái)越深,其正在改變?nèi)藗兊纳?、學(xué)習(xí)和工作方式,但所面臨的各種安全威脅也越來(lái)越嚴(yán)重。如何實(shí)時(shí)和快速地識(shí)別各種攻擊,特別是不可預(yù)見(jiàn)的攻擊,是目前一個(gè)不可避免的問(wèn)題。入侵檢測(cè)系統(tǒng)(IDS)作為信息安全領(lǐng)域一項(xiàng)重要的成果,相比于傳統(tǒng)的靜態(tài)安全技術(shù),如防火墻、漏洞掃描機(jī),可以識(shí)別已經(jīng)發(fā)生的入侵或者正在發(fā)生的入侵,已經(jīng)成為信息安全領(lǐng)域的重要研究對(duì)象。
近年來(lái),機(jī)器學(xué)習(xí)方法已經(jīng)被廣泛應(yīng)用在識(shí)別各種類(lèi)型的攻擊中,基于機(jī)器學(xué)習(xí)的入侵檢測(cè)系統(tǒng)可以幫助網(wǎng)絡(luò)管理員來(lái)判斷系統(tǒng)是否遭受到入侵。然而,隨著網(wǎng)絡(luò)設(shè)備和技術(shù)的不斷更新,大數(shù)據(jù)等新技術(shù)的興起,產(chǎn)生了大量的網(wǎng)絡(luò)數(shù)據(jù)。傳統(tǒng)的機(jī)器學(xué)習(xí)算法大多屬于淺層學(xué)習(xí)算法,旨在強(qiáng)調(diào)特征工程和特征選擇,已經(jīng)不能解決實(shí)際網(wǎng)絡(luò)中出現(xiàn)的大量入侵?jǐn)?shù)據(jù)的分類(lèi)問(wèn)題。隨著網(wǎng)絡(luò)數(shù)據(jù)量的急劇增長(zhǎng),其精度會(huì)不斷下降,而且這種增長(zhǎng)還將繼續(xù)。
Hinton教授在2006年提出深度學(xué)習(xí)理論后[1],深度學(xué)習(xí)理論和技術(shù)迅速崛起,在此背景下,相關(guān)的論文和實(shí)踐研究成果層出不窮,并取得了顯著的成果,尤其在圖像識(shí)別[2]、語(yǔ)音識(shí)別和動(dòng)作識(shí)別[3-4]領(lǐng)域。入侵檢測(cè)技術(shù)本質(zhì)上是一種分類(lèi)技術(shù),而卷積神經(jīng)網(wǎng)絡(luò)能夠自動(dòng)發(fā)現(xiàn)數(shù)據(jù)之間的相關(guān)性,且深度CNN可以有效地檢測(cè)零日攻擊等新的攻擊類(lèi)型,因此將深度CNN應(yīng)用到入侵檢測(cè)中是非常有價(jià)值和意義的。
在之前的研究中,提出了一些基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法,包括SVM、K近鄰(K-Nearest Neighbour, KNN)、ANN、Random Forest(RF)等,并在入侵檢測(cè)系統(tǒng)中取得了成功。近年來(lái),深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)的一個(gè)分支,在入侵檢測(cè)中得到了越來(lái)越多的應(yīng)用。研究表明,深度學(xué)習(xí)完全超越了傳統(tǒng)的學(xué)習(xí)方法。Salama等[5]將深度置信網(wǎng)絡(luò)運(yùn)用到入侵檢測(cè)中,其準(zhǔn)確率高于傳統(tǒng)的SVM方法。Kim等[6]將循環(huán)神經(jīng)網(wǎng)絡(luò)應(yīng)用到入侵檢測(cè),使用KDD99數(shù)據(jù)集進(jìn)行驗(yàn)證,通過(guò)分析可知該方法在入侵檢測(cè)中具有良好的檢測(cè)能力??琢钪荹7]提出了基于卷積神經(jīng)網(wǎng)絡(luò)的入侵檢測(cè)模型,通過(guò)與傳統(tǒng)的機(jī)器學(xué)習(xí)方法比較,證明該模型在漏報(bào)率和誤報(bào)率上都大幅度降低。武天舒[8]提出一種改進(jìn)的CNN入侵檢測(cè)模型,使用信息熵和互信息進(jìn)行特征降維,使用檢測(cè)率、誤報(bào)率、召回率等多個(gè)入侵檢測(cè)系統(tǒng)指標(biāo)評(píng)估,其提出的模型在網(wǎng)絡(luò)入侵檢測(cè)的檢測(cè)率上可達(dá)到95%以上。通過(guò)以上研究表明,深度學(xué)習(xí)是入侵檢測(cè)的下一個(gè)研究方向。
卷積神經(jīng)網(wǎng)絡(luò)主要包括輸入層、卷積層、池化層以及全連接層。卷積層的輸入來(lái)源于輸入層或采樣層,通過(guò)上一層的輸出向量和本層的卷積核進(jìn)行卷積運(yùn)算,其公式如下:
(1)
采樣層對(duì)卷積層輸出的數(shù)據(jù)進(jìn)行采樣處理,主要為了降低網(wǎng)絡(luò)特征的復(fù)雜度。其操作如下:
(2)
全連接層主要實(shí)現(xiàn)將所有的二維特征圖轉(zhuǎn)換為一維特征圖作為全連接層的輸入,如下所示:
(3)
反向傳播主要利用網(wǎng)絡(luò)的實(shí)際輸出與期望輸出的差值來(lái)調(diào)節(jié)網(wǎng)絡(luò)參數(shù),主要優(yōu)化卷積核參數(shù)k、全連接層的網(wǎng)絡(luò)權(quán)重ω以及各層的偏置b。
(1) 卷積層。這里假設(shè)每個(gè)卷積層l后都有一個(gè)下采樣層l+1,第l層的第j特征圖的殘差公式如下:
(4)
則卷積層l的偏置的梯度b可以表示為:
(5)
創(chuàng)造力的要素很多,如智力、認(rèn)知風(fēng)格、價(jià)值、目的、信念和策略等等。智力,在學(xué)校教育中被放在首要位置。但智力只是創(chuàng)造力的一個(gè)方面的要素,還有很多非智力方面的要素是不能忽略的。過(guò)去的教育往往傾向于智力因素的培養(yǎng),忽視了非智力因素的作用。智力與非智力因素都是人創(chuàng)造力發(fā)展的重要方面。其中,想象力在創(chuàng)造性的發(fā)揮中至關(guān)重要。有的學(xué)者認(rèn)為想象力是最重要的。一個(gè)人即便掌握了許多知識(shí),但如果缺乏想象力,想象不到知識(shí)間的聯(lián)系與新的可能性,便不能體現(xiàn)創(chuàng)造力。知識(shí)、智力固然很重要,非智力因素如想象力等也很重要。
(6)
(2) 采樣層。假設(shè)層l為下采樣層,l+1層為卷積層,則采樣層l的第j特征圖的殘差計(jì)算公式可表示為:
(7)
則采樣層的偏置的梯度可以表示為:
(8)
為了得到采樣層權(quán)重的梯度,我們定義下式:
(9)
則采樣層的權(quán)重β的梯度為:
(10)
深度CNN在圖像識(shí)別和語(yǔ)音識(shí)別上獲得了重大的成功,大部分研究都表明了網(wǎng)絡(luò)深度的重要性。在其重要性的驅(qū)使下,一個(gè)問(wèn)題誕生了:是否靠簡(jiǎn)單的堆疊網(wǎng)絡(luò)來(lái)加深網(wǎng)絡(luò)就能取得更好的成績(jī)。但通過(guò)多次的實(shí)驗(yàn)表明,隨著深度的增加,準(zhǔn)確率在下降。問(wèn)題的出現(xiàn)不是由過(guò)擬合造成的,而是由梯度消失造成的。針對(duì)此問(wèn)題,微軟研究院設(shè)計(jì)了一種深度殘差網(wǎng)絡(luò)。
使用H(x)表示任意的理想映射,假設(shè)某隱含層的映射關(guān)系為H(x)-x→F(x),多個(gè)線性層組合可以近似為一個(gè)復(fù)雜函數(shù)。假設(shè)隱含層的殘差近似于某個(gè)復(fù)雜函數(shù),則隱含層可以表示為:
H(x)=F(x)+x
(11)
這樣就得到了一種新的殘差結(jié)構(gòu)。殘差單元的輸出就可以由多個(gè)卷積層級(jí)聯(lián)的輸出和輸入元素相加(需保證輸入元素和卷積層級(jí)聯(lián)后的維度相同),經(jīng)過(guò)Relu激活函數(shù)后得到,形成殘差網(wǎng)絡(luò)結(jié)構(gòu)。其典型的結(jié)構(gòu)如圖1所示。
圖1 經(jīng)典殘差結(jié)構(gòu)[10]
本文參考Google團(tuán)隊(duì)的Inception結(jié)構(gòu)和何凱明博士提出的殘差網(wǎng)絡(luò),得出一種基于Inception結(jié)構(gòu)和殘差神經(jīng)網(wǎng)絡(luò)結(jié)合的CNN模型,如圖2所示。
圖2 深度殘差模型[11]
深度殘差結(jié)構(gòu)使用1×1和3×3的卷積結(jié)構(gòu)融合在一起。使用兩個(gè)3×3卷積替換5×5的卷積操作,既可以加快運(yùn)算速度又可以加深網(wǎng)絡(luò)的深度。為了減少計(jì)算復(fù)雜度,同時(shí)對(duì)輸出進(jìn)行降維,在卷積操作前加入1×1的卷積核[11]。因需要進(jìn)行層之間的融合,對(duì)上面的各個(gè)操作進(jìn)行零填充,在3×3的卷積操作后加入pad為1的零填充層,5×5的卷積操作后加入pad為2的零填充層。
本實(shí)驗(yàn)?zāi)P陀奢斎雽印?個(gè)inception_resnet層、2個(gè)卷積層、1個(gè)采樣層、2個(gè)Dropout層和3個(gè)全連接層組成。在卷積層后加入Relu函數(shù),前兩層全連接層使用Sigmoid激活函數(shù),最后一層用Softmax函數(shù)進(jìn)行最終的分類(lèi)。除全連接層以外的所有層都加入了BN(Batch Normalization)層[12]。輸入層為11×11維數(shù)據(jù);第一個(gè)卷積使用3×3的卷積模塊,步長(zhǎng)設(shè)置為1;第二個(gè)卷積模塊也使用3×3的卷積模塊,步長(zhǎng)設(shè)置為2;采樣層使用動(dòng)態(tài)自適應(yīng)采樣算法,采樣大小設(shè)置為4×4,步長(zhǎng)設(shè)置為默認(rèn)大小,全連接層更加容易使模型過(guò)擬合,因此需要使用Dropout來(lái)避免過(guò)擬合[13]。其他參數(shù)取上文所獲取的最優(yōu)參數(shù),最終的實(shí)驗(yàn)?zāi)P腿绫?所示。
表1 入侵檢測(cè)整體模型設(shè)計(jì)
本實(shí)驗(yàn)的硬件環(huán)境:Windows 10系統(tǒng),Intel 酷睿i7 5500U雙核CPU,8 GB內(nèi)存。軟件環(huán)境:Python 3.6、Oracle數(shù)據(jù)庫(kù)、基于TensorFlow的keras深度學(xué)習(xí)框架。
本文選用的數(shù)據(jù)為KDDCUP99數(shù)據(jù)集。該數(shù)據(jù)集由Stolfo等[14]準(zhǔn)備,并且基于DARPA(美國(guó)國(guó)防部高級(jí)研究計(jì)劃局)在1998年的IDS評(píng)估項(xiàng)目中獲取的數(shù)據(jù)所構(gòu)建。共采集了九周的網(wǎng)絡(luò)連接和系統(tǒng)審計(jì)數(shù)據(jù),通過(guò)仿真不同種類(lèi)的用戶(hù)類(lèi)型、網(wǎng)絡(luò)流量以及攻擊方式,得到KDDCUP99數(shù)據(jù)集[15]。
因?yàn)橥暾麛?shù)據(jù)集的大小超過(guò)4 GB,一般的入侵檢測(cè)系統(tǒng)和模型難以訓(xùn)練。所以本實(shí)驗(yàn)使用KDD CUP99數(shù)據(jù)集中的“kddcup.data_10_percent”作為網(wǎng)絡(luò)的訓(xùn)練集,“corrected”作為網(wǎng)絡(luò)的測(cè)試集,其中訓(xùn)練集共494 021條,測(cè)試集共311 029條。
KDDCUP99數(shù)據(jù)集的每條數(shù)據(jù)都具有41維,其中38維是數(shù)字特征,其他3維為符號(hào)特征,將每個(gè)特征屬性進(jìn)行預(yù)處理,消除特征之間的差異性,使其具有可比性。其過(guò)程可由以下兩部分組成。
(1) 符號(hào)特征的數(shù)字化。KDDCUP99數(shù)據(jù)集包含38個(gè)數(shù)字特征和3個(gè)字符特征,由于基于卷積神經(jīng)網(wǎng)絡(luò)的入侵檢測(cè)算法的輸入值要求是一個(gè)數(shù)字矩陣,因此需將protocol_type、service和flag特征轉(zhuǎn)換為數(shù)字形式。例如protocol_type特征具有3種類(lèi)型的屬性,將其通過(guò)One-hot編碼的方式轉(zhuǎn)換為對(duì)應(yīng)的數(shù)值類(lèi)型:TCP、UDP和ICMP其對(duì)應(yīng)數(shù)值被編碼為二進(jìn)制向量(1,0,0)、(0,1,0)和(0,0,1)。類(lèi)似地,service特征共有70種屬性類(lèi)型,flag特征具有11種屬性類(lèi)型,轉(zhuǎn)換之后,41維的特征向量映射為122維特征向量。
(2) 數(shù)字特征的歸一化。為了消除因?yàn)榱烤V導(dǎo)致不同特征之間具有的巨大差異,需要對(duì)剩下的38個(gè)特征向量進(jìn)行歸一化,采用最大最小歸一化方法,其公式如下:
(12)
式中:xmin、xmax分別為每一維特征項(xiàng)的、最小值和最大值,x為原始特征項(xiàng),xnorm為歸一化后的值。
入侵檢測(cè)的評(píng)價(jià)指標(biāo)主要包括準(zhǔn)確率、誤報(bào)率以及漏報(bào)率,其中,定義TN為數(shù)據(jù)為正常且預(yù)測(cè)也為正常的數(shù)據(jù)量,TP為數(shù)據(jù)為異常且預(yù)測(cè)也為異常的數(shù)據(jù)量,F(xiàn)N為數(shù)據(jù)為異常而預(yù)測(cè)為正常的數(shù)據(jù)的數(shù)量,F(xiàn)P為數(shù)據(jù)為正常而預(yù)測(cè)為異常的數(shù)據(jù)的數(shù)量,則準(zhǔn)確 率、誤報(bào)率、檢測(cè)率分別為:
(13)
(14)
(15)
為了驗(yàn)證此算法對(duì)于入侵檢測(cè)系統(tǒng)的有效性,輸入特征項(xiàng)共122維,舍棄其中is_hot_login特征項(xiàng),此項(xiàng)特征的值都為0,對(duì)入侵檢測(cè)分類(lèi)結(jié)果作用為零。將其轉(zhuǎn)換為11×11維的二維的“圖像數(shù)據(jù)”,全連接層采用Softmax進(jìn)行分類(lèi)。
(1) 二分類(lèi)實(shí)驗(yàn)。對(duì)入侵檢測(cè)算法進(jìn)行二分類(lèi),正常標(biāo)簽設(shè)置為0,攻擊標(biāo)簽設(shè)置為1,表2顯示了改進(jìn)的深度CNN與Lenet-5以及GoogleNet在各個(gè)攻擊類(lèi)型上的檢測(cè)率對(duì)比。可以看出,深度CNN算法對(duì)Normal、Probe、DoS、U2R、R2L的準(zhǔn)確率分別為97.82%、97.73%、97.90%、88.54%、33.87%,R2L的檢測(cè)率比Lenet-5和GoogleNet算法都高,U2R的檢測(cè)率也相應(yīng)地有所提高。由于U2R和R2L在訓(xùn)練集中的比例非常低,這兩種類(lèi)型產(chǎn)生的后果非常嚴(yán)重,因此提高這兩種攻擊的檢測(cè)率十分具有必要。
表2 深度CNN與Lenet-5以及GoogleNet的各個(gè)攻擊類(lèi)型的準(zhǔn)確率對(duì)比 %
(2) 五分類(lèi)實(shí)驗(yàn)。與二分類(lèi)實(shí)驗(yàn)主要不同在于將攻擊具體化分類(lèi),正常的設(shè)置為1,四大攻擊類(lèi)依次設(shè)置為2~5。表3顯示了五分類(lèi)實(shí)驗(yàn)中測(cè)試集在改進(jìn)入侵檢測(cè)算法上的混淆矩陣??梢钥闯觯倪M(jìn)的入侵檢測(cè)算法在五分類(lèi)實(shí)驗(yàn)中準(zhǔn)確率為93.45%,在對(duì)稀疏攻擊U2R和R2L上,召回率提高到31.58%和36.67%。這進(jìn)一步表明了改進(jìn)算法具有強(qiáng)大的檢測(cè)能力。
表3 深度CNN在測(cè)試集上五分類(lèi)實(shí)驗(yàn)混淆矩陣
表4中將提出的CNN算法與常見(jiàn)機(jī)器學(xué)習(xí)算法的性能結(jié)果進(jìn)行比較,在性能上有所提高。相比于文獻(xiàn)[16]提出的基于粒子群優(yōu)化的特征選擇和使用樸素貝葉斯(NB)分類(lèi)器進(jìn)行分類(lèi)的入侵檢測(cè)算法,本文算法在檢測(cè)率上提高了4%,誤報(bào)率下降0.5%。文獻(xiàn)[17]提出的基于GA的SVM算法,GA采取新的適應(yīng)度函數(shù),去優(yōu)化SVM的參數(shù),本文算法的檢測(cè)率和誤報(bào)率能與該入侵檢測(cè)算法基本持平。本文較文獻(xiàn)[18]提出的RF算法在準(zhǔn)確率和檢測(cè)率上都有所提高,與其改進(jìn)的算法的性能基本一致。深度學(xué)習(xí)具有強(qiáng)大的特征提取能力,深度卷積神經(jīng)網(wǎng)絡(luò)相比傳統(tǒng)機(jī)器學(xué)習(xí)算法在入侵檢測(cè)中具有較大的優(yōu)勢(shì)。
表4 深度CNN和機(jī)器學(xué)習(xí)算法性能對(duì)比 %
表5將提出的CNN算法與文獻(xiàn)[19]所提出的深度學(xué)習(xí)算法的性能進(jìn)行比較,可以看出,本文的CNN算法在入侵檢測(cè)中的檢測(cè)率高于DBN,誤報(bào)率略低于DBN,檢測(cè)率和誤報(bào)率與SMOTE-DBN算法基本持平。后期可以進(jìn)一步改進(jìn)本文算法來(lái)提高入侵檢測(cè)能力。
表5 深度CNN和其他深度學(xué)習(xí)算法性能比較 %
本文對(duì)入侵檢測(cè)和卷積神經(jīng)網(wǎng)絡(luò)展開(kāi)研究,利用卷積神經(jīng)網(wǎng)絡(luò)在處理分類(lèi)問(wèn)題上的長(zhǎng)處,將卷積神經(jīng)網(wǎng)絡(luò)用在入侵檢測(cè)中,提出了一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的入侵檢測(cè)算法。通過(guò)KDDCUP99數(shù)據(jù)進(jìn)行訓(xùn)練和測(cè)試,與文獻(xiàn)[16-18]所提出的經(jīng)典學(xué)習(xí)算法SVM、RF、NB進(jìn)行比較,準(zhǔn)確率和檢測(cè)率均優(yōu)于其他經(jīng)典的機(jī)器學(xué)習(xí)算法,與其改進(jìn)算法在性能上基本持平。本文算法較文獻(xiàn)[19]所提出的深度學(xué)習(xí)算法DBN在檢測(cè)率和誤報(bào)率上都有所提高,與其提出的改進(jìn)深度學(xué)習(xí)算法的性能指標(biāo)基本一致,證明本文算法在入侵檢測(cè)領(lǐng)域的有效性。同時(shí)與基于Lenet-5的CNN算法和GoogleNet算法進(jìn)行比較,對(duì)稀疏攻擊類(lèi)型R2L和U2R的檢測(cè)率都有所提升,但在檢測(cè)稀疏攻擊類(lèi)型R2L方面需要進(jìn)一步改進(jìn)。