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