李毅聃,阮方鳴,陳潤澤
(貴州師范大學(xué)大數(shù)據(jù)與計算機科學(xué)學(xué)院,貴陽 550025)
隨著網(wǎng)絡(luò)通信技術(shù)的飛速發(fā)展,高吞吐量業(yè)務(wù)的需求大量增長,監(jiān)測網(wǎng)絡(luò)安全以及應(yīng)用程序的行為安全變得越來越困難。而網(wǎng)絡(luò)流量的準(zhǔn)確分類可以在很大程度上解決這一問題,并且對網(wǎng)絡(luò)流量進行分類的同時可以收集用戶使用應(yīng)用程序的需求和習(xí)慣,以便于提升用戶體驗以及優(yōu)化監(jiān)管系統(tǒng)。再加上其對于信息的采集可以進行流量需求預(yù)測,以及執(zhí)行流量工程或服務(wù)水平協(xié)議校準(zhǔn),這些原因使得網(wǎng)絡(luò)流量分類成為現(xiàn)代網(wǎng)絡(luò)空間安全領(lǐng)域的一個重要任務(wù),并且逐漸被互聯(lián)網(wǎng)服務(wù)提供商和網(wǎng)絡(luò)運營商所關(guān)注。
在流量分類這個問題上進行過的研究已經(jīng)十分豐富。最早使用的基于端口的流量分類方法,是通過流量數(shù)據(jù)包中的端口號來分類。這種方法在以前的網(wǎng)絡(luò)環(huán)境中是有效且便捷的,然而隨著隨機端口、端口偽裝和臨時端口等技術(shù)的產(chǎn)生,基于端口號的方法對加密流量分類的準(zhǔn)確率一直在下降。之后出現(xiàn)的深度包檢測技術(shù)(deep packet inspection,DPI),相比之前的方法能更深入讀取數(shù)據(jù)包的載荷,并通過分析七層協(xié)議中的應(yīng)用層信息,從而能夠識別各種協(xié)議及應(yīng)用。許多學(xué)者對該技術(shù)進行了研究,但由于深度包檢測技術(shù)無法解密與分析目前主流的加密流量,在目前的適用性已大大降低。近幾年較多研究集中在使用機器學(xué)習(xí)方法對流量進行分類,但傳統(tǒng)的機器學(xué)習(xí)方法十分依賴特征選擇,還需要人工提取特征,比較費時、費力,也容易出錯,再加上分類的準(zhǔn)確率并不高,因此目前關(guān)于流量分類的研究主要使用深度學(xué)習(xí)的方法。
據(jù)我們所知,Wang等人首先提出了基于深度學(xué)習(xí)的流量分類研究,作者提出了使用堆疊式自動編碼器(stacked auto encoder,SAE)對網(wǎng)絡(luò)流量進行分類。該文章實驗證明,相比于傳統(tǒng)的機器學(xué)習(xí)流量分類任務(wù),使用深度學(xué)習(xí)方法不需要人工進行特征的選擇,可以大大節(jié)省工作量。該文章作者還提出流量的每個字節(jié)可以看成是一個像素或一個單詞,這個思想在之后給了很多學(xué)者啟發(fā)。但是作者對該文章并沒有解釋細節(jié),也沒有說明具體的數(shù)據(jù)集。
之后Wang等人提出了一種基于一維卷積神經(jīng)網(wǎng)絡(luò)(1D-convolutional neural networks,1DCNN)的端到端加密流量分類方法,以及基于二維卷積神經(jīng)網(wǎng)絡(luò)的加密流量分類方法。在基于一維卷積神經(jīng)網(wǎng)絡(luò)的實驗中使用了端到端的方法,免去了特征抽取等工作,使實驗過程更加輕松。這兩篇文章沿用了之前文章的思想,即將流量的每個字節(jié)看成是一個像素,并取得了不錯的效果。在基于二維卷積神經(jīng)網(wǎng)絡(luò)的實驗中作者選取了每條數(shù)據(jù)流的前784個字節(jié),然后將其轉(zhuǎn)換為28×28大小的圖片輸入神經(jīng)網(wǎng)絡(luò)進行學(xué)習(xí)。實驗結(jié)果證明二維卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)二維空間特征的優(yōu)勢在進行一維加密流量分類時無法發(fā)揮,其分類性能相對低于一維卷積神經(jīng)網(wǎng)絡(luò)。
Lotfollahi等人提出一種叫深度包的基于深度學(xué)習(xí)的加密流量分類方法,開發(fā)了一個稱為深度包(DeepPacket)的框架,其中包含數(shù)據(jù)預(yù)處理和兩種深度學(xué)習(xí)方法。在數(shù)據(jù)預(yù)處理階段,文章作者刪除了域名服務(wù)(DNS)段,刪除了以太網(wǎng)頭,以及給用戶數(shù)據(jù)協(xié)議(UDP)的末尾添加0使其與傳輸控制協(xié)議(TCP)具有一樣的長度??蚣苤型瑫r使用了卷積神經(jīng)網(wǎng)絡(luò)和疊層自動編碼器兩種方法。最后得出相比疊層自動編碼器網(wǎng)絡(luò),1D-CNN能得到更好的分類結(jié)果。
本文提出了一種基于聚合殘差網(wǎng)絡(luò)的方法用于端到端加密流量的分類,其端到端的思想減少了工程任務(wù)的復(fù)雜度,也減少了各層網(wǎng)絡(luò)中誤差的積累。我們設(shè)計的ResNeXt-CNN網(wǎng)絡(luò)模型能同時發(fā)揮聚合殘差網(wǎng)絡(luò)和一維卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)勢,實現(xiàn)對加密流量的準(zhǔn)確分類。
本文使用Draper Gil等人的“ICSX VPNnonVPN”數(shù)據(jù)集進行實驗,該文章作者使用了Skype、Facebook等熱門軟件,并針對不同的流量類型(Streaming、Chat等)分別采集了常規(guī)流量和VPN加密傳輸流量的數(shù)據(jù)。文獻[4]證明了在原始流量被分割為離散單位后,在不同的流量表示類型中使用session(會話)比flow(流)的分類效果更好。其次證明了從協(xié)議層的選擇上來說,相比于只選擇應(yīng)用層的數(shù)據(jù)(TCP/IP模型的第4層或ISO/OSI模型的第7層),選擇所有協(xié)議層的數(shù)據(jù)分類的效果更好。綜上,本文選擇了ISCX數(shù)據(jù)集提供的6種常規(guī)流量和6種VPN加密流量,并選取其中所有協(xié)議層的數(shù)據(jù)和使用session的表示類型進行實驗,表1為本文實驗的數(shù)據(jù)集描述。
表1 數(shù)據(jù)集描述
在進行分類任務(wù)前,需要對原始數(shù)據(jù)預(yù)處理來獲得標(biāo)準(zhǔn)化數(shù)據(jù)。本文的數(shù)據(jù)預(yù)處理流程如圖1所示。
圖1 數(shù)據(jù)預(yù)處理流程
ISCX數(shù)據(jù)集是在數(shù)據(jù)鏈路層捕獲的pcapng格式文件,我們首先根據(jù)不同流量類型將其合并為12類,并轉(zhuǎn)換為pcap格式文件以便于分析和操作。通過分析該流量數(shù)據(jù)的pcap文件,可以得到每一條數(shù)據(jù)的結(jié)構(gòu)。我們刪除了數(shù)據(jù)集中存在的一些域名服務(wù)(DNS)段,它用來把域名(domain name)和其對應(yīng)的IP地址(IPaddress)進行轉(zhuǎn)換,也就是對主機名進行解析。但這些字段與流量特征無關(guān),也會占用其他有效信息的空間,因此我們將其從數(shù)據(jù)集中省略。之后我們刪去了以太網(wǎng)頭,因為其中包含的MAC(media access control address)地址以及Padding(填充)字段對于分類任務(wù)來說沒有意義,也會影響模型分類精度。
數(shù)據(jù)集中不同數(shù)據(jù)長度的占比,如表所示,長度在1500 B以下的數(shù)據(jù)占了97.7%,因此為了流量分類任務(wù)以及為了方便計算,我們把數(shù)據(jù)的截斷長度定為1521 B,對于長度大于1521 B的數(shù)據(jù)進行裁剪,對于長度小于1521 B的數(shù)據(jù)的末尾進行0填充。最后我們把每一條1521 B的數(shù)據(jù)轉(zhuǎn)換為39×39大小的流量矩陣,再打包為深度學(xué)習(xí)常用的IDX文件格式。
表2 不同長度數(shù)據(jù)占比
本文簡化并改進了Xie等人提出的聚合殘差轉(zhuǎn)換網(wǎng)絡(luò)(ResNeXt)模型以適應(yīng)加密流量分類的任務(wù)。該網(wǎng)絡(luò)同時采用了VGGNet的堆疊思想和分組卷積、特征聚合的思想,以及殘差網(wǎng)絡(luò)的跳接思想。該模型在提升準(zhǔn)確率的同時大大減少了需要設(shè)計的參數(shù)數(shù)量,提高了模型的泛化能力,還可以防止梯度消失問題。使用的聚合殘差模塊結(jié)構(gòu)如圖2所示。
圖2 聚合殘差模塊結(jié)構(gòu)
本文提出的基于聚合殘差的加密流量分類方法,以卷積神經(jīng)網(wǎng)絡(luò)的一維卷積層、池化層為基礎(chǔ),同時引入了ResNeXt網(wǎng)絡(luò)中簡化后的模塊作為基本的聚合殘差網(wǎng)絡(luò)塊構(gòu)建模型,對12類別的流量進行檢測。本文設(shè)計的模型ResNeXt-CNN的詳細參數(shù)見表3。在數(shù)據(jù)經(jīng)過預(yù)處理進入模型后,首先經(jīng)過一維卷積神經(jīng)網(wǎng)絡(luò)的卷積層進行卷積。為了減少輸出大小,降低網(wǎng)絡(luò)在訓(xùn)練和測試階段的計算成本,我們在卷積層后添加了一層最大池化層(max pool)。在經(jīng)過池化層的處理后,數(shù)據(jù)進入兩層聚合殘差模塊。為使用一維數(shù)據(jù)進行訓(xùn)練,在聚合殘差模塊中使用了1×3的卷積層。ResNeXt模塊中的計算可表示為:
表3 ResNeXt-CNN模型參數(shù)
式(1)中代表輸入,代表經(jīng)過一次聚合殘差塊后的輸出,代表基數(shù)(cardinality)即分支的數(shù)量,本文設(shè)置為3,T為相同的拓?fù)浣Y(jié)構(gòu)。數(shù)據(jù)在不同分支分別卷積后進行特征融合,再通過直接映射把低層的特征傳給高層,再次特征融合。
我們對每一個分支中的第一個1×1的卷積層和1×3的卷積層后都進行了一次批標(biāo)準(zhǔn)化(batch normalization)操作,然后經(jīng)由ReLU激活后傳給下一層。批標(biāo)準(zhǔn)化操作可以使模型的訓(xùn)練過程更有效的進行,加速平穩(wěn)收斂,這就允許我們使用更高的學(xué)習(xí)率,并且可以有效防止出現(xiàn)梯度消失或梯度爆炸問題。批標(biāo)準(zhǔn)化可形式化表示為:
上式中x是輸入,是輸出,是為了數(shù)值穩(wěn)定性添加的一個很小的常數(shù),和是需要學(xué)習(xí)的參數(shù)。(2)式和(3)式是計算出當(dāng)前batch中每個通道的均值和方差,(4)式是將輸入x進行標(biāo)準(zhǔn)化(normalize)得到輸出?,(5)式是將標(biāo)準(zhǔn)化后的數(shù)據(jù)再擴展和平移。需要學(xué)習(xí)的參數(shù)和的添加是為了讓神經(jīng)網(wǎng)絡(luò)自動學(xué)習(xí)和修改。
在經(jīng)過兩輪聚合殘差模塊、一層最大池化層后,輸出數(shù)據(jù)進入平鋪層重組為一維矢量然后饋入全連接層,最后使用Softmax函數(shù)進行分類。
本文實驗的配置如下:操作系統(tǒng)為Win?dows10家庭版,顯卡為NVIDIA GeForce GTX 1060,處理器為Intel Core i5-8300 H,內(nèi)存為16 G,并使用了Tensorflow框架以及keras庫。在實驗過程中選取了數(shù)據(jù)集的90%作為訓(xùn)練集,10%作為測試集進行測試。本文使用交叉熵作為損失函數(shù),使用自適應(yīng)矩估計(adaptive moment estimation,Adam)優(yōu)化器,學(xué)習(xí)率設(shè)置為0.0001。
我們使用準(zhǔn)確率(Accuracy),精確率(Preci?sion),召回率(Recall)和F1(F1-score)四個指標(biāo)來評估我們提出的模型和方法,它們在統(tǒng)計分類任務(wù)中被廣泛使用。上述指標(biāo)的計算公式如下:
準(zhǔn)確率代表了方法的整體效果,表示預(yù)測出的流量類別有多準(zhǔn)確,衡量的是識別系統(tǒng)的準(zhǔn)確性。召回率代表有多少正確的條目被識別,測量識別系統(tǒng)的召回率。1-則同時考慮了精確率和召回率,對識別精度進行綜合評價。在公式中的,,,分別代表如下意思:(true positive)代表屬于類,并被正確預(yù)測為類的樣本;(true negative)代表不屬于類,并被正確預(yù)測為不屬于類的樣本;(false positive)代表不屬于類,但被錯誤預(yù)測為類的樣本;(false negative)代表屬于類,但被錯誤預(yù)測為不屬于類的樣本。
為了對比實驗,本文使用了1D-CNN模型對同樣預(yù)處理后的數(shù)據(jù)進行分類。在實驗結(jié)果方面,本文將分別使用1D-CNN和ResNeXt-CNN的模型,與Zou等人提出的CNN+LSTM的模型,以及Lotfollahi等人提出的深度包中的SAE模型做對比。
由于在上述的SAE模型和CNN-LSTM模型中作者并沒有使用全部評價指標(biāo),因此在一些評價指標(biāo)上不做對比。從總體準(zhǔn)確率來看(見表4),本文使用的模型對“ICSX VPN-nonVPN”數(shù)據(jù)集具有更好的分類效果。之后本文分別根據(jù)精確率、召回率和1在三個模型中作出對比。
表4 方法準(zhǔn)確度對比
由圖3—圖5可知本文使用的ResNeXt-CNN模型在分類精確率、召回率和1分?jǐn)?shù)上相比另外兩種模型都有顯著的提升。從在分類的精確度上看,雖然在VPN_VoIP類別上使用本文方法識別的精確率略低于1D-CNN和SAE方法,在其他11種流量類型上識別的精確率均高于另外兩種方法,特別是在Chat、Email、Streaming、VoIP和VPN_Chat上,比1D-CNN模型分別提升了4%、16%、8%、5%和11%,比SAE模型分別提升了4%、2%、13%、35%和1%。
圖3 1D-CNN,SAE和ResNeXt-CNN的精確率對比
圖5 1D-CNN,SAE和ResNeXt-CNN的F1-score對比
在召回率方面,雖然在File transfer、P2P、VPN_Email和VPN_Streaming四種流量上都略低于1D-CNN和SAE方法,但只降低了1%~3%,而在Chat、VoIP和Streaming上的提升是明顯的,對比1D-CNN方法分別提升了27%、10%和3%,對比SAE方法分別提升了30%、8%和6%。
圖4 1D-CNN,SAE和ResNeXt-CNN的召回率對比
從1分?jǐn)?shù)上來看,對比1D-CNN和SAE模型,在Chat、Email、Streaming、VoIP和VPN_Chat這五類流量上的識別效果提升最大。本文模型相比1D-CNN和SAE模型,在Chat類上的1得分分別提升了17%和23%,在Email類上提升了11%和1%,在Streaming類上提升了6%和10%,在VoIP類上提升了7%和23%,在VPN_Chat類上提升了7%和4%。
在本文中,我們提出了一種基于聚合殘差網(wǎng)絡(luò)的加密流量分類方法,其發(fā)揮了ResNeXt模塊的提高準(zhǔn)確率、防止梯度消失等特點,并充分利用了一維卷積神經(jīng)網(wǎng)絡(luò)在處理一維序列數(shù)據(jù)時的優(yōu)勢,進一步提高了對加密流量識別的準(zhǔn)確率。在未來的工作中,我們將采集真實的互聯(lián)網(wǎng)流量作為模型的輸入數(shù)據(jù),并研究真實流量數(shù)據(jù)中報頭、協(xié)議和有效載荷部分的改變對深度學(xué)習(xí)模型性能的影響,同時繼續(xù)改進流量分類方法以適應(yīng)真實的互聯(lián)網(wǎng)環(huán)境。