趙 英 王麗寶 陳駿君 滕 建
(北京化工大學 信息科學與技術(shù)學院, 北京 100029)
隨著網(wǎng)絡(luò)信息技術(shù)的迅猛發(fā)展,互聯(lián)網(wǎng)已成為人們?nèi)粘9ぷ骱蜕钪斜夭豢缮俚囊徊糠?,為人們帶來了極大的便利,但同時也時刻威脅著人們的財產(chǎn)與信息安全,因此,進行網(wǎng)絡(luò)信息安全研究具有重要意義。目前,作為網(wǎng)絡(luò)安全研究的一個重要方向,網(wǎng)絡(luò)入侵檢測方法[1]已經(jīng)成為網(wǎng)絡(luò)安全技術(shù)領(lǐng)域研究的熱點。
近年來,各種機器學習技術(shù)被應(yīng)用于網(wǎng)絡(luò)異常檢測領(lǐng)域[2-4],但由于傳統(tǒng)機器學習需要人工選擇特征,存在特征選擇困難的問題,需要進行多次測試才能獲取分類效果最佳的數(shù)據(jù)特征組合。深度學習技術(shù)是目前解決這一問題的最有效的一種途徑。該技術(shù)能夠自動學習原始數(shù)據(jù)中的特征,不需要進行人工選擇,在自然語言處理、圖像識別以及語音識別等領(lǐng)域都顯示出較為優(yōu)秀的識別分類性能[5]。因此,這一技術(shù)被越來越多的研究者應(yīng)用到網(wǎng)絡(luò)異常檢測模型中,并獲得了較好的效果[6-8]。
目前,缺乏標記數(shù)據(jù)是網(wǎng)絡(luò)異常檢測面臨的重大挑戰(zhàn)之一。如何利用不同數(shù)據(jù)源的網(wǎng)絡(luò)流量數(shù)據(jù)來共同訓練網(wǎng)絡(luò)異常流量檢測模型并保護數(shù)據(jù)隱私是一個亟待解決的問題。聯(lián)邦學習(federated learning)[9]是解決多源數(shù)據(jù)共同訓練模型的一種有效途徑,這一概念是由Bernd等[10]最先提出的。聯(lián)邦學習的宗旨是在不共享隱私數(shù)據(jù)的情況下進行協(xié)同訓練,其不用匯聚模型訓練所需要的數(shù)據(jù)進行集中計算,只是傳遞加密的梯度相關(guān)數(shù)據(jù),利用多源數(shù)據(jù)協(xié)同訓練同一模型[11]。鑒于傳統(tǒng)網(wǎng)絡(luò)異常檢測模型存在的檢測準確率低、誤報率高以及缺乏標簽數(shù)據(jù)等問題,本文提出一種融合聯(lián)邦學習和卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)入侵檢測分類模型(CNN-FL)來檢測網(wǎng)絡(luò)異常。該模型能夠利用多源數(shù)據(jù)協(xié)同訓練同一模型,解決數(shù)據(jù)孤島以及標簽數(shù)據(jù)缺乏的問題;并在NSL-KDD數(shù)據(jù)集上進行實驗驗證,結(jié)果表明,本文模型在二分類以及多分類實驗中具有較高的分類精度,較傳統(tǒng)的機器學習方法具有更好的分類性能。
聯(lián)邦學習作為一項人工智能技術(shù),其設(shè)計目的主要是在保障數(shù)據(jù)交換的同時確保信息安全,保護個人數(shù)據(jù)隱私。聯(lián)邦學習解決了多計算節(jié)點在不交換原始數(shù)據(jù)的情況下,共同訓練全局模型的問題。
在聯(lián)邦學習中,全局模型通過分布式的方式在大量參與者中進行訓練。為了避免服務(wù)器訪問本地數(shù)據(jù),參與者只在本地訓練模型,并且只與服務(wù)器共享模型參數(shù)來更新全局模型,這一技術(shù)對于許多分布式學習場景來說具有很大的優(yōu)勢。典型的聯(lián)邦學習體系結(jié)構(gòu)如圖1所示。假設(shè)在聯(lián)邦學習中有K個具有相同目標的參與者聯(lián)合訓練一個模型,在每一次迭代時,服務(wù)器將全局模型M分發(fā)給參與者,參與者通過本地數(shù)據(jù)單獨訓練模型。在本地訓練完成后,每個參與者將模型參數(shù)發(fā)送回服務(wù)器,服務(wù)器通過平均各參與者的模型參數(shù)來更新全局模型。全局模型的更新過程如式(1)所示。
圖1 聯(lián)邦學習體系結(jié)構(gòu)Fig.1 Federated learning architecture
(1)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)的概念最先是由LeCun等[12]提出的,LeCun首次將反向傳播技術(shù)應(yīng)用于神經(jīng)網(wǎng)絡(luò),并將其命名為卷積神經(jīng)網(wǎng)絡(luò)。但由于當時計算能力有限,無法滿足反向傳播技術(shù)所需要的巨大計算量,導致對卷積神經(jīng)網(wǎng)絡(luò)的研究一直停滯不前。隨著半導體技術(shù)的飛速發(fā)展,計算能力不斷提高,基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識別算法在各類競賽中均取得了較好的識別效果,由此卷積神經(jīng)網(wǎng)絡(luò)技術(shù)逐漸被人們所熟知。近年來,越來越多的研究者將卷積神經(jīng)網(wǎng)絡(luò)技術(shù)應(yīng)用于圖像和語音識別領(lǐng)域,并取得了顯著的研究成果[13-14]。同時,這一技術(shù)也被越來越多的公司應(yīng)用到最新的研發(fā)產(chǎn)品中,包括Google的Google Net以及人工智能領(lǐng)域極為熱門的Alpha Go。
圖2為CNN的網(wǎng)絡(luò)結(jié)構(gòu)圖。CNN模型通過卷積和池化操作對相鄰像素點進行處理,為了增強圖片信息的連續(xù)性,CNN模型只處理圖片中每一塊的小像素集,不再單獨對每一個像素點進行處理。在圖像識別中,CNN模型能夠去除圖片中大量無關(guān)的參數(shù),保留圖片中較為關(guān)鍵的數(shù)據(jù)特征,以獲取較好的識別效果。CNN方法處理過程如式(2)所示,首先將輸入的初始圖像與線性濾波器進行卷積運算,然后加上偏置項,最后再經(jīng)過激活函數(shù)來獲取特征圖。
圖2 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Convolutional neural network structure
(2)
式中,hk為給定層上第k個特征映射,Wk為濾波權(quán)重,x為給定灰度圖中相應(yīng)區(qū)域的像素值矩陣,bk為偏置,tanh為激活函數(shù)。
在網(wǎng)絡(luò)異常檢測領(lǐng)域,CNN模型在獲取局部特征以及處理具有統(tǒng)計平穩(wěn)性和局部關(guān)聯(lián)性的數(shù)據(jù)方面較其他機器學習方法具有更加優(yōu)良的特性[15]。 CNN模型通常是由輸入層、卷積層、池化層、全連接層以及輸出層這5部分組成?;贑NN的網(wǎng)絡(luò)異常檢測模型原理圖如圖3所示。
圖3 基于 CNN 的網(wǎng)絡(luò)異常檢測模型原理圖Fig.3 Block diagram of the CNN-based network intrusion detection system
為了優(yōu)化網(wǎng)絡(luò)異常檢測模型,提高網(wǎng)絡(luò)異常檢測模型的準確率,降低誤報率,同時為了解決缺乏標簽的訓練數(shù)據(jù)的問題,本文提出一種融合聯(lián)邦學習和卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)入侵檢測模型。使用聯(lián)邦學習來解決數(shù)據(jù)稀缺問題并保護用戶數(shù)據(jù)隱私,使多位參與者在不共享隱私數(shù)據(jù)的情況下協(xié)作訓練一個全局模型。對于每一位參與者,首先需要對本地數(shù)據(jù)進行預處理,然后利用CNN-FL模型進行特征提取。每一位參與者與服務(wù)器只傳遞加密的梯度相關(guān)數(shù)據(jù),最后通過SoftMax分類器獲得分類結(jié)果。該算法的原理圖見圖4。
圖4 基于CNN-FL的網(wǎng)絡(luò)入侵檢測原理框圖Fig.4 Block diagram of the CNN-FL-based network intrusion detection principle
如圖4所示,每一位模型參與者首先對本地原始數(shù)據(jù)集進行數(shù)值化操作,通過one-hot編碼方式將字符型特征轉(zhuǎn)換為數(shù)值型特征,然后采用min-max方法對數(shù)據(jù)集以列為單位進行標準化處理,使數(shù)據(jù)統(tǒng)一映射到[0,1]區(qū)間上,之后將處理后的特征映射至矩陣中并生成灰度圖,最后通過CNN-FL模型對特征進行提取,并通過SoftMax分類器獲取分類結(jié)果。
圖5 CNN-FL模型結(jié)構(gòu)Fig.5 CNN-FL model structure
算法1CNN-FL模型訓練
1 for Iteration t do
/*服務(wù)器端: */
3 sendωtto each participant;
/*參與者 */
4 for Participantkdo
6 for Local epoch e do
8 end
9 end
10 end
如圖5和算法1所示,每位模型參與者使用本地數(shù)據(jù)集訓練CNN模型,在每次迭代過程中,每位模型參與者首先將當前的模型梯度相關(guān)系數(shù)上傳至服務(wù)器,服務(wù)器通過平均每位參與者最新的梯度相關(guān)系數(shù)來更新全局模型,每一位參與者在下一次迭代中通過下載最新的全局模型參數(shù),并利用本地數(shù)據(jù)來訓練CNN模型。不斷循環(huán)迭代,直至整體模型達到最優(yōu),使得CNN-FL模型對每一位模型參與者本地的數(shù)據(jù)集都具有較好的檢測效果。
目前在網(wǎng)絡(luò)檢測和網(wǎng)絡(luò)攻擊領(lǐng)域,通常采用KDDcup99數(shù)據(jù)集作為算法和模型的測試與評價標準。鑒于KDDcup99數(shù)據(jù)集中存在包含大量重復數(shù)據(jù)以及未區(qū)分訓練集與測試集等問題,本文采用NSL-KDD數(shù)據(jù)集作為實驗數(shù)據(jù)集。NSL-KDD數(shù)據(jù)集針對KDDcup99數(shù)據(jù)集中存在的問題進行的一系列優(yōu)化如下。
1) NSL-KDD數(shù)據(jù)集針對KDDcup99數(shù)據(jù)集中需要人為劃分訓練集和測試集的問題,區(qū)分了訓練集和測試集。
2) NSL-KDD訓練數(shù)據(jù)集整理并清除了KDDcup99數(shù)據(jù)集中冗余的部分。
3) NSL-KDD數(shù)據(jù)集數(shù)據(jù)量的大小更加合理,訓練集中共有125 973條數(shù)據(jù),測試集中共有22 544條數(shù)據(jù)。
4) NSL-KDD數(shù)據(jù)集較其他數(shù)據(jù)集更能體現(xiàn)出網(wǎng)絡(luò)異常檢測模型的泛化能力。在NSL-KDD數(shù)據(jù)集中,訓練集中存在的攻擊類型有22種,測試集中存在的攻擊類型有39種,有17種網(wǎng)絡(luò)攻擊類型在訓練集中是不存在的,因此網(wǎng)絡(luò)異常檢測模型在NSL-KDD數(shù)據(jù)集中識別效果的好壞能更好地體現(xiàn)出模型是否具有較強的泛化能力。
在NSL-KDD數(shù)據(jù)集中,每一條網(wǎng)絡(luò)流量數(shù)據(jù)均由42維特征組成,其中包括38維數(shù)值型特征、3維字符型特征以及1維標記特征。NSL-KDD數(shù)據(jù)集中的攻擊類型分為Dos、Probe、R2L和U2R這4種類型。本文實驗中訓練集及測試集的數(shù)據(jù)類別、數(shù)量與比例如表1、2所示,實驗環(huán)境配置如表3所示。
表1 訓練集的類別、數(shù)量與比例Table 1 Types, quantities and proportions of the training set
表2 測試集的類別、數(shù)量與比例Table 2 Types, quantities and proportions of the test set
表3 實驗環(huán)境配置Table 3 Experimental environment configuration
本文通過準確率、精確率和召回率等網(wǎng)絡(luò)異常檢測中常用的指標對實驗結(jié)果進行評價分析,這些指標可以用真陽性(TP)、假陽性(FP)、真陰性(TN)和假陰性(FN)4個度量標準來表示。
真陽性(TP):分類結(jié)果屬于i預測的結(jié)果也屬于i。
假陽性(FP):分類結(jié)果不屬于i預測的結(jié)果屬于i。
真陰性(TN):分類結(jié)果屬于i預測的結(jié)果不屬于i。
假陰性(FN):分類結(jié)果不屬于i預測的結(jié)果不屬于i。
準確率A、精確率P和召回率R的定義如式(3)~(5)所示。
(3)
(4)
(5)
式中,nTP為屬于真陽性情況的數(shù)據(jù)條數(shù),nTN為屬于真陰性情況的數(shù)據(jù)條數(shù),nFP為屬于假陽性情況的數(shù)據(jù)條數(shù),nFN為屬于假陰性情況的數(shù)據(jù)條數(shù)。
為了測試所提出模型,我們模擬了CNN-FL模型訓練所需要的環(huán)境。實驗步驟如下。
1) 數(shù)據(jù)擴充 NSL-KDD數(shù)據(jù)集中有125 973條訓練數(shù)據(jù),為了便于拆分以供K位參與者訓練模型使用,補充27條正常流量數(shù)據(jù),使訓練數(shù)據(jù)擴展到126 000條。
2)數(shù)據(jù)數(shù)值化 由于NSL-KDD數(shù)據(jù)集中存在字符型特征,需要對其進行數(shù)值化操作。數(shù)據(jù)集每一條網(wǎng)絡(luò)流量數(shù)據(jù)均包含3維字符型特征,分別為“protocol_type”、“service”和“flag”,需要對這3維特征進行one-hot編碼,將字符型特征轉(zhuǎn)換為數(shù)值型特征,以其中的“flag”為例,其對應(yīng)的one-hot編碼如表4所示。
表4 Flag屬性one-hot編碼Table 4 Flag attribute one-hot encoding
3)數(shù)據(jù)標準化 由于NSL-KDD數(shù)據(jù)集中數(shù)值差異較大,因此對訓練集以及測試集均采min-max方法,以列為單位進行標準化處理,使數(shù)據(jù)統(tǒng)一映射到[0,1]區(qū)間上。
4)生成圖片 為了便于后續(xù)使用卷積神經(jīng)網(wǎng)絡(luò)處理數(shù)據(jù),將經(jīng)過步驟3)處理后的122維特征映射到12×12的矩陣中,不足的部分用0填充。為了生成12×12的灰度圖,需要將矩陣中的數(shù)值乘以255,從而獲得圖片中各個點的像素值。圖6為生成的部分樣本圖片。
圖6 部分樣本圖片F(xiàn)ig.6 Some sample pictures
5)數(shù)據(jù)拆分 將步驟4)中生成的圖片隨機均勻分成K份,用于K位參與者訓練模型使用。
6)模型訓練 在實際訓練中,參與者與服務(wù)器只交換加密的梯度相關(guān)系數(shù)。
本文將從以下兩個方面對CNN-FL模型在網(wǎng)絡(luò)異常檢測中的可行性進行驗證。
(1)從整體角度出發(fā) 以網(wǎng)絡(luò)異常檢測二分類為例設(shè)置了6個不同的場景K{5,10,20,50,100,1 000}來研究不同參與者模型訓練的準確率并與基于卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)異常檢測模型(K=1)進行對比,詳細結(jié)果如圖7所示。
圖7 不同參與者模型準確率Fig.7 Model accuracy for different participants
從圖7可以明顯看出,隨著參與者數(shù)量的不斷增加,CNN-FL模型的準確率逐步下降。與CNN模型相比,CNN-FL模型準確率雖有所下降,但準確率基本相近(迭代100次后,CNN模型的準確率為94.26%,CNN-FL模型(K=100)的準確率為91.88%)。同時CNN-FL模型解決了缺乏標注的訓練數(shù)據(jù)的問題,該模型能夠使用多源數(shù)據(jù)訓練同一模型,并保護數(shù)據(jù)隱私。因此,CNN-FL模型在網(wǎng)絡(luò)異常檢測中是可行的。
(2)從個體角度出發(fā) 將數(shù)據(jù)集中的數(shù)據(jù)隨機均勻分成K份,分別代表每位用戶所擁有的數(shù)據(jù)集。同樣設(shè)置6個不同的場景K{5,10,20,50,100,1 000},以二分類為例研究在不同數(shù)據(jù)規(guī)模的情況下,每位用戶僅使用本地數(shù)據(jù)訓練的CNN網(wǎng)絡(luò)檢測模型的識別準確率,并取均值。隨后與相同場景下基于聯(lián)邦學習的檢測模型的識別準確率進行對比,結(jié)果如圖8所示。
圖8 不同數(shù)據(jù)規(guī)模準確率對比Fig.8 Comparison of accuracy of different data scales
K值越大,代表每位用戶擁有的數(shù)據(jù)集規(guī)模越小。圖8可以明顯反映出隨著每位用戶擁有的數(shù)據(jù)集規(guī)模不斷減小,其使用CNN-FL模型以及僅使用本地數(shù)據(jù)訓練的CNN網(wǎng)絡(luò)的檢測模型準確率均不斷下降。但在同等數(shù)據(jù)集規(guī)模的情況下,用戶使用CNN-FL模型的識別準確率要高于僅使用本地數(shù)據(jù)訓練的CNN網(wǎng)絡(luò)檢測模型的識別準確率。在多分類情況下,由于某些攻擊類型的數(shù)據(jù)較少,每位用戶本地數(shù)據(jù)集中該類型數(shù)據(jù)較少或不存在該類型數(shù)據(jù),如果僅使用本地數(shù)據(jù)集訓練模型,會造成模型識別準確率較低甚至無法訓練模型的問題,對比效果將會更加明顯。因此,在相同數(shù)據(jù)規(guī)模下,用戶通過使用CNN-FL模型能夠獲得更好的識別效果,充分驗證了該模型在入侵檢測領(lǐng)域的可行性。
本文設(shè)計了兩個實驗來研究CNN-FL模型(K=100)的二分類(Normal,Anomaly)和五分類(Normal,Dos, Probe,R2L和U2R)性能。為了與其他機器學習方法進行比較,同時還設(shè)計了對比實驗,將CNN-FL模型的分類性能與C4.5決策樹、隨機森林、隨機樹、支持向量機、循環(huán)神經(jīng)網(wǎng)絡(luò)等機器學習方法進行了對比。
3.4.1二分類
表5顯示了二分類實驗中測試集上CNN-FL模型的分類效果。實驗表明,經(jīng)過100次迭代后,CNN-FL模型具有較高的檢測準確率,訓練集中準確率為97.44%,測試集中準確率為91.88%,如圖9所示。
圖9 二分類模型在訓練集、測試集上的檢測準確率Fig.9 Detection accuracy of the binary classification model for the training set and test set
表5 二分類實驗中CNN-FL模型的分類效果Table 5 Classification effect of the CNN-FL model in the binary classification experiment
與之前研究人員提出的C4.5決策樹、隨機森林、隨機樹、支持向量機、循環(huán)神經(jīng)網(wǎng)絡(luò)等方法在同一基準數(shù)據(jù)集(NSL-KDD)上進行比較的結(jié)果如圖10所示。很明顯,在二分類實驗中,CNN-FL模型的各項性能均優(yōu)于其他分類算法。
圖10 二分類各模型性能對比Fig.10 Performance comparison chart of each model in the binary classification test
3.4.2五分類
在五分類實驗中,CNN-FL網(wǎng)絡(luò)檢測模型在訓練集上的準確率達到97.47%,在測試集上的準確率達到82.40%。CNN-FL模型在測試集上的效果如表6所示。表7顯示了不同攻擊類型的檢測精確率和召回率。
表6 五分類實驗中CNN-FL模型的分類效果Table 6 Classification effect of the CNN-FL model in the five-category experiment
表7 不同攻擊類型的檢測精確率與召回率Table 7 Detection accuracy and recall ratio of different attack types
如圖11所示,CNN-FL模型的檢測準確率較C4.5決策樹、隨機森林、隨機樹、支持向量機、循環(huán)神經(jīng)網(wǎng)絡(luò)等分類算法所獲得的準確率要高。由于數(shù)據(jù)集中樣本分布不均勻,與二分類相比,五分類的模型檢測準確率有所下降。
圖11 五分類各模型準確率Fig.11 Accuracy of each model in the five classification test
針對目前網(wǎng)絡(luò)異常檢測技術(shù)還存在著檢測準確率低、誤報率高以及缺乏標簽數(shù)據(jù)等問題,本文提出了CNN-FL網(wǎng)絡(luò)異常檢測模型。在CNN-FL模型中,參與者不會將他們的訓練數(shù)據(jù)共享給第三方,只是傳遞加密的梯度相關(guān)數(shù)據(jù),從而保護了數(shù)據(jù)隱私,同時解決了數(shù)據(jù)孤島以及缺乏標簽數(shù)據(jù)的問題。在實驗中CNN-FL模型具有強大的入侵檢測建模能力,在二分類和多分類中均具有較高的準確率、精確率和召回率,優(yōu)于傳統(tǒng)的分類方法。在未來的工作中,將進一步拓展聯(lián)邦學習的使用領(lǐng)域,并研究長短期記憶網(wǎng)絡(luò)(LSTM)、雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(雙向RNNs)等深度學習算法與聯(lián)邦學習模型結(jié)合在網(wǎng)絡(luò)異常檢測領(lǐng)域的分類性能。