王浩雨
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,成都611756)
近年來(lái),隨著互聯(lián)網(wǎng)的快速發(fā)展,Web 服務(wù)給人們帶來(lái)越來(lái)越多的便利。同時(shí),由于一些互聯(lián)網(wǎng)開(kāi)發(fā)人員缺乏安全意識(shí),網(wǎng)絡(luò)安全事件也在不斷發(fā)生。依據(jù)2018 年賽門鐵克公司發(fā)布的《互聯(lián)網(wǎng)安全威脅報(bào)告》[1],基于每日分析超過(guò)千萬(wàn)個(gè)網(wǎng)絡(luò)請(qǐng)求,每13 個(gè)網(wǎng)絡(luò)請(qǐng)求中就會(huì)有一個(gè)網(wǎng)絡(luò)攻擊請(qǐng)求,相比2016 年的數(shù)據(jù),上漲了3%。入侵檢測(cè)是抵御網(wǎng)絡(luò)攻擊的重要手段,其常用的兩種方法為誤用檢測(cè)和異常檢測(cè)。
誤用檢測(cè)基于規(guī)則庫(kù)對(duì)請(qǐng)求進(jìn)行檢測(cè),但隨著Web 攻擊方法在不斷增加,誤用檢測(cè)需要不斷對(duì)知識(shí)庫(kù)進(jìn)行更新,負(fù)責(zé)維護(hù)知識(shí)庫(kù)的人員學(xué)習(xí)成本較高。而對(duì)于未知的網(wǎng)絡(luò)攻擊請(qǐng)求,誤用檢測(cè)的檢測(cè)成功率較低。異常檢測(cè)基于統(tǒng)計(jì)分析和數(shù)據(jù)挖掘的方法對(duì)數(shù)據(jù)的特征進(jìn)行提取,如果對(duì)于某個(gè)網(wǎng)絡(luò)請(qǐng)求不能表現(xiàn)出正常請(qǐng)求所具有的特征,則將它歸類為異常請(qǐng)求。只要構(gòu)建出恰當(dāng)?shù)漠惓z測(cè)模型,對(duì)請(qǐng)求的檢測(cè)成功率就較高。
國(guó)內(nèi)外專家學(xué)者基于異常檢測(cè)技術(shù)對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行檢測(cè),取得了很多研究成果。Nguyen 等人[2]使用支持向量機(jī)完成了基于HTTP 協(xié)議的異常檢測(cè)。Fiore 等人[3]使用半監(jiān)督學(xué)習(xí)的方法,基于受限的玻爾茲曼機(jī)用于搭建異常檢測(cè)模型,并取得了不錯(cuò)的效果。張晴[4]基于改進(jìn)后的隱馬爾科夫模型,提升了對(duì)網(wǎng)絡(luò)安全態(tài)勢(shì)識(shí)別方面的精確度。李景超[5]基于改進(jìn)后的K 聚類算法,對(duì)入侵檢測(cè)系統(tǒng)的報(bào)警信息過(guò)多問(wèn)題進(jìn)行了研究,并取得了不錯(cuò)的改進(jìn)效果。劉敬等人[6]使用SVM 算法對(duì)異常檢測(cè)技術(shù)進(jìn)行了研究。Zolotukhin 等人[7]使用K 聚類算法對(duì)網(wǎng)絡(luò)正常訪問(wèn)行為進(jìn)行了相關(guān)的描繪,完成了相應(yīng)的異常檢測(cè)實(shí)驗(yàn)。Walsh R 與Livadas C[8]基于貝葉斯分類器對(duì)IRC(Internet Relay Chat)進(jìn)行檢測(cè),并取得了不錯(cuò)的效果。
在人工智能領(lǐng)域,深度學(xué)習(xí)在不斷快速發(fā)展,其最大的特點(diǎn)是其復(fù)雜函數(shù)的表示能力和數(shù)據(jù)表征的學(xué)習(xí)能力,這為深度神經(jīng)網(wǎng)絡(luò)應(yīng)用在異常檢測(cè)模型中提供了可能。本文構(gòu)建了改進(jìn)VGG16 神經(jīng)網(wǎng)絡(luò)的異常檢測(cè)模型,并取得了較好的檢測(cè)效果。
常用于異常檢測(cè)的算法包括決策樹(shù)、LSTM 與SVM 等,這些算法的檢測(cè)效果在很大程度上依賴人工挑選特征值的情況。卷積神經(jīng)網(wǎng)絡(luò)隨著計(jì)算機(jī)計(jì)算能力的提高在近些年取得了飛速的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了高維度空間的特征表,改進(jìn)了非線性空間的網(wǎng)絡(luò)結(jié)構(gòu)提取屬性間的內(nèi)在關(guān)系,規(guī)避了因人工提取特征而出現(xiàn)的冗余性與考慮不足等問(wèn)題。VGG16 卷積神經(jīng)網(wǎng)絡(luò)由Oxford 大學(xué)的科研人員在ILSVRC2014 比賽中提出的一種深度學(xué)習(xí)算法,并在當(dāng)年的圖像分類比賽中取得了第二名的好成績(jī)。本文提出了一種改進(jìn)VGG16 的異常檢測(cè)模型,通過(guò)將網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)轉(zhuǎn)為流量灰度圖,并輸入到模型完成檢測(cè)。該異常檢測(cè)模型在傳統(tǒng)VGG16 卷積網(wǎng)絡(luò)的基礎(chǔ)上,基于2 標(biāo)簽的Soft?max 分類器來(lái)代替原VGG16 神經(jīng)網(wǎng)絡(luò)的Softmax 分類器,使用RMS 的方法對(duì)模型的學(xué)習(xí)率進(jìn)行優(yōu)化,基于微型遷移學(xué)習(xí)來(lái)共享預(yù)訓(xùn)練模型中卷積層與池化層的參數(shù),該模型改進(jìn)了全連接層的數(shù)量與結(jié)構(gòu),適用于異常檢測(cè)模型的分類特點(diǎn),分類結(jié)果更加準(zhǔn)確并提高了訓(xùn)練效率。
VGG16 是一種前饋神經(jīng)網(wǎng)絡(luò),其特點(diǎn)是使用3×3的卷積核在卷積層進(jìn)行運(yùn)算。作為前饋神經(jīng)網(wǎng)絡(luò)[9],各層神經(jīng)元結(jié)點(diǎn)從輸入層開(kāi)始,來(lái)接收前一層神經(jīng)元結(jié)點(diǎn)所傳遞來(lái)的數(shù)據(jù)和信息,對(duì)這些數(shù)據(jù)與信息進(jìn)行處理并輸出,VGG16 深度神經(jīng)網(wǎng)絡(luò)是單向多層結(jié)構(gòu),其結(jié)構(gòu)由圖1 所示。
圖1 VGG16深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
它具有16 個(gè)卷積層,在每一個(gè)卷積層的運(yùn)算之后,會(huì)緊接一個(gè)ReLU 激活函數(shù)進(jìn)行計(jì)算,同時(shí)有四個(gè)最大池化層穿插在其中。全連接層共有三個(gè),最后的Softmax 層用于分類,數(shù)量為1000。
卷積層的目的是將輸入圖片的主要特征進(jìn)行提取,如公式(1):
y是卷積層的輸出結(jié)果,W 是卷積核,Matrix 為灰度圖矩陣,*表示卷積核與灰度圖矩陣進(jìn)行卷積運(yùn)算,Bias 表示偏置值。卷積運(yùn)算后的結(jié)果需要進(jìn)入激活函數(shù)進(jìn)行計(jì)算,常用的激活函數(shù)[10]有Relu、Tanh 和Sig?moid,VGG16 所使用的激活函數(shù)為Relu,Relu 使網(wǎng)絡(luò)引入非線性因素,使網(wǎng)絡(luò)具有稀疏性,有效減少過(guò)擬合現(xiàn)象的產(chǎn)生,如公式(2):
在池化層運(yùn)算中,其主要目的是將圖片的特征進(jìn)一步提取,并減少參數(shù)。常用的池化方法包含兩種,最大池化與平均池化。VGG16 模型所使用的池化方法為最大池化,其池化框的尺寸為2×2,步長(zhǎng)為2,如公式(3):
在公式中,0≤n≤N,0≤m≤M,M 與N 的值分別是輸入圖像二維向量的長(zhǎng)和寬,最大池化運(yùn)算是在選定的圖像區(qū)域中,選擇最大的值來(lái)作為池化層的運(yùn)算結(jié)果。Softmax 層的目的是解決分類問(wèn)題,Softmax 所需的分類數(shù)必須不小于2,假設(shè)其訓(xùn)練集樣本為k 個(gè)標(biāo)記過(guò)的樣本,如公式(4):
在公式中,其分類標(biāo)簽為y(i)∈{1,2,…k} ,其樣本的集合是x(j),i 為不同的類別,并估算i 的概率值,樣本集中每個(gè)樣本其第k 類標(biāo)簽的概率為:
將回歸樣本轉(zhuǎn)變?yōu)楦怕首兞浚S度是k,則其推導(dǎo)后如公式(6)所示:
VGG16 模型的學(xué)習(xí)參數(shù)表達(dá)式如公式(7):
每種分類的總和概率為1,如公式(8)所示。樣本集中的樣本需要不斷進(jìn)行訓(xùn)練與學(xué)習(xí),Softmax 基于迭代訓(xùn)練不斷更新數(shù)據(jù)的擬合曲線,模型的損失函數(shù)公式為:
調(diào)整參數(shù)α,使模型達(dá)到最小誤差。1{y(j) =i} 的含義為如果y(j)=i,則其值為1,在其他的情況下,其值為0。通過(guò)模型損失函數(shù)的迭代與計(jì)算,參數(shù)將進(jìn)一步優(yōu)化,直到小于指定誤差或達(dá)到最大迭代次數(shù)為止。
在VGG16 卷積神經(jīng)網(wǎng)絡(luò)中,每一層網(wǎng)絡(luò)的權(quán)重和結(jié)點(diǎn)值都需要進(jìn)行訓(xùn)練,包含三個(gè)全連接層,而前兩個(gè)全連接層每層都擁有多達(dá)4096 個(gè)結(jié)點(diǎn),造成全連接層的訓(xùn)練時(shí)間過(guò)長(zhǎng),同時(shí)全連接層也可能會(huì)破壞輸入圖片的空間結(jié)構(gòu)。Softmax 分類層可分類的數(shù)量為1000,并不符合異常檢測(cè)二分類的特點(diǎn)。
本文對(duì)傳統(tǒng)VGG16 模型進(jìn)行改進(jìn),提出改進(jìn)VGG16 神經(jīng)網(wǎng)絡(luò)的異常檢測(cè)模型,如圖2 所示。
圖2 改進(jìn)后的VGG16異常檢測(cè)模型
首先,傳統(tǒng)的VGG16 深度卷積神經(jīng)網(wǎng)絡(luò)是基于ImageNet 圖片數(shù)據(jù)集訓(xùn)練而成,擁有十分強(qiáng)大的特征學(xué)習(xí)能力,特別是卷積層對(duì)于輸入圖片的曲線、邊緣和輪廓的提取,在每一層中都擁有已經(jīng)訓(xùn)練好的參數(shù)和權(quán)重。本文將訓(xùn)練好的ImageNet 模型作為預(yù)訓(xùn)練模型,使用遷移學(xué)習(xí)將原模型的卷積層參數(shù)移植到本模型。其次,異常檢測(cè)模型的輸出分類結(jié)果為異常與正常,改進(jìn)后的模型使用二分類的Softmax 來(lái)代替原網(wǎng)絡(luò)的Softmax 分類層。第三,針對(duì)異常檢測(cè)的特點(diǎn)對(duì)原模型全連接層進(jìn)行改進(jìn),將一個(gè)128 結(jié)點(diǎn)的全連接層替代原模型的前兩個(gè)全連接層。第四,為了加快模型的訓(xùn)練速度同時(shí)保證模型準(zhǔn)確率,學(xué)習(xí)率的優(yōu)化方法采用RMS(Root Mean Square),此方法進(jìn)一步優(yōu)化了損失函數(shù)在更新過(guò)程中所存在的擺動(dòng)幅度過(guò)大的問(wèn)題,并加快了函數(shù)的收斂速度,RMS 算法對(duì)偏置和權(quán)重使用了微分平分加權(quán)平均數(shù)的方法。
數(shù)據(jù)集選擇為ISCX2012,此數(shù)據(jù)集是由紐布倫斯威克大學(xué)所開(kāi)發(fā)出的網(wǎng)絡(luò)安全數(shù)據(jù)集,數(shù)據(jù)集內(nèi)包含不同形式的攻擊請(qǐng)求與正常請(qǐng)求,網(wǎng)絡(luò)攻擊請(qǐng)求包括強(qiáng)化SSH、HTTP 拒絕服務(wù)、分布式拒絕服務(wù)等,數(shù)據(jù)集格式為Wireshark 的文件存儲(chǔ)格式Pcap。本文使用Python 的依賴包Scapy 將原始的Pcap 格式數(shù)據(jù)集轉(zhuǎn)為XML 文件格式,圖3 所示為一條正常網(wǎng)絡(luò)請(qǐng)求的XML文件。
圖3 ISCX2012數(shù)據(jù)集中的一條請(qǐng)求(XML格式)
深度學(xué)習(xí)模型的訓(xùn)練對(duì)環(huán)境要求較高,本模型的實(shí)驗(yàn)環(huán)境為MAC OS Mojave 10.14.6,最大內(nèi)存容量為16GB,CPU 型號(hào)為英特爾酷睿i5 8259U,四核心八線程處理器。模型的訓(xùn)練使用Python3.7,編程軟件選擇Anaconda4.3.1,后端框架為 Keras2.2.5 與 Tensor?Flow1.14,使用不同版本的依賴和框架可能會(huì)存在程序無(wú)法運(yùn)行以及不兼容等問(wèn)題。
模型訓(xùn)練過(guò)程如圖4 所示,挑選出數(shù)據(jù)集中的60000 條數(shù)據(jù),15000 條為測(cè)試集,45000 條為訓(xùn)練集,訓(xùn)練集中有隨機(jī)數(shù)量的正常與異常請(qǐng)求。
圖4 模型的訓(xùn)練過(guò)程
之后對(duì)訓(xùn)練集進(jìn)行數(shù)據(jù)預(yù)處理,基于Matplotlib 將訓(xùn)練集中的每一條數(shù)據(jù)轉(zhuǎn)為流量灰度圖。在訓(xùn)練過(guò)程中,將數(shù)據(jù)轉(zhuǎn)為256×256,128×128 以及75×75 三種分辨率的流量灰度圖輸入到異常檢測(cè)模型進(jìn)行訓(xùn)練并比較,來(lái)確定哪一種分辨率的流量灰度圖會(huì)得到更好的效果,圖5 所示為隨機(jī)選取兩個(gè)分辨率為75×75 的流量灰度圖。
圖5 分辨率為75×75的流量灰度圖
改進(jìn)后的VGG16 模型池化層和卷積層的參數(shù)采用Image-Net 模型中預(yù)訓(xùn)練好的值,訓(xùn)練過(guò)程中,凍結(jié)了池化層與13 個(gè)卷積層的參數(shù),只訓(xùn)練一個(gè)Softmax層和一個(gè)全連接層的參數(shù),這樣既可保證模型的準(zhǔn)確率也可加快模型訓(xùn)練速度?;贙eras 的VGG 神經(jīng)網(wǎng)絡(luò)訓(xùn)練框架,設(shè)置epoch 的值是2,batch-size 的值為40,迭代次數(shù)為3000,模型的誤差函數(shù)選擇為交叉熵(Cross Entropy),基于Model 模塊的Summary 函數(shù)可對(duì)VGG16 模型的各層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行可視化,表1 所示為模型中各層結(jié)構(gòu)與參數(shù)(以流量灰度圖分辨率75×75 為例)。
訓(xùn)練完成后,如圖6 所示為不同輸入圖像分辨率下的誤差情況,共計(jì)進(jìn)行迭代3000 次。圖像分辨率為256×256 和128×128 時(shí),效果并不理想。當(dāng)輸入圖像的分辨率為75×75 時(shí),進(jìn)行到2800 次迭代時(shí),模型能達(dá)到最小誤差。
表1 VGG16 結(jié)構(gòu)及參數(shù)情況
圖6 不同圖像分辨率下的誤差情況
如圖7 所示為模型的準(zhǔn)確率情況。分辨率為128×128 和256×256 的輸入圖像在迭代次數(shù)為2500 次時(shí),達(dá)到最高準(zhǔn)確率大約為75%,而流量灰度圖分辨率為75×75 時(shí),在經(jīng)歷2850 次迭代后,準(zhǔn)確率達(dá)到91%。綜合模型準(zhǔn)確率和模型誤差的分析,因此流量灰度圖分辨率為75×75 時(shí),模型的訓(xùn)練效果最佳。
圖7 不同圖像分辨率下的準(zhǔn)確率情況
在訓(xùn)練集中,依舊采用流量灰度圖分辨率為75×75時(shí)所訓(xùn)練的模型,因異常檢測(cè)模型為二分類模型,因此采用F1分?jǐn)?shù)作為模型的評(píng)價(jià)標(biāo)準(zhǔn),F(xiàn)1值兼顧了模型的召回率與準(zhǔn)確率,公式如下:
如表2 所示為本模型對(duì)測(cè)試集的預(yù)測(cè)情況。
表2 測(cè)試集預(yù)測(cè)情況
測(cè)試集共15000 條數(shù)據(jù)進(jìn)入模型測(cè)試,正常請(qǐng)求12620 條,異常請(qǐng)求2380 條,預(yù)測(cè)正確的正常請(qǐng)求為11098 條,預(yù)測(cè)錯(cuò)誤的正常請(qǐng)求為1522 條,預(yù)測(cè)正確的異常請(qǐng)求為1730 條,預(yù)測(cè)錯(cuò)誤的異常請(qǐng)求為650 條。模型的精確率為94.47%,召回率為87.94%,F(xiàn)1值為91.1%。模型取得了較好的訓(xùn)練結(jié)果。
網(wǎng)絡(luò)安全在近年來(lái)受到了人們的重視,良好的異常檢測(cè)模型可對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行檢測(cè)。本文在傳統(tǒng)VGG16 算法基礎(chǔ)上進(jìn)行改進(jìn),基于微型遷移學(xué)習(xí)將Image Net 模型中卷積層與池化層參數(shù)遷移至改進(jìn)模型,將全連接層個(gè)數(shù)改為2,其結(jié)點(diǎn)個(gè)數(shù)更符合異常檢測(cè)模型,學(xué)習(xí)率優(yōu)化方法改為RMS。通過(guò)ISCX2012數(shù)據(jù)集對(duì)改進(jìn)后的算法進(jìn)行訓(xùn)練,取得了較好的訓(xùn)練效果。