羅智鈺 黃立群
摘要:隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,網(wǎng)絡(luò)入侵等網(wǎng)絡(luò)信息安全隱患引起人們的日益關(guān)注,通過入侵檢測來及時發(fā)現(xiàn)潛在網(wǎng)絡(luò)入侵行為是抵御入侵的一種有效手段,在實際應(yīng)用中具有重要的意義。該文引人基于條件變分自編碼器的深度學(xué)習(xí)模型,利用Tensorflow框架搭建了一個人侵檢測系統(tǒng)。為了驗證本文入侵檢測系統(tǒng)的有效性,我們在公開的NSL-KDD數(shù)據(jù)集上開展了相應(yīng)的性能測試,實驗結(jié)果表明所設(shè)計的人侵檢測系統(tǒng)在五種網(wǎng)絡(luò)狀態(tài)的預(yù)判分類上準確率達到了72.2%,可以在實際部署中對入侵行為進行有效分類。
關(guān)鍵詞:網(wǎng)絡(luò)安全;人侵檢測;條件變分自編碼器;Tensorflow
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2020)13-0022-03
當(dāng)今,各類網(wǎng)絡(luò)入侵考驗著計算機的防御體系與安全策略,而入侵檢測(Intrusion Detection)正是抵御入侵的一種有效手段。隨著目前人工智能領(lǐng)域的興起及深度學(xué)習(xí)算法的日趨成熟,使用深度習(xí)方法進行基于異常的入侵檢測也成為研究熱點。深度學(xué)習(xí)有著強大的特征學(xué)習(xí)能力,有助于應(yīng)對攻擊特征愈發(fā)豐富、數(shù)據(jù)愈發(fā)復(fù)雜所帶來的高維數(shù)據(jù)處理問題以及預(yù)測、分類攻擊的準確率問題。
本文構(gòu)造一個基于條件變分自編碼器(conditional Varia-tiona]Autoencoder,CVAE)的人侵檢測系統(tǒng),以實現(xiàn)對網(wǎng)絡(luò)狀態(tài)數(shù)據(jù)的分析,在文獻[4]中該方法被稱為ID-CVAE。與使用變分自編碼器(vAE)的不同之處在于,VAE以樣本特征為唯一輸入,而CVAE使用樣本特征與入侵標簽兩種輸入,入侵標簽將作為CVAE解碼層的附加輸入。使用該方法僅需訓(xùn)練出單個模型,訓(xùn)練過程更省時,但需對測試樣本進行多次測試,通過比較測試結(jié)果完成對所測樣本的分類判斷。
1基于變分自編碼器的入侵檢測系統(tǒng)設(shè)計
本文入侵檢測系統(tǒng)包含數(shù)據(jù)預(yù)處理模塊、入侵檢測模型、預(yù)測模塊三個部分,經(jīng)過數(shù)據(jù)采集、數(shù)據(jù)分析、給出預(yù)判三個步驟實現(xiàn)其對網(wǎng)絡(luò)攻擊的檢測功能。
1.1數(shù)據(jù)集選擇
本文采用人侵檢測數(shù)據(jù)集NSL-KDD作為采集的數(shù)據(jù),它包含125,973個訓(xùn)練樣本和22,544個測試樣本,41個特征,40種標簽。41個特征中,38個為連續(xù)型,3個為離散型。根據(jù)文獻[5],在使用機器學(xué)習(xí)方法實驗入侵檢測時,特征9、20和21沒有作用,特征15、17、19、32、40在檢測攻擊時作用很小,特征7、8、11和14的值幾乎都為零。數(shù)據(jù)集中的40種標簽對應(yīng)網(wǎng)絡(luò)正常狀態(tài)Normal和39種網(wǎng)絡(luò)攻擊,其中,訓(xùn)練集包含22種攻擊,而剩下的17種攻擊僅出現(xiàn)在測試集中,這使得該數(shù)據(jù)集可用于測試模型的泛化性。39種網(wǎng)絡(luò)攻擊可以分為四大類:DoS、Probe、R2L、U2R,樣本類別分布見表1??梢奃oS攻擊的樣本在數(shù)量上遠遠多于其他類別的樣本,入侵數(shù)據(jù)是不平衡的。
1.2數(shù)據(jù)預(yù)處理模塊
數(shù)據(jù)預(yù)處理模塊將數(shù)據(jù)集文件轉(zhuǎn)化成輸入模型所需的樣本特征集和標簽集。首先,丟棄六個幾乎為零的連續(xù)型特征,對剩余32個連續(xù)型特征進行標準化。然后對三個離散型特征進行獨熱編碼,這三個離散型特征protocol_type、flag、service分別有3個、11個和70個不同的值,獨熱編碼后它們分別產(chǎn)生了3個、11個、70個項,將樣本特征項與標簽項分離,產(chǎn)生一個116項的最終樣本特征集。而標簽項中的40種數(shù)值需被歸類替換為Normal、DoS、Probe、R2L、U2R五種值,經(jīng)過獨熱編碼生成五個長度的額外輸入向量。預(yù)處理流程可用圖2表示。
1.3基于條件變分自編碼器的生成式入侵檢測模型
自編碼器是深度學(xué)習(xí)領(lǐng)域中一種無監(jiān)督學(xué)習(xí)方法,它一般包含編碼器與解碼器兩個模塊,編碼器可以將高維輸入轉(zhuǎn)化為低維的隱向量z,而解碼器則將隱向量還原為盡可能接近輸入的輸出。本文采用的是條件變分自編碼器。
首先,編碼器將入侵樣本x映射為兩組參數(shù),這兩組參數(shù)確定一個輸出z基于輸人x的條件概率分布q(ZIX),假設(shè)它為一個正態(tài)分布,而確定一個正態(tài)分布需要均值和方差,因此假設(shè)兩組參數(shù)代表的意義分別為均值u和方差盯σ2。從中采樣得到服從于該分布的隱向量z,通過解碼器將隱向量z映射為新的一組參數(shù),映射過程中將在解碼層額外輸入一個標簽向量L,標簽L與樣本x;是相關(guān)聯(lián)的。由此確定一個基于z與L的條件概率分布p(x,IZ,L),表明解碼器的概率分布受隱向量和標簽的約束。假設(shè)該分布為伯努利分布,可從中獲得最終輸出x,這個x即代表重構(gòu)的入侵樣本。為了使生成的x與x的距離盡可能小且保證模型具有生成能力,q(Zlx)應(yīng)盡可能向標準正態(tài)分布N(0,1)看齊。為此,在模型中加入反向傳播,建立損失函數(shù),使用隨機梯度下降算法將損失值最小化。本文采用與文獻[4]相同形式的損失函數(shù),如公式(1)所示。
第二部分表示使用概率分布p(X' IZ,L)下PX的對數(shù)似然,它可表征重構(gòu)輸出x與輸入樣本x的距離。反向傳播的過程將得出p的最大似然估計,它表示最有可能導(dǎo)致已知樣本結(jié)果的參數(shù)值,它將作為重構(gòu)的輸出x。入侵檢測總體模型如圖3所示。
1.3.1編碼器結(jié)構(gòu)
本文編碼器中包含至少4個全連接層,第一個全連接層將使116個維度的輸入變換為500維度的輸出,中間層輸入與輸出的維度不變,最后一層由兩個并列的神經(jīng)元層組成,它們都輸出25維度的向量,分別代表正態(tài)分布的均值u及方差的對數(shù)logo2。從正態(tài)分布中采樣一個25維隱向量z,根據(jù)正態(tài)分布的性質(zhì),已知標準正態(tài)分布XNN(01),且a、b為實數(shù),則有:
編碼器設(shè)計如圖4所示,圖中圓圈表示神經(jīng)元,下方數(shù)字表示神經(jīng)元個數(shù),即該全連接層節(jié)點數(shù)。
1.3.2解碼器結(jié)構(gòu)
解碼器包含4個全連接層,先將25維的z映射為495維的輸出,并將獨熱編碼的5維標簽向量作為額外輸入,一起輸入到第二個全連接層中。額外輸入的插入位置是根據(jù)測試經(jīng)驗判斷的。在解碼器的最后,還原出116維的重構(gòu)輸出x。解碼器如圖5所示。
1.4預(yù)測模塊
預(yù)測過程使用測試集樣本,同樣分為兩種輸入:測試樣本特征以及標簽。整個預(yù)測過程可分為兩大步驟。第一步,對于同一條樣本記錄,需要將它多次送入已訓(xùn)練好的模型中,每次使用不同的標簽作為額外輸入,因為有五種標簽,所以需要送人五次,得到五個重構(gòu)輸出。第二步,計算真實測試樣本和每個重構(gòu)輸出之間的誤差。當(dāng)使用正確的標簽作為輸入時,網(wǎng)絡(luò)將更好地恢復(fù)原始特征,因此為每個樣本選擇與最小誤差相關(guān)的標簽。
為測試樣本選中的標簽即為預(yù)判結(jié)果,它表示五種網(wǎng)絡(luò)狀態(tài)中的一種:正常Normal以及可能受到DoS、PROBE、R2L或U2R入侵。預(yù)測模塊如圖6所示。
2實驗分析
實驗分為兩個階段。第一階段為模型訓(xùn)練,借助Tensor-flow搭建入侵檢測模型,輸入完整訓(xùn)練集訓(xùn)練模型。第二階段為測試,將1000條測試集樣本輸入到已訓(xùn)練完成的系統(tǒng)中,對比預(yù)測的測試樣本標簽與實際的測試樣本標簽,計算準確率,從而驗證本文入侵檢測系統(tǒng)的可行性。由于標簽有五種可能值,所以本實驗也是一個五分類任務(wù),本文會給出標簽分類的具體結(jié)果,統(tǒng)計每種實際標簽被預(yù)判為某一類標簽的數(shù)量與占比。準確率計算公式如公式(6)。A、B、c、D、E表示各類樣本數(shù)量,TA、TB、TC、TD、TE為五種類別各自被正確分類的數(shù)量。
條件變分自編碼器中的全連接層層數(shù)會影響模型的非線性學(xué)習(xí)效果,本文首先在編碼器部分采用四層全連接層,迭代訓(xùn)練模型30次后進行測試,得出準確率為0.202,準確率偏低。此時標簽分類情況如表2所示。可看出每一類實際標簽的預(yù)測分類情況偏向于呈現(xiàn)均勻分布,無明顯規(guī)律,分類效果差。
將編碼器部分全連接層數(shù)減為三層,同時還將損失函數(shù)中的對數(shù)似然部分改為均方差。給出隨著訓(xùn)練迭代次數(shù)變化而變化的測試準確率如表3所示。
可見迭代訓(xùn)練91次后,測試所得的準確率達到最高,為72.2%,此時標簽分類具體情況如表4所示。NORMAL與DOS類的樣本的預(yù)判分類結(jié)果最好,分類正確的數(shù)目占該類實際標簽總數(shù)的比例分別為77.4%與76.8%。而這兩類樣本在訓(xùn)練集中占比也最多,分別為53.4%與36.4%。
3結(jié)論
當(dāng)前網(wǎng)絡(luò)態(tài)勢復(fù)雜,及時辨別網(wǎng)絡(luò)攻擊尤為重要,入侵檢測技術(shù)是一項有效的手段,有多種基于機器學(xué)習(xí)構(gòu)建入侵檢測模型的方法。當(dāng)使用VAE方法時,需要創(chuàng)建盡可能多的模型,每個模型都需要一個特定的訓(xùn)練步驟,每個訓(xùn)練步驟都使用與所學(xué)標簽相關(guān)的特定樣本作為訓(xùn)練數(shù)據(jù)。相反,使用ID-CVAE方法僅需訓(xùn)練一個模型,這就是為什么基于CVAE的入侵檢測模型在計算時間和求解復(fù)雜度上是更好的選擇。
本文設(shè)計的基于條件變分自編碼器的入侵檢測系統(tǒng)一定程度上是可行的,其準確率最高為72.2%,且當(dāng)訓(xùn)練集中某類樣本數(shù)量占比越多,該類樣本的測試分類效果越好。該系統(tǒng)可對網(wǎng)絡(luò)狀態(tài)進行分類,預(yù)測多種攻擊,同時具備特征學(xué)習(xí)能力,可檢測到存在同樣規(guī)律的新型攻擊。但還應(yīng)注意到,系統(tǒng)的準確率仍有提高的空間,這與系統(tǒng)的具體編程實現(xiàn)有關(guān),入侵模型仍存在需要改進的地方。