基于深度學(xué)習(xí)的加密網(wǎng)絡(luò)流量識別方法研究

當(dāng)前對于加密網(wǎng)絡(luò)流識別的研究主要集中在機器學(xué)習(xí)相關(guān)的方法上。使用機器學(xué)習(xí)方法對網(wǎng)絡(luò)流量進行解析時,按使用的機器學(xué)習(xí)算法不同可以分為傳統(tǒng)機器學(xué)習(xí)算法(淺層學(xué)習(xí))和深度學(xué)習(xí)。

隨著大眾網(wǎng)絡(luò)安全意識的穩(wěn)步提升,對于數(shù)據(jù)保護的意識也愈加強烈。根據(jù)Google的報告,2019年10月,Chrome加載網(wǎng)頁中啟用加密的比例已經(jīng)達(dá)到了95%。對于特定類型的流量,加密甚至已成為法律的強制性要求,加密在保護隱私的同時也給網(wǎng)絡(luò)安全帶來了新的隱患。攻擊者將加密作為隱藏活動的工具,加密流量給攻擊者隱藏其命令與控制活動提供了可乘之機。在面臨日益嚴(yán)重的網(wǎng)絡(luò)安全威脅和攻擊時,需要提出有效的識別方法。實現(xiàn)加密流量精細(xì)化管理,保障計算機和終端設(shè)備安全運行,維護健康綠色的網(wǎng)絡(luò)環(huán)境。

01、相關(guān)研究

當(dāng)前對于加密網(wǎng)絡(luò)流識別的研究主要集中在機器學(xué)習(xí)相關(guān)的方法上。使用機器學(xué)習(xí)方法對網(wǎng)絡(luò)流量進行解析時,按使用的機器學(xué)習(xí)算法不同可以分為傳統(tǒng)機器學(xué)習(xí)算法(淺層學(xué)習(xí))和深度學(xué)習(xí)。傳統(tǒng)機器學(xué)習(xí)算法對加密網(wǎng)絡(luò)流量解析主要存在兩個問題:一個是需要對待分類的報文人工設(shè)計一個可以普遍反映流量特征的特征集;另一個就是傳統(tǒng)機器學(xué)習(xí)方法有很大的局限性,例如對復(fù)雜函數(shù)難以表示、容易陷入局部最優(yōu)解等。

由于以上兩個原因,導(dǎo)致傳統(tǒng)機器學(xué)習(xí)方法對加密網(wǎng)絡(luò)流量解析的準(zhǔn)確率不是很高。隨著計算方法的發(fā)展和計算能力的提高,深度學(xué)習(xí)的引入可以有效解決機器學(xué)習(xí)設(shè)計特征的問題。深度學(xué)習(xí)通過特征學(xué)習(xí)和分層特征提取的方法來替代手工獲取特征。深度神經(jīng)網(wǎng)絡(luò)擁有很高的擬合能力,可以逼近許多復(fù)雜的函數(shù),不易陷入局部最優(yōu)解。解決了傳統(tǒng)機器學(xué)習(xí)在加密網(wǎng)絡(luò)流量解析時存在的兩個關(guān)鍵問題。

深度學(xué)習(xí)是基于表示學(xué)習(xí)的眾多機器學(xué)習(xí)算法中的一員。目前使用最多的深度學(xué)習(xí)方法包括DBN(Deep Belief Nets)、CNN(Convolutional Neural Networks)、深度自編碼器(AutoEncoder,AE)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)以及基于RNN的長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM),近年來這些方法被廣泛地應(yīng)用在加密流量解析中,并取得了不錯的成果。王偉等人提出一種基于CNN的異常流量檢測方法,該方法利用CNN特征學(xué)習(xí)能力,準(zhǔn)確地對流量的特征進行提取,將提取到的特征用于流量分類并取得了良好的結(jié)果,最終將該模型用于異常流量檢測。

J.Ran等人提出了一種將三維卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于無線網(wǎng)絡(luò)流量分類的方法,實驗結(jié)果表明該方法優(yōu)于一維和二維卷積神經(jīng)網(wǎng)絡(luò)。Jain研究了由不同優(yōu)化器訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)對協(xié)議識別的影響,實驗結(jié)果表明,隨機梯度下降(Stochastic Gradient Descent,SGD)優(yōu)化器產(chǎn)生的識別效果最好。陳雪嬌等利用卷積神經(jīng)網(wǎng)絡(luò)的識別準(zhǔn)確率高和自主進行特征選擇的優(yōu)勢,將其應(yīng)用于加密流量的識別,測試結(jié)果表明該方法優(yōu)于DPI方法。

王勇等設(shè)計了基于LeNet-5深度卷積神經(jīng)網(wǎng)絡(luò)的分類方法,通過不斷調(diào)整參數(shù)產(chǎn)生最優(yōu)分類模型,測試結(jié)果表明該方法優(yōu)于主成分分析、稀疏隨機映射等方法。Wu,Kehe等人將網(wǎng)絡(luò)流量數(shù)據(jù)的121個流統(tǒng)計特征作為數(shù)據(jù)集,并對比了一維和二維CNN網(wǎng)絡(luò)、CNN網(wǎng)絡(luò)與傳統(tǒng)機器學(xué)習(xí)算法、CNN網(wǎng)絡(luò)與RNN網(wǎng)絡(luò)的分類準(zhǔn)確性與計算量。

J.Ren等提出了一種針對無線通信網(wǎng)絡(luò)的協(xié)議識別方法,首先利用一維卷積神經(jīng)網(wǎng)絡(luò)進行自動化的特征提取,然后基于SVM對應(yīng)用層協(xié)議進行分類。H.Lim等提出了使用深度學(xué)習(xí)的基于數(shù)據(jù)包的網(wǎng)絡(luò)流量分類,該方法提取網(wǎng)絡(luò)會話中的前幾個數(shù)據(jù)包處理成等長的向量,然后利用CNN和ResNet進行訓(xùn)練,進行流量分類。

在以往的基于深度學(xué)習(xí)的加密網(wǎng)絡(luò)流量解析研究中,數(shù)據(jù)預(yù)處理都是只針對原始的網(wǎng)絡(luò)流量數(shù)據(jù)進行變換處理,而忽略了數(shù)據(jù)包在傳輸過程中的時間特征。因此,在本研究中,將對加密網(wǎng)絡(luò)流量中的原始報文數(shù)據(jù)及數(shù)據(jù)包傳輸時間間隔進行綜合預(yù)處理,并采用CNN網(wǎng)絡(luò)模型進行實驗驗證。

02、基于CNN的加密網(wǎng)絡(luò)流量識別方法

本節(jié)將從流量采集、數(shù)據(jù)預(yù)處理、加密網(wǎng)絡(luò)流量識別模型等環(huán)節(jié)詳細(xì)介紹本文提出的基于深度學(xué)習(xí)的加密網(wǎng)絡(luò)流量解析方法。

2.1流量采集

為了獲得更加接近實際使用場景下的網(wǎng)絡(luò)流量,我們在手機終端安裝了代理軟件,采集日常真實使用環(huán)境下的應(yīng)用網(wǎng)絡(luò)流量,并按照應(yīng)用名稱分別保存為不同的文件,共計14類,16.81GB。

2.2數(shù)據(jù)預(yù)處理

采集的網(wǎng)絡(luò)流量存儲為Pcap格式的文件,該格式的文件除了流量數(shù)據(jù)外,還有該文件協(xié)議額外添加的其他信息,而這些信息有可能干擾分類結(jié)果。因此需要對該文件的格式進行解析,提取出有用的數(shù)據(jù)部分。

2.2.1 Pcap格式介紹

Pcap文件格式如圖1所示,最開始的24個字節(jié)為文件頭(Global Header),后面是抓取的包頭(Packet Header)和包數(shù)據(jù)(Packet Data)。此處的包頭為Pcap文件格式的固定部分,描述了后面緊跟著的包數(shù)據(jù)的捕獲時間、捕獲長度等信息,原始網(wǎng)絡(luò)數(shù)據(jù)流量中不包含此部分信息。包數(shù)據(jù)為數(shù)據(jù)鏈路層到應(yīng)用層的所有數(shù)據(jù),包括每一層的包頭。

2345截圖20200908083720.png

圖1 Pcap文件格式

圖2描述了Global Header的具體內(nèi)容以及每部分的長度。

2345截圖20200908083720.png

圖2 Global Header格式

每個字段的含義如下:

(1)Magic:4Byte,標(biāo)記文件開始,并用來識別文件自己和字節(jié)順序。0xa1b2c3d4用來表示按照原來的順序讀取,0xd4c3b2a1表示下面的字節(jié)都要交換順序讀取。考慮到計算機內(nèi)存的存儲結(jié)構(gòu),一般會采用0xd4c3b2a1,即所有字節(jié)都需要交換順序讀取。

(2)Major:2Byte,當(dāng)前文件主要的版本號。

(3)Minor:2Byte,當(dāng)前文件次要的版本號。

(4)ThisZone:4Byte,當(dāng)?shù)氐臉?biāo)準(zhǔn)時間。

(5)SigFigs:4Byte,時間戳的精度。

(6)SnapLen:4Byte,最大的存儲長度。

(7)LinkType:4Byte,數(shù)據(jù)鏈路類型。

圖3描述了Packet Header的具體內(nèi)容以及每部分的長度。

2345截圖20200908083720.png

圖3 Packet Header格式

每個字段的含義如下:

(1)Timestamp:捕獲時間的高位,單位為秒。

(2)Timestamp:捕獲時間的低位,單位為微秒。

(3)Caplen:當(dāng)前數(shù)據(jù)區(qū)的長度,單位為字節(jié)。

(4)Len:離線數(shù)據(jù)長度,網(wǎng)絡(luò)中實際數(shù)據(jù)幀的長度。

2.2.2預(yù)處理方法

通過圖3對Pcap文件格式的介紹,我們發(fā)現(xiàn),Pcap文件中除了原始流量數(shù)據(jù)之外還有Global Header和Packet Header這兩部分原始數(shù)據(jù)流量中不存在的部分。因此,在接下來的數(shù)據(jù)處理環(huán)節(jié)中,我們將剔除這部分?jǐn)?shù)據(jù)或者對這部分?jǐn)?shù)據(jù)進行轉(zhuǎn)換。預(yù)處理流程如下:

首先對采集到的Pcap文件按協(xié)議進行過濾,提取出經(jīng)過加密的網(wǎng)絡(luò)流量,然后對提取出的流量按五元組進行劃分。劃分出來的每一個文件將在后續(xù)流程中轉(zhuǎn)化為一張圖片。對劃分出來的每一個Pcap文件做如下處理。

2345截圖20200908083720.png

圖4每種應(yīng)用的對應(yīng)的圖片數(shù)量

設(shè)最后返回的字節(jié)數(shù)組為A,需要的長度為LEN。

(1)首先忽略前24個字節(jié)。

(2)然后讀取16個字節(jié)的Packet Header,將其中的時間轉(zhuǎn)換為整數(shù),利用其中的捕獲長度讀取Packet data,忽略掉數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層的包頭,將傳輸層的包頭和payload加入字節(jié)數(shù)組A。

(3)如果不是第一個數(shù)據(jù)包,則利用本數(shù)據(jù)包的捕獲時間減去上一個數(shù)據(jù)包的捕獲時間,得到時間差Δt,利用本數(shù)據(jù)包的捕獲長度L除以Δt,向上取整得到N,向字節(jié)數(shù)組A中加入N個0xFF字節(jié)。

(4)重復(fù)(2)(3)直到文件尾,或者A的長度大于等于LEN。

(5)若讀取到文件尾之前,A的長度大于等于LEN,則截斷到LEN返回;若讀到文件尾,A的長度仍小于LEN,則在末尾填充0x00直到長度為LEN。

(6)將A數(shù)組轉(zhuǎn)化為長、寬相同的單通道灰度圖片。

最終將生成好的圖片存儲為TFRecoder格式,以便于后面的實驗驗證。預(yù)處理后每種應(yīng)用得到的圖片數(shù)目如圖4所示。

2.3加密網(wǎng)絡(luò)流量識別模型

本文采用了二維CNN模型進行流量分類,為了對比不同輸入對實驗結(jié)果的影響,分別嘗試了圖片長寬為32、40、48、56、64,其中當(dāng)長寬為32時效果最佳。下面介紹本文最終采用的CNN模型。

在卷積神經(jīng)網(wǎng)絡(luò)中,大尺寸的卷積核可以帶來更大的感受視野,獲取更多的信息,但也會產(chǎn)生更多的參數(shù),從而增加網(wǎng)絡(luò)的復(fù)雜度。為了減少模型的參數(shù),本文采用兩個連續(xù)的3*3卷積層來代替單個的5*5卷積層,可以在保持感受視野范圍的同時減少參數(shù)量。卷積層的Padding方式使用SAME方式,激活函數(shù)使用RELU,每一層的參數(shù)如表1所示。

表1網(wǎng)絡(luò)模型參數(shù)

2345截圖20200908083720.png

03、實驗與結(jié)果分析

為了對上述加密網(wǎng)絡(luò)流量識別模型進行驗證,采用TensorFlow深度學(xué)習(xí)框架,在NVIDIA TESLA K80上進行了實驗驗證。

3.1評價指標(biāo)

本文采用準(zhǔn)確率(accuracy)、精準(zhǔn)率(precision)、召回率(recall)和F1-Measure值(以下簡稱F1值)四個評價指標(biāo)來對實驗結(jié)果進行評估,其中準(zhǔn)確率是對整體的評價指標(biāo),精準(zhǔn)率和召回率是用來對某種類別流量識別的評價指標(biāo),而F1值是對于精準(zhǔn)率和召回率兩個指標(biāo)的綜合評估。為了計算這四個指標(biāo),需要引入TP、FP、FN、TN四個參數(shù),每個參數(shù)的意義如表2混淆矩陣所示。

表2混淆矩陣

2345截圖20200908083720.png

每個指標(biāo)的計算方法如公式(1)~(4)所示。

2345截圖20200908083720.png

3.2實驗結(jié)果

將處理好的數(shù)據(jù)按4:1的比例分為訓(xùn)練集和測試集,由于采集的數(shù)據(jù)不均衡,因此在訓(xùn)練時對訓(xùn)練數(shù)據(jù)采用過采樣的方法來縮小數(shù)據(jù)量之間的差異。采用了Adam優(yōu)化器和動態(tài)學(xué)習(xí)率來提高模型的訓(xùn)練速度。最終訓(xùn)練好的模型在測試集上的結(jié)果如表3所示。

表3測試集結(jié)果

2345截圖20200908083720.png

為了驗證在預(yù)處理階段引入時間間隔對模型準(zhǔn)確率的影響,還做了一組對比實驗。對比實驗在預(yù)處理階段不對時間間隔做特殊處理,直接舍棄該字段,最終結(jié)果如表4所示??梢钥闯觯脮r間間隔可以有效提高分類結(jié)果的準(zhǔn)確率。

表4不同預(yù)處理方式對應(yīng)的實驗結(jié)果

2345截圖20200908083720.png

04、結(jié)語

本文提出了一種基于深度學(xué)習(xí)的加密網(wǎng)絡(luò)流量識別方法,該方法對采集到的流量進行預(yù)處理,利用傳輸層數(shù)據(jù)及數(shù)據(jù)包之間的時間間隔,將時間間隔轉(zhuǎn)換為二進制數(shù)據(jù)中的特殊值,然后將解析后的數(shù)據(jù)轉(zhuǎn)換為灰度圖片,采用卷積神經(jīng)網(wǎng)絡(luò)對采集到的14類應(yīng)用的加密流量進行分類,最終識別準(zhǔn)確率為96.22%,可以滿足實際應(yīng)用。后續(xù)研究將關(guān)注流量類型的甄別,即對每種應(yīng)用流量中不同類型的流量進行識別,如視頻流量、文本流量、圖片流量等,進一步挖掘用戶行為。

THEEND

最新評論(評論僅代表用戶觀點)

更多
信Qnb8169
信Qnb8169
博主您好,請問是否方便分享文章中的數(shù)據(jù)集與代碼呢?謝謝~
回復(fù)