卓子寒,呂欣潤(rùn)*,劉立坤,車佳臻,余翔湛,葉 麟,張曉慧
(1.國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心,北京 100029;2.哈爾濱工業(yè)大學(xué) 計(jì)算學(xué)部 網(wǎng)絡(luò)空間安全學(xué)院,黑龍江 哈爾濱 150001)
隨著人工智能以及互聯(lián)網(wǎng)的不斷普及和廣泛應(yīng)用,各種網(wǎng)絡(luò)協(xié)議以及網(wǎng)絡(luò)流量數(shù)據(jù)應(yīng)運(yùn)而生。互聯(lián)網(wǎng)使信息的流通更加便捷,不斷改變著人們的交流方式,但同時(shí)還帶來(lái)了許多問(wèn)題,例如數(shù)據(jù)安全問(wèn)題和隱私保護(hù)問(wèn)題等。隨著人們對(duì)隱私保護(hù)意識(shí)的增強(qiáng),使得網(wǎng)絡(luò)流量識(shí)別以及檢測(cè)成為了一個(gè)極其重要的研究領(lǐng)域。
網(wǎng)絡(luò)流量識(shí)別以及檢測(cè)的安全問(wèn)題,主要集中在識(shí)別流量類型。流量類型識(shí)別是指利用某種算法構(gòu)造分類模型,并利用該模型對(duì)網(wǎng)絡(luò)流量進(jìn)行分類識(shí)別,其中分類的依據(jù)包括應(yīng)用程序、業(yè)務(wù)類型和應(yīng)用層協(xié)議等[1]。在過(guò)去的研究中,早期網(wǎng)絡(luò)流量分類主要依據(jù)傳輸層協(xié)議類型,即根據(jù)UDP或TCP端口號(hào)進(jìn)行分類。該方法雖然易于實(shí)現(xiàn),但是在網(wǎng)絡(luò)協(xié)議多元化、端口偽裝技術(shù)盛行的今天,基于端口號(hào)的識(shí)別方法準(zhǔn)確率越來(lái)越低,并逐漸成為了網(wǎng)絡(luò)流量分類的輔助方法。由于網(wǎng)絡(luò)報(bào)文協(xié)議以及載荷越來(lái)越復(fù)雜,研究人員發(fā)現(xiàn)在這些數(shù)據(jù)包中的協(xié)議頭以及載荷部分包含了許多特殊的信息或信息組合,因此出現(xiàn)了深度報(bào)文檢測(cè)(Deep Packet Inspection,DPI)技術(shù)。DPI技術(shù)主要通過(guò)分析TCP流中數(shù)據(jù)包的頭部和載荷部分?jǐn)?shù)據(jù),若與已知程序或協(xié)議類型的數(shù)據(jù)包在某些特征上相似,則可認(rèn)為該TCP流屬于同一個(gè)應(yīng)用程序或協(xié)議。Lu等[2]提出并設(shè)計(jì)了一個(gè)基于DPI技術(shù)的網(wǎng)絡(luò)數(shù)據(jù)分類系統(tǒng),并結(jié)合使用可編程門列陣和三元內(nèi)容可尋址存儲(chǔ)器體系結(jié)構(gòu),該系統(tǒng)可基本滿足分類需求。為了解決數(shù)據(jù)隱私問(wèn)題,Li等[3]提出了一種可進(jìn)行隱私保護(hù)的動(dòng)態(tài)深度包檢測(cè)技術(shù),以解決在對(duì)網(wǎng)絡(luò)流量進(jìn)行處理的情況下造成的數(shù)據(jù)隱私泄露問(wèn)題。付文亮等[4]提出了一個(gè)基于FPGA的高性能網(wǎng)絡(luò)流量法分類框架,使用輕量級(jí)DPI方法快速檢測(cè)流量特征,該框架能夠準(zhǔn)確識(shí)別多種流量且準(zhǔn)確率可達(dá)97%。由于DPI技術(shù)不再以端口號(hào)為分類根據(jù),因此不受端口偽裝技術(shù)的影響。
在近些年的研究中,隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)數(shù)據(jù)包容量和復(fù)雜度增加,DPI技術(shù)需要檢測(cè)每一個(gè)數(shù)據(jù)包的包頭和載荷,導(dǎo)致其耗費(fèi)巨大的資源,因此傳統(tǒng)的DPI技術(shù)漸漸失去了優(yōu)勢(shì)。如今,人工智能崛起,通過(guò)機(jī)器學(xué)習(xí)或深度學(xué)習(xí)算法利用網(wǎng)絡(luò)流量特征訓(xùn)練分類模型成為了主流方法?;谏疃葘W(xué)習(xí)的識(shí)別方法有效地提高了流量類型識(shí)別的精度,并在實(shí)際應(yīng)用中也取得了良好的效果。Bernaille等[5]通過(guò)分析TCP流的前5個(gè)數(shù)據(jù)包的特征信息,并使用多種機(jī)器學(xué)習(xí)算法,例如決策樹(shù)、樸素貝葉斯和支持向量機(jī)等,對(duì)不同TCP流進(jìn)行分類。魯剛等[6]提出了基于聚類的流量分類框架TCFEC,該框架由多個(gè)不同特征子空間聚類的基分類器和一個(gè)最優(yōu)決策部件構(gòu)成。但隨著應(yīng)用范圍的不斷擴(kuò)大,基于深度學(xué)習(xí)的分類方法也出現(xiàn)了一些問(wèn)題。
由于私有網(wǎng)絡(luò)協(xié)議的大量出現(xiàn),這些私有網(wǎng)絡(luò)協(xié)議在形式和內(nèi)容上與已有網(wǎng)絡(luò)協(xié)議極為相似,因此在網(wǎng)絡(luò)流量數(shù)據(jù)中產(chǎn)生了一個(gè)新的異常類型,即分布外數(shù)據(jù)。分布外數(shù)據(jù)是指假設(shè)存在一個(gè)數(shù)據(jù)集D,數(shù)據(jù)集D由(X,Y)構(gòu)成,其中X表示提取的特征集合,Y表示數(shù)據(jù)的標(biāo)簽集合,若存在樣例d(x,y),其中y不屬于Y,那么稱樣例d為數(shù)據(jù)集D中的分布外數(shù)據(jù)。分布外數(shù)據(jù)通常有2個(gè)特點(diǎn):① 與某一已知類型非常相似;② 在現(xiàn)有知識(shí)范圍內(nèi)識(shí)別不出此類型數(shù)據(jù)。根據(jù)研究顯示,深度學(xué)習(xí)模型的分類結(jié)果的可信度并不能得到保證。Nalisnick等[7]的研究結(jié)果表明,在CIFAR-10圖像數(shù)據(jù)集上訓(xùn)練出的Glow模型,使用SVHN和CIFAR-10的混合數(shù)據(jù)集作為測(cè)試數(shù)據(jù),結(jié)果顯示,使用深度學(xué)習(xí)模型會(huì)將SVHN中的數(shù)據(jù)以高置信度分類為CIFAR-10中的數(shù)據(jù)。因此,在一些數(shù)據(jù)類型相似的情景下,深度學(xué)習(xí)模型的分類結(jié)果并不可信,而分類錯(cuò)誤將會(huì)在網(wǎng)絡(luò)安全問(wèn)題上帶來(lái)嚴(yán)重的后果。因此,識(shí)別出分布外數(shù)據(jù)以提高分類結(jié)果的可信度對(duì)于網(wǎng)絡(luò)安全問(wèn)題極其重要。
Lee等[8]提出了一種基于計(jì)算馬氏距離的分布外數(shù)據(jù)檢測(cè)方法,該方法適用于任何預(yù)訓(xùn)練的softmax神經(jīng)網(wǎng)絡(luò)分類器,在高斯判別分析下,通過(guò)獲得深度模型特征的類條件高斯分布,從而得出基于馬氏距離的置信度得分。Jiang等[9]將分類器得到的置信分?jǐn)?shù)替換成衡量分類器與最近鄰分類器置信分?jǐn)?shù)之間的距離得分,定義為信任分?jǐn)?shù)。實(shí)驗(yàn)表明,信任分?jǐn)?shù)優(yōu)于原分類器產(chǎn)生的置信得分或其他基線標(biāo)準(zhǔn)。Liu等[10]提出了一種類別檢測(cè)算法,檢測(cè)訓(xùn)練數(shù)據(jù)集中的分布外數(shù)據(jù)實(shí)例,該算法在已知分布外數(shù)據(jù)大概占比α的前提下在合成以及標(biāo)準(zhǔn)基線數(shù)據(jù)集上證明了該算法的有效性。Yu等[11]提出了一個(gè)雙頭CNN網(wǎng)絡(luò)檢測(cè)分布外數(shù)據(jù),通過(guò)訓(xùn)練一個(gè)由常見(jiàn)的特征提取器和2個(gè)分類器組成的雙頭CNN,它們具有不同的決策邊界,并最大化2個(gè)分類器之間的差異檢測(cè)分布外實(shí)例。
根據(jù)以上的研究?jī)?nèi)容分析,對(duì)于測(cè)試數(shù)據(jù)集中可能存在分布外數(shù)據(jù)并導(dǎo)致基于機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型分類結(jié)果的不可信,因此本文提出了一種基于計(jì)算似然比的檢測(cè)方法。該方法通過(guò)訓(xùn)練2個(gè)模型,分別使用分布內(nèi)數(shù)據(jù)訓(xùn)練原始模型,通過(guò)構(gòu)造擾動(dòng)數(shù)據(jù)模擬分布外數(shù)據(jù)訓(xùn)練擾動(dòng)模型,最后通過(guò)計(jì)算2個(gè)模型得到結(jié)果的似然比判斷分布外數(shù)據(jù),以保證最后分類結(jié)果的可信度,有效防止網(wǎng)絡(luò)安全事故的發(fā)生。
本文使用的網(wǎng)絡(luò)流量數(shù)據(jù)主要分為2個(gè)部分:① 公開(kāi)數(shù)據(jù)集Moore數(shù)據(jù)集,是由Moore等在劍橋大學(xué)實(shí)驗(yàn)室收集,該數(shù)據(jù)集分為10個(gè)部分,包含了多種類型例如郵件流量、惡意流量和數(shù)據(jù)庫(kù)流量等,其標(biāo)簽集合為:List_label=[‘www’,‘MAIL’,‘FTP-CONTROL’,‘FTP-PASV’,‘P2P’,‘ATTACK’,‘DATABASE’,‘FTP-DATA’,‘MULTIMEDIA’,‘SERVICES’,‘INTERACTIVE’,‘GAMES’];② 通過(guò)使用Selenium,VM,Wireshark和Tcpdump等工具收集的網(wǎng)絡(luò)流量。
Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具,可執(zhí)行自動(dòng)化瀏覽過(guò)程,模擬網(wǎng)絡(luò)環(huán)境下的真實(shí)用戶行為,并允許模擬終端用戶執(zhí)行常見(jiàn)活動(dòng),例如輸入文字、鼠標(biāo)移動(dòng)和任意JavaScript執(zhí)行等。流量收集過(guò)程在本機(jī)和一個(gè)虛擬機(jī)(VM)上進(jìn)行。VM是一種使用軟件而非物理設(shè)備來(lái)運(yùn)行程序的計(jì)算資源。每個(gè)VM都有自己的操作系統(tǒng),并與其他VM分開(kāi)運(yùn)行。本機(jī)安裝Windows10操作系統(tǒng),VM安裝Ubuntu系統(tǒng)。VM被配置以NAT形式運(yùn)行,確保網(wǎng)絡(luò)流量始終通過(guò)該機(jī)器路由,因此該收集系統(tǒng)可完全捕獲所有流量,且基于特定參數(shù)控制過(guò)濾器不會(huì)造成任何流量中斷。異常的流量中斷可能會(huì)影響數(shù)據(jù)集的質(zhì)量,甚至導(dǎo)致生成無(wú)效的訓(xùn)練數(shù)據(jù)集。
Windows10系統(tǒng)運(yùn)行Wireshark,VM運(yùn)行Tcpdump。Wireshark和Tcpdump是如今較為流行的2款網(wǎng)絡(luò)嗅探器。Wireshark作為一款網(wǎng)絡(luò)封包分析軟件,具有截取原始網(wǎng)絡(luò)數(shù)據(jù)包并顯示網(wǎng)絡(luò)數(shù)據(jù)包資料信息的功能,使用WinPCAP作為接口直接與網(wǎng)卡進(jìn)行數(shù)據(jù)報(bào)文的交換。Tcpdump同樣作為一款數(shù)據(jù)包分析工具,支持針對(duì)網(wǎng)絡(luò)層、網(wǎng)絡(luò)協(xié)議、主機(jī)、網(wǎng)絡(luò)或端口作為過(guò)濾信息,且更加簡(jiǎn)單靈活,可以在大部分Linux和Unix變體上運(yùn)行。捕獲的網(wǎng)絡(luò)流量全部為原始流量數(shù)據(jù),捕獲后以pcap文件形式保存在本地。
Joy工具是Cisco開(kāi)源的一款加密流量分析系統(tǒng),用于從實(shí)時(shí)的網(wǎng)絡(luò)流量或pcap文件中提取數(shù)據(jù)特征,其中數(shù)據(jù)特征包括數(shù)據(jù)包長(zhǎng)度、時(shí)間序列、字節(jié)分布以及原始數(shù)據(jù)包特征。Joy工具從實(shí)時(shí)網(wǎng)絡(luò)流量或pcap文件中提取特征后,會(huì)以JSON格式進(jìn)行輸出。為便于后續(xù)處理以及使用,需要將JSON格式數(shù)據(jù)轉(zhuǎn)換為CSV格式數(shù)據(jù),以便指定label數(shù)據(jù)作為數(shù)據(jù)的標(biāo)簽信息。
收集過(guò)程通過(guò)使用Selenium模擬用戶行為產(chǎn)生實(shí)時(shí)流量,并使用Wireshark和Tcpdump嗅探工具進(jìn)行原始網(wǎng)絡(luò)流量的采集并保存在本地。
采集的網(wǎng)絡(luò)流量數(shù)據(jù)為pcap文件,為了執(zhí)行后續(xù)操作識(shí)別,需要從網(wǎng)絡(luò)轉(zhuǎn)儲(chǔ)文件中提取出代表每種流量類型的特征組合。這些特征分為2個(gè)大類:靜態(tài)特征和動(dòng)態(tài)特征。靜態(tài)特征包含數(shù)據(jù)包長(zhǎng)度、達(dá)到時(shí)間間隔以及初始數(shù)據(jù)包特征等;動(dòng)態(tài)特征包括字節(jié)分布特征,字節(jié)分布是指一個(gè)特定字節(jié)出現(xiàn)在流中數(shù)據(jù)包的有效負(fù)載中的概率。本節(jié)預(yù)處理網(wǎng)絡(luò)流量主要利用靜態(tài)特征中的原始時(shí)間和空間相關(guān)特征表征流量。靜態(tài)特征的提取過(guò)程主要分為3個(gè)步驟,處理流程如圖1所示。
圖1 靜態(tài)特征提取流程Fig.1 Flow chart of static feature extraction
① 原始網(wǎng)絡(luò)流量數(shù)據(jù)為pcap數(shù)據(jù)包文件形式,其中包含了應(yīng)用層、傳輸層和網(wǎng)絡(luò)層等多個(gè)層的數(shù)據(jù)。首先需要根據(jù)五元組信息將原始流量初步劃分為不同的流,其中五元組信息包含源/目的IP地址、源/目的端口號(hào)和傳輸層協(xié)議。同時(shí),將每一條流的信息作為一條記錄保存,以便于后續(xù)的處理。
② 通過(guò)遍歷每一條原始流記錄,根據(jù)實(shí)驗(yàn)設(shè)置提取數(shù)據(jù)包的長(zhǎng)度序列,用于計(jì)算每個(gè)包到達(dá)時(shí)間間隔序列。對(duì)于原始包長(zhǎng)度和時(shí)間間隔,需要設(shè)置合適的參數(shù)將數(shù)值劃分為不同的區(qū)間,最后將表征流量的新特征序列保存。保存新特征序列的方式有2種:根據(jù)不同序列長(zhǎng)度分別保存數(shù)據(jù)和保存完整序列。后續(xù)可以根據(jù)不同的序列長(zhǎng)度進(jìn)行數(shù)據(jù)讀取。
③ 特征提取結(jié)束后,使用Joy開(kāi)源工具進(jìn)行特征的存儲(chǔ)。CSV文件是電子表格和數(shù)據(jù)庫(kù)最常見(jiàn)的數(shù)據(jù)導(dǎo)入和導(dǎo)出格式,便于后續(xù)模型的訓(xùn)練和數(shù)據(jù)的輸入,對(duì)其進(jìn)行指定label屬性作為標(biāo)簽存儲(chǔ)到CSV格式文件中,作為學(xué)習(xí)模型的輸入訓(xùn)練數(shù)據(jù)。
視頻流量預(yù)處理算法過(guò)程如算法1所示。
算法1:網(wǎng)絡(luò)流量預(yù)處2算法輸入:原始網(wǎng)絡(luò)流量pcap文件輸出:表征流量特征集合#根據(jù)五元組劃分不同網(wǎng)絡(luò)流Diff_stream = 原始網(wǎng)絡(luò)流量.groupby(源/目的IP地址,源/目的端口號(hào),傳輸層協(xié)議)While(Diff_stream != null)do get(Diff_stream.time series) 計(jì)算時(shí)間間隔序列 保存序列特征使用Joy工具保存提取特征文件并轉(zhuǎn)換為CSV文件return流量特征集合
分布外(Out-of-Distribution,OOD)數(shù)據(jù),對(duì)于深度學(xué)習(xí)模型訓(xùn)練使用的訓(xùn)練數(shù)據(jù),包含的數(shù)據(jù)類型全部為已知類型,即全部數(shù)據(jù)都存在已知標(biāo)簽進(jìn)行分類。模型投入使用后,測(cè)試數(shù)據(jù)中并不能保證全部數(shù)據(jù)均為有標(biāo)簽的已知類別,這些類別數(shù)據(jù)被稱為OOD數(shù)據(jù)類型。深度學(xué)習(xí)模型之所以會(huì)將這些未知數(shù)據(jù)錯(cuò)誤分類為已知類別,是因?yàn)槟承㎡OD數(shù)據(jù)與某一已知類別在特征上特別相似。根據(jù)這一特性,本文將通過(guò)對(duì)已知類別數(shù)據(jù)加入噪聲的方式模擬OOD數(shù)據(jù)進(jìn)而訓(xùn)練擾動(dòng)輔助模型提高分類結(jié)果的置信度。
本文使用高斯白噪聲作為構(gòu)造擾動(dòng)數(shù)據(jù)的方式。高斯白噪聲是一種概率分布為正態(tài)函數(shù),一階矩為常數(shù),幅度分布服從高斯分布的噪聲函數(shù)。高斯白噪聲可以通過(guò)改變參數(shù)從而小幅度地改變數(shù)據(jù)均值以及結(jié)構(gòu),是生成某些對(duì)抗樣本、添加噪聲的最優(yōu)方法之一。高斯白噪聲有2個(gè)參數(shù):均值μ和噪聲比θ。本文中,根據(jù)網(wǎng)絡(luò)流量的特征性質(zhì)將2個(gè)參數(shù)分別設(shè)置均值為0,噪聲比為0.02。一些點(diǎn)數(shù)據(jù)在加入了參數(shù)分別為0和0.02的高斯白噪聲的效果如圖2所示。
(a) 原始二維點(diǎn)數(shù)據(jù)
原始分類模型指的是使用已知類別網(wǎng)絡(luò)流量數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)訓(xùn)練出的模型。由于對(duì)網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行預(yù)處理后,表征流量的特征數(shù)據(jù)形式為序列數(shù)據(jù),且為多類別分類,因此原始模型訓(xùn)練將采用決策樹(shù)、隨機(jī)森林和LSTM等3種機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法,文獻(xiàn)[12-17]分別介紹了3種算法的具體實(shí)現(xiàn)。
決策樹(shù)是基于樹(shù)結(jié)構(gòu)進(jìn)行決策,每個(gè)內(nèi)部節(jié)點(diǎn)表示一個(gè)屬性判斷,每一個(gè)分支代表一個(gè)判斷結(jié)果的輸出,最后每個(gè)葉節(jié)點(diǎn)代表一個(gè)分類結(jié)果。從根節(jié)點(diǎn)到每個(gè)葉節(jié)點(diǎn)的路徑對(duì)應(yīng)了一個(gè)判定序列。決策樹(shù)算法的目的在于產(chǎn)生一顆泛化能力強(qiáng)的決策樹(shù),擁有處理未知實(shí)例的能力。
隨機(jī)森林是從決策樹(shù)演變而來(lái)的一種機(jī)器學(xué)習(xí)算法,將許多決策樹(shù)結(jié)合起來(lái)以提高分類的準(zhǔn)確率。隨機(jī)森林為集成學(xué)習(xí)算法之一,該集成學(xué)習(xí)方法基于以下思想:通過(guò)組合多個(gè)較弱的學(xué)習(xí)器,從而創(chuàng)建一個(gè)較強(qiáng)的學(xué)習(xí)器。該機(jī)器學(xué)習(xí)算法訓(xùn)練過(guò)程速度較快、實(shí)現(xiàn)簡(jiǎn)單、對(duì)于高維數(shù)據(jù)不需要降維操作,適用于執(zhí)行分類任務(wù)。
以上2個(gè)算法均為機(jī)器學(xué)習(xí)算法。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)新的研究方向,是一個(gè)更加復(fù)雜的機(jī)器學(xué)習(xí)算法,在序列、語(yǔ)音和圖像等數(shù)據(jù)識(shí)別分類方面取得的效果遠(yuǎn)遠(yuǎn)超過(guò)先前相關(guān)技術(shù)。因此本文將采用深度學(xué)習(xí)算法長(zhǎng)短期記憶(LSTM)訓(xùn)練分類模型。LSTM網(wǎng)絡(luò)是一種時(shí)間遞歸神經(jīng)網(wǎng)絡(luò),適合處理和預(yù)測(cè)時(shí)間序列中間隔和延遲相對(duì)較長(zhǎng)的數(shù)據(jù)。在LSTM網(wǎng)絡(luò)中,主要通過(guò)引入自循環(huán)和3個(gè)門控制信息的傳遞,分別為遺忘門、輸入門和輸出門。LSTM的網(wǎng)絡(luò)結(jié)構(gòu)較為復(fù)雜,門的狀態(tài)通常有3種:全開(kāi)(信息通過(guò)概率為1)、全閉(信息通過(guò)概率為0)以及半開(kāi)(信息通過(guò)概率0~1)。對(duì)于這3種門信息通過(guò)均用概率形式表示。一個(gè)信息進(jìn)入LSTM網(wǎng)絡(luò)當(dāng)中,需要根據(jù)規(guī)則來(lái)判斷是否有用,只有符合算法認(rèn)證的信息才能保存,不符的信息則會(huì)通過(guò)遺忘門被遺忘。LSTM神經(jīng)元在時(shí)間維度上向后傳遞了2種信息:?jiǎn)卧駹顟B(tài)(cell state)和隱藏狀態(tài)(hidden state)。隱藏狀態(tài)是單元格狀態(tài)經(jīng)過(guò)一個(gè)神經(jīng)元和一個(gè)輸出門之后得到的,即隱藏狀態(tài)包含的記憶實(shí)際上是單元格狀態(tài)衰減后的。因此,單元格狀態(tài)存儲(chǔ)的是長(zhǎng)期記憶,隱藏狀態(tài)存儲(chǔ)的是短期記憶。
在訓(xùn)練過(guò)程中,ct-1表示t-1時(shí)刻的cell state,ht-1表示t-1時(shí)刻的hidden state,xt表示t時(shí)刻的輸入,ft表示遺忘門,it表示輸入門,ot表示輸出門,根據(jù)數(shù)據(jù)的流向可以得到一個(gè)簡(jiǎn)單的計(jì)算流程:
① 利用t-1時(shí)刻的hidden state計(jì)算遺忘門ft的結(jié)果,ft=σ(Wfxt+Ufht-1+bf);
② 利用t-1時(shí)刻的hidden state計(jì)算輸入門it的結(jié)果,it=σ(Wixt+Uiht-1+bi);
③ 利用t-1時(shí)刻的hidden state計(jì)算候選值c′t的結(jié)果,c′t=σ(Wcxt+Ucht-1+bc);
④ 利用t-1時(shí)刻的hidden state計(jì)算輸出門ot的結(jié)果,ot=σ(Woxt+Uoht-1+bo);
⑤ 根據(jù)t時(shí)刻的cell state和t-1時(shí)刻的cell state、遺忘門、輸入門和候選值計(jì)算ct,ct=ft×ct-1+it×c′t。
W和U是模型中線性關(guān)系的參數(shù)矩陣,在整個(gè)LSTM網(wǎng)絡(luò)中是共享的;b為偏差;σ為激活函數(shù),這里的激活函數(shù)使用sigmoid函數(shù)。
與前饋神經(jīng)網(wǎng)絡(luò)相似,LSTM網(wǎng)絡(luò)的訓(xùn)練同樣采用誤差的反向傳播算法。因?yàn)長(zhǎng)STM網(wǎng)絡(luò)一般適用于處理序列數(shù)據(jù),而經(jīng)過(guò)預(yù)處理的流量數(shù)據(jù)形式為序列數(shù)據(jù),因此本文采用LSTM算法為主要模型訓(xùn)練算法。
對(duì)于網(wǎng)絡(luò)流量數(shù)據(jù),數(shù)據(jù)特征元素可以總結(jié)為2大類別:① 以背景統(tǒng)計(jì)數(shù)據(jù)作為特征提取主要來(lái)源,記作XB;② 以分布內(nèi)數(shù)據(jù)的某些特殊模式或語(yǔ)義作為特征提取主要來(lái)源,記作XP。每種數(shù)據(jù)結(jié)構(gòu)都同時(shí)存在這2大特征構(gòu)成,但所占比重不同,起到?jīng)Q定性作用的來(lái)源也不同。例如,對(duì)于圖片數(shù)據(jù),在選取圖片數(shù)據(jù)特征時(shí)幾乎都采用背景統(tǒng)計(jì)數(shù)據(jù)(background),因此在訓(xùn)練模型時(shí)往往需要龐大合理的數(shù)據(jù)集;對(duì)于文本數(shù)據(jù),其特征提取大部分取自文本中特殊的模式語(yǔ)義(pattern)。而對(duì)于流量數(shù)據(jù),往往需要對(duì)流量數(shù)據(jù)進(jìn)行預(yù)處理,預(yù)處理后的數(shù)據(jù)大部分轉(zhuǎn)換成為了向量的形式(也有轉(zhuǎn)換成為圖片格式,本文所做預(yù)處理將流量數(shù)據(jù)轉(zhuǎn)換成為向量形式)。向其加入高斯白噪聲僅僅改變了其特殊模式或語(yǔ)義特征,并未改變其背景統(tǒng)計(jì)數(shù)據(jù)特征,因此訓(xùn)練擾動(dòng)模型的目的在于放大數(shù)據(jù)特殊語(yǔ)義特征所占分類依據(jù)比例,從而得到更高的分類結(jié)果可信度。
擾動(dòng)模型的訓(xùn)練過(guò)程以及使用算法及參數(shù)與原模型訓(xùn)練過(guò)程中完全一致,唯一區(qū)別在于使用的訓(xùn)練數(shù)據(jù)不同。擾動(dòng)模型訓(xùn)練采用的訓(xùn)練數(shù)據(jù)為加入高斯白噪聲后的擾動(dòng)數(shù)據(jù)。
似然比[18](Likelihood,LR)是反映真實(shí)性的一種指標(biāo),也可反映二者之間的關(guān)聯(lián)程度。LR指標(biāo)反映出的關(guān)聯(lián)價(jià)值,相對(duì)獨(dú)立且非常穩(wěn)定,其計(jì)算僅僅涉及靈敏度和特異度,并不受到假陽(yáng)性率的影響。因此LR可以作為判定OOD數(shù)據(jù)的有效指標(biāo)。
對(duì)于網(wǎng)絡(luò)流量數(shù)據(jù),可以假設(shè)數(shù)據(jù)轉(zhuǎn)換成為了一個(gè)d-維向量x=x1,x2,…,xd,其中每一維的數(shù)據(jù)都來(lái)自于背景統(tǒng)計(jì)數(shù)據(jù)特征或語(yǔ)義特征,且這些特征相互獨(dú)立,那么樣本x的概率P(x)定義為:
P(x) =P(xB) ×P(xP)。
在訓(xùn)練生成模型時(shí),根據(jù)流量數(shù)據(jù)的向量特征表示,很難區(qū)分?jǐn)?shù)據(jù)背景特征和語(yǔ)義特征。由于加入高斯白噪聲后破壞了原有的語(yǔ)義特征而并未改變數(shù)據(jù)背景統(tǒng)計(jì)特征,因此假設(shè)2個(gè)模型所使用的的訓(xùn)練數(shù)據(jù)語(yǔ)義特征不同但背景統(tǒng)計(jì)特征大致相同,則會(huì)有以下定義和推導(dǎo):
假設(shè)使用原訓(xùn)練數(shù)據(jù)訓(xùn)練出的模型為A(·)(使用的原訓(xùn)練不包含異常樣例),使用擾動(dòng)數(shù)據(jù)訓(xùn)練出的模型為B(·),則樣本x的似然比LR(x)定義為:
上述公式中,由于實(shí)驗(yàn)中并未改變數(shù)據(jù)的背景統(tǒng)計(jì)特征,因此可以得到A(xB)≈B(xB),且模型A使用原數(shù)據(jù)訓(xùn)練得到,因此得到的分類分?jǐn)?shù)一定略高于使用加入擾動(dòng)的數(shù)據(jù)訓(xùn)練得到的模型B給出的分類分?jǐn)?shù),因此得到的LR將會(huì)是一個(gè)正數(shù),便于之后的計(jì)算和比較判斷。通過(guò)以上說(shuō)明,可以將上述公式改寫為:
式中,lbA(x)表示樣例x與分布內(nèi)數(shù)據(jù)的關(guān)聯(lián)性;lbB(x)表示樣例x與分布外數(shù)據(jù),即分布外數(shù)據(jù)的關(guān)聯(lián)程度。若樣例x為分布內(nèi)數(shù)據(jù),則與分布內(nèi)數(shù)據(jù)關(guān)聯(lián)性較強(qiáng),lbA(x)則偏大,反之亦然,lbB(x)就會(huì)偏小,則計(jì)算出的二者差值LR(x)就會(huì)偏大;以此類推可以得到,若x為分布外數(shù)據(jù),則計(jì)算出的LR(x)就會(huì)偏小。因此,根據(jù)差值并設(shè)置合理的閾值,就可以識(shí)別出分布外數(shù)據(jù)。
本文提出的OOD數(shù)據(jù)識(shí)別算法有以下幾個(gè)步驟:
① 提取流量指紋特征。利用流量指紋特征中的原始時(shí)間、空間相關(guān)特征表征流量。首先根據(jù)五元組信息劃分不同流,其次設(shè)置提取數(shù)據(jù)包長(zhǎng)度序列以及計(jì)算包到達(dá)時(shí)間間隔序列,并將表征流量的新特征序列保存起來(lái),最后生成CSV文件作為模型訓(xùn)練的輸入數(shù)據(jù)。
② 使用預(yù)處理的原始數(shù)據(jù)訓(xùn)練原始分類模型A。使用算法為決策樹(shù)、隨機(jī)森林和LSTM網(wǎng)絡(luò)。
③ 生成擾動(dòng)數(shù)據(jù)。擾動(dòng)數(shù)據(jù)用于模擬OOD數(shù)據(jù),通過(guò)利用加入高斯白噪聲的方法構(gòu)造擾動(dòng)數(shù)據(jù)。
④ 使用擾動(dòng)數(shù)據(jù)訓(xùn)練擾動(dòng)模型B。擾動(dòng)模型訓(xùn)練采用步驟③生成的擾動(dòng)數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),且訓(xùn)練過(guò)程、采用算法以及參數(shù)與步驟②訓(xùn)練原始分類模型一致。
⑤ 計(jì)算2個(gè)模型得到結(jié)果的LR,判斷OOD數(shù)據(jù)。
OOD數(shù)據(jù)識(shí)別流程如圖3所示。
圖3 OOD數(shù)據(jù)識(shí)別流程Fig.3 OOD data identification flow chart
OOD數(shù)據(jù)識(shí)別算法描述如算法2所示。
算法2:OOD識(shí)別算法輸入:原始網(wǎng)絡(luò)流量輸出:OOD數(shù)據(jù)(1)數(shù)據(jù)預(yù)處理使用算法1得到表征流量特征集合(2)OOD識(shí)別① 使用訓(xùn)練數(shù)據(jù)訓(xùn)練原始模型A② 對(duì)訓(xùn)練數(shù)據(jù)加入噪聲構(gòu)造擾動(dòng)數(shù)據(jù)③ 使用擾動(dòng)數(shù)據(jù)訓(xùn)練擾動(dòng)模型B④ fori in test_data:a = A(i)b = B(i)LR(i) =lb A(i) -lb B(i)ifLR(i) < threshold > is OOD⑤ end
為了驗(yàn)證該OOD識(shí)別方法的可行性,本文設(shè)計(jì)以下實(shí)驗(yàn)并進(jìn)行結(jié)果分析。將采用Moore數(shù)據(jù)集以及自行采集的流量數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù),其中Moore數(shù)據(jù)集中數(shù)據(jù)作為分布內(nèi)數(shù)據(jù)訓(xùn)練原始模型,將自行收集的數(shù)據(jù)以及加入噪聲后的Moore數(shù)據(jù)集作為分布外數(shù)據(jù),并作為測(cè)試數(shù)據(jù)測(cè)試模型性能,驗(yàn)證OOD數(shù)據(jù)的識(shí)別準(zhǔn)確率。
本文通過(guò)網(wǎng)絡(luò)嗅探工具采集不同類別網(wǎng)絡(luò)流量,具體類別以及數(shù)據(jù)包信息如表1所示。
表1 流量收集結(jié)果Tab.1 Traffic collection results
為了驗(yàn)證加密視頻流量識(shí)別方法的可行性,實(shí)驗(yàn)中使用3種評(píng)價(jià)指標(biāo):準(zhǔn)確率、F1值和AUC值。對(duì)于這些指標(biāo)通常由TP,F(xiàn)N,F(xiàn)P,TN構(gòu)成的混淆矩陣,如表2所示。
表2 混淆矩陣Tab.2 Confusion matrix
TP為將正類預(yù)測(cè)為正類數(shù),F(xiàn)N為將正類預(yù)測(cè)為負(fù)類數(shù),F(xiàn)P為將負(fù)類預(yù)測(cè)為正類數(shù),TN為將負(fù)類預(yù)測(cè)為負(fù)類數(shù)。根據(jù)它們可以計(jì)算其他評(píng)價(jià)指標(biāo)。
準(zhǔn)確率如下:
F1值是通過(guò)精準(zhǔn)率和召回率進(jìn)行計(jì)算:
AUC定義為ROC曲線下的面積,通常大于0.5小于1。隨機(jī)挑選一個(gè)正樣本以及一個(gè)負(fù)樣本,分類器判定正樣本的值高于負(fù)樣本的概率就是AUC值:
本文訓(xùn)練分類模型使用的決策樹(shù)、隨機(jī)森林以及LSTM網(wǎng)絡(luò)算法參數(shù)設(shè)置如表3和表4所示。
表3 LSTM算法參數(shù)表Tab.3 Parameters of LSTM algorithm
表4 決策樹(shù)算法參數(shù)表Tab.4 Parameters of decision tree algorithm
實(shí)驗(yàn)中,將實(shí)驗(yàn)數(shù)據(jù)隨機(jī)打亂后均分為10等份,其中9份作為訓(xùn)練數(shù)據(jù),1份作為測(cè)試數(shù)據(jù)。在測(cè)試過(guò)程中采用十折交叉驗(yàn)證方式 (Ten-fold Cross-validation)[19],即將數(shù)據(jù)集等分為10份后,輪流將其中9份作為訓(xùn)練數(shù)據(jù),1份作為測(cè)試數(shù)據(jù)進(jìn)行測(cè)試驗(yàn)證。每一次實(shí)驗(yàn)都會(huì)得到相應(yīng)的準(zhǔn)確率,最后將10次結(jié)果的正確率在計(jì)算平均值之后作為對(duì)算法精度的估計(jì)。本實(shí)驗(yàn)共通過(guò)3次十折交叉驗(yàn)證,最后求其均值作為最后的算法估計(jì)值。
實(shí)驗(yàn)1采用Moore數(shù)據(jù)集作為原始模型訓(xùn)練的訓(xùn)練數(shù)據(jù),對(duì)其進(jìn)行加噪處理后作為訓(xùn)練擾動(dòng)模型的訓(xùn)練數(shù)據(jù),測(cè)試數(shù)據(jù)采用Moore數(shù)據(jù)集和自行收集的網(wǎng)絡(luò)流量數(shù)據(jù),其中自行收集的數(shù)據(jù)作為需要被識(shí)別的分布外數(shù)據(jù);實(shí)驗(yàn)2采用自行收集的流量數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)訓(xùn)練原始模型,對(duì)這些數(shù)據(jù)進(jìn)行加噪處理后作為擾動(dòng)數(shù)據(jù)訓(xùn)練擾動(dòng)模型,測(cè)試數(shù)據(jù)采用自行收集的網(wǎng)絡(luò)流量,未進(jìn)行標(biāo)簽劃分的數(shù)據(jù)作為需要識(shí)別的分布外數(shù)據(jù)。實(shí)驗(yàn)1和實(shí)驗(yàn)2的結(jié)果如圖4所示。通過(guò)實(shí)驗(yàn)結(jié)果可以看出,對(duì)于3種算法,決策樹(shù)、隨機(jī)森林和LSTM神經(jīng)網(wǎng)絡(luò)算法的識(shí)別準(zhǔn)確率都可以達(dá)到92%以上,有效性高于目前部分識(shí)別方法,可精準(zhǔn)識(shí)別測(cè)試數(shù)據(jù)中OOD數(shù)據(jù)樣例。同時(shí),在這3種算法中,LSTM神經(jīng)網(wǎng)絡(luò)算法模型準(zhǔn)確率最高,識(shí)別精度可以達(dá)到95%以上,并能確保很小的假陽(yáng)率,減少誤報(bào)。
圖4 3種算法模型的指標(biāo)Fig.4 Indicators of the three algorithm models
本文提出了一種基于計(jì)算似然比的分布外網(wǎng)絡(luò)流量數(shù)據(jù)識(shí)別方法,解決深度學(xué)習(xí)模型分類結(jié)果不可信的問(wèn)題。通過(guò)對(duì)原始數(shù)據(jù)加入噪聲構(gòu)造擾動(dòng)數(shù)據(jù)模擬分布外數(shù)據(jù),并用此擾動(dòng)數(shù)據(jù)訓(xùn)練新的擾動(dòng)模型,利用2個(gè)模型得到結(jié)果的LR判別分布外數(shù)據(jù),提高單一模型分類結(jié)果的置信度。通過(guò)在Moore數(shù)據(jù)集以及自行收集的數(shù)據(jù)集上驗(yàn)證了該方法的性能,結(jié)果顯示在2個(gè)數(shù)據(jù)集上都取得了良好的識(shí)別效果,識(shí)別分布外數(shù)據(jù)的準(zhǔn)確率可以達(dá)到92%以上,有效的檢測(cè)分布外數(shù)據(jù)將會(huì)規(guī)避許多網(wǎng)絡(luò)安全問(wèn)題。