李 睿,丁要軍
(甘肅政法大學(xué),甘肅 蘭州 730070)
加密流量分類近年來已成為一個非常受歡迎的研究方向,因為它被應(yīng)用于評估應(yīng)用服務(wù)質(zhì)量(Quality of Service,QoS)、流量工程、惡意軟件檢測等領(lǐng)域。然而,由于互聯(lián)網(wǎng)流量加密需求的增長,以及虛擬專用網(wǎng)絡(luò)(Virtual Private Network,VPN)和洋蔥路由(The Onion Router,TOR)使用的增加(這時用戶可以在互聯(lián)網(wǎng)上進行匿名交流),因此加密流量分類變得更加困難。在進行流量分類時,類別不平衡是個嚴(yán)重的問題。解決數(shù)據(jù)類不平衡[1]問題有欠采樣和過采樣、人工少數(shù)類過采樣法(Synthetic Minority Over-Sampling Technique,SMOTE)[2]、生成模型3 種方法。其中,生成模型可以增加訓(xùn)練的數(shù)據(jù)量從而提高模型的泛化能力,還可以增加噪聲數(shù)據(jù),提高模型的魯棒性。隨著機器學(xué)習(xí)進一步發(fā)展,Goodfellow 等人[3]引入了生成模型領(lǐng)域的一個新概念,即生成對抗網(wǎng)絡(luò)(Generative Ad-versarial Networks,GAN)。GAN 廣泛應(yīng)用于圖像生成[4-5],同時也為解決數(shù)據(jù)不平衡提供了新的方法,但原始GAN 本身存在訓(xùn)練困難和模式崩潰的問題。為了解決這些問題,Arjovsky 等人[6]提出了將Wasserstein 距離作為損失函數(shù)的WGAN 方法;Radford 等人[7]提出了深度卷積生成對抗網(wǎng)絡(luò)(Deep Convolutional Generative Adversarial Networks,DCGAN),引入了卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[8]替代原來的多層感知機;Deng 等人[9]引入了基于DCGAN 的半監(jiān)督方法,解決了與建立大型加密流量數(shù)據(jù)集的實況標(biāo)簽相關(guān)的挑戰(zhàn),他們的方法在極少數(shù)標(biāo)記樣本的情況下,實現(xiàn)了較高的準(zhǔn)確度。這些研究表明,DCGAN 作為一種解決數(shù)據(jù)類不平衡的方法對于分類問題而言是個不錯的選擇。
本文基于王偉[10]提出的將原始流量解析出來的pcap 數(shù)據(jù)包預(yù)處理成字節(jié)流灰度圖的方法和Shapira等人[11]提出的將原始流量數(shù)據(jù)處理成包特征灰度圖的方法,使用DCGAN 模型來進行數(shù)據(jù)增強,最后使用經(jīng)典深度模型作為分類器進行驗證。為驗證方法可行性,針對公開數(shù)據(jù)集ISCX VPN-nonVPN[12],分別使用SMOTE、GAN、WGAN 和DCGAN 方法對數(shù)據(jù)集進行平衡并分類。實驗證明,基于深度模型的加密流量分類器在使用DCGAN 進行數(shù)據(jù)平衡后的性能,相較于未平衡、傳統(tǒng)數(shù)據(jù)增強和DCGAN 只增強訓(xùn)練集的方法,能夠獲得更好的分類效果。
生成對抗網(wǎng)絡(luò)GAN 是GoodFellow 等人[3]開發(fā)的新的人工神經(jīng)網(wǎng)絡(luò),該模型由生成器G和判別器D兩個神經(jīng)網(wǎng)絡(luò)組成。將這些神經(jīng)網(wǎng)絡(luò)在對抗性環(huán)境中進行了訓(xùn)練,GAN 通過多輪零和博弈后,生成器和判別器的性能不斷提升,最后趨于平衡。對于生成模型,要最小化目標(biāo)函數(shù)ln(1-D(G(z)))(z為噪聲),D(G(z))的值越接近于1,目標(biāo)函數(shù)的值越小。對于判別模型,要讓真實樣本盡量被判定為真實的,即最大化lnD(x),這意味著D(x)的值盡量接近于1;對于生成模型生成的樣本,盡量被判別為0,即最大化ln(-D(G(z)))。這樣優(yōu)化的目標(biāo)函數(shù)定義為:
式中:Pdata為真實的原始數(shù)據(jù)集;Pz為噪聲分布。兩部分相加要最大化,找一個最好的G,讓這個最大值最小,兩個分布之間的差異最小值表示為:
由式(1),可以計算出最佳鑒別器為:
由式(3)可得,當(dāng)Pdata(x)=Pz(z)時,說明D無法分辨樣本的真假,D和G達到納什均衡[13],鑒別器輸出為0.5。
如圖1 所示,DCGAN 是CNN 和GAN 的結(jié)合,將卷積網(wǎng)絡(luò)引入生成模型,代替了GAN 的生成器和判別器并進行無監(jiān)督訓(xùn)練。該模型利用卷積網(wǎng)絡(luò)強大的特征提取能力,提高了生成網(wǎng)絡(luò)的學(xué)習(xí)效果。
圖1 DCGAN 結(jié)構(gòu)
DCGAN 對生成器的判別的修改核心如下:
(1)使用指定步長的卷積層代替池化層。使用轉(zhuǎn)置卷積層替代空間池化層,這種替代只需要將卷積的步長設(shè)置為大于1 的數(shù)值,G網(wǎng)絡(luò)中使用轉(zhuǎn)置卷積進行上采樣,改進的意義是下采樣過程不再是固定地拋棄某些位置的像素值,而是可以讓網(wǎng)絡(luò)自己去學(xué)習(xí)下采樣方式。
(2)生成器和判別器中都使用批歸一化(Batch Normalization,BN)層。它是一種常用于卷積層后面的歸一化方法,能夠幫助網(wǎng)絡(luò)進行收斂。
(3)移除全連接層。全局均值池化有助于模型的穩(wěn)定性,但是降低了模型的收斂速度。
(4)生成器中除了輸出層采用tanh,其余全部使用ReLU 作為激活函數(shù)。
(5)判別器所有層都使用LeakyReLU 作為激活函數(shù)。
DCGAN 模型的損失函數(shù)為:
式中:m為樣本個數(shù)。
為了驗證方法可行性,引入JS 和KL 散度[5],可得:
式中:C(G)為生成器的積分表達式。
根據(jù)散度定義可知,當(dāng)噪聲樣本Pz(z)的數(shù)學(xué)分布等于真實數(shù)據(jù)分布時,KL=JS=0 時,G網(wǎng)絡(luò)的最小值都是-lg 4。同理可得JS 散度為2JS(Pdata||Pg)-lg 4。式中:Pg為噪聲分布。
由此可以證明,在判別器取最佳參數(shù)后,生成器也可以無限接近于最小值。這證明了在目標(biāo)函數(shù)的限制條件下,可以達到納什平衡,因此DCGAN用于數(shù)據(jù)增強的方法是可行的。
二維包特征灰度圖是為了增加訓(xùn)練集的樣本數(shù)量,減少過擬合,將每個單向流劃分為相等大小的塊,然后從每個流中提取記錄,其中包含流中每個數(shù)據(jù)包的對、數(shù)據(jù)包大小和數(shù)據(jù)包到達時間的列表。然后,將相同流量類別和相同加密技術(shù)的所有列表合并為一個集合,并構(gòu)建一個基于流的二維直方圖構(gòu)建的圖像。該圖像可以被視為一組有效載荷大小分布(Packet Size Distribution,PSD)[14],其中每個PSD 屬于特定時間單向流的間隔。將X軸定義為數(shù)據(jù)包到達時間,將Y軸定義為數(shù)據(jù)包大小來繪制所有記錄對。絕大多數(shù)數(shù)據(jù)包大小不超過1 500 字節(jié),即以太網(wǎng)最大傳輸單元(Maximum Transmission Unit,MTU)值,因此忽略所有大小大于1 500(小于所有數(shù)據(jù)包的5%)的數(shù)據(jù)包,并將Y軸限制在1 到1 500 之間。對于X軸,首先,通過減去流中第一個數(shù)據(jù)包的到達時間來標(biāo)準(zhǔn)化所有到達時間值;其次,將所有歸一化對插入二維直方圖,其中每個單元保存在具有相同時間間隔并具有相同大小的數(shù)據(jù)包中。這個過程的結(jié)果是一個1 500×1 500的直方圖,其中直方圖中的值之和等于原始時間窗口中的數(shù)據(jù)包總數(shù)(不包括忽略的數(shù)據(jù)包)。
二維字節(jié)流灰度圖的生成流程如圖2 所示,具體的,先將獲取的原始流量數(shù)據(jù)切分為多個流量數(shù)據(jù),輸入格式為pcap;然后將每個數(shù)據(jù)包的有效載荷轉(zhuǎn)化為規(guī)范化的字節(jié)序列,清理過的文件按照784 字節(jié)進行統(tǒng)一長度處理,少數(shù)小于784 字節(jié)的文件在后面補充0x00,選取784 字節(jié)是因為CNN模型的輸入需要統(tǒng)一長度。這樣做是因為流或者會話的前面部分一般都是用來建立連接和保留前一部分?jǐn)?shù)據(jù)包的,應(yīng)該更能反映流量特征,而之后的部分更多的是數(shù)據(jù),并不能更好地體現(xiàn)流量類型特征。最后將統(tǒng)一長度后的文件按照二進制形式轉(zhuǎn)換為灰度圖片,即一個字節(jié)對應(yīng)灰度像素值,例如0x00對應(yīng)黑色,0xff 對應(yīng)白色,輸出格式為png 格式。由于僅僅使用了會話或者流的前面幾百個字節(jié),因此該方法比很多基于經(jīng)典機器學(xué)習(xí)的流量分類方法更加輕量。
圖2 二維字節(jié)流灰度圖生成流程
用DCGAN 對抗生成的流量圖片都是具有真實圖像特征且多樣性較強的擴充數(shù)據(jù),利用這些增強后的數(shù)據(jù)對原始不平衡數(shù)據(jù)進行數(shù)據(jù)擴充不僅能有效平衡數(shù)據(jù)集,而且還能防止數(shù)據(jù)樣本單一、訓(xùn)練模型容易過擬合等問題的出現(xiàn)。DCGAN 加密流量分類流程如圖3 所示。
圖3 DCGAN 加密流量分類流程
判別網(wǎng)絡(luò)接收圖像時,DCGAN 使用卷積層和池化層對其進行下采樣,然后使用全連接分類層將圖像分類為真的或假的。生成網(wǎng)絡(luò)從潛在空間中獲取隨機噪聲向量,然后通過上采樣機制進行上采樣,最后生成一張圖像。隱藏層使用LeakyReLU 作為激活函數(shù),并且使用系數(shù)介于0.4~0.7 的隨機失活來避免過擬合,根據(jù)給出的DCGAN 網(wǎng)絡(luò)結(jié)構(gòu)模型,DCGAN 偽代碼如下:
平衡完成的數(shù)據(jù)和原始流量圖片高度相關(guān)而且具有多樣性。圖4 是基于包特征灰度圖生成的圖片進行平衡的結(jié)果,圖5 是基于字節(jié)流灰度圖生成的圖片進行平衡的結(jié)果,可以看出利用此方法可以生成能夠明確分辨的新圖像,且具有一定的多樣性。
圖4 包特征灰度圖基于DCGAN 方法生成的圖像
圖5 字節(jié)流灰度圖基于DCGAN 方法生成的圖像
為證明所提方法的可行性,使用常見的CNN模型[8]完成分類任務(wù),旨在驗證不平衡數(shù)據(jù)實現(xiàn)平衡對模型的影響,不考慮模型內(nèi)部的參數(shù)變化對結(jié)果的影響,所以這里不對模型做深入討論,只介紹模型結(jié)構(gòu)。
分類器用的是LeNet-5[15]的CNN 結(jié)構(gòu),因為數(shù)據(jù)量比較少而且圖片大小較小,在模型訓(xùn)練過程,輸入28×28 灰度圖像,利用Softmax 函數(shù)輸出各類別的概率。如果用復(fù)雜的分類器例如ResNet、VGG等,則容易造成過擬合的現(xiàn)象。LeNet-5 的損失函數(shù)采用了均方誤差(Mean-square Error,MSE),并添加了一個懲罰項[16],計算公式為:
網(wǎng)絡(luò)在前向傳播結(jié)束后,會進行反向傳播來更新參數(shù),更新的方法是梯度下降。梯度下降,就是讓參數(shù)向最小化損失函數(shù)的方向移動。在加密流量分類時,訓(xùn)練輪次2 000 次以上時,損失函數(shù)趨于最小值并達到穩(wěn)定。學(xué)習(xí)率和損失函數(shù)選擇經(jīng)典網(wǎng)絡(luò)初始設(shè)定的參數(shù),批量大小選取64 是因為圖形處理器(Graphic Processing Unit,GPU)對批量大小為2 的冪次可以發(fā)揮更好的性能。CNN 模型參數(shù)如表1 所示。
表1 CNN 模型參數(shù)
為了驗證平衡方法的可行性、差異性,設(shè)計了4 組對比實驗。本節(jié)介紹實驗?zāi)P偷膮?shù)設(shè)置、實驗平臺等信息,并針對未增強的數(shù)據(jù)集,以及使用SMOTE、GAN、WGAN 和DCGAN 對數(shù)據(jù)集進行平衡并分類的方法進行了對比實驗。然后針對這4 種實驗結(jié)果進行分析對比。
使用來自紐布倫斯威克大學(xué)捕獲的pcap 文件的標(biāo)記數(shù)據(jù)集,ISCX VPN-nonVPN 流量數(shù)據(jù)集[12]。對于數(shù)據(jù)集中包含的類別,都使用了非VPN 和VPN(適用于除瀏覽外的所有類別)2 種加密技術(shù)。數(shù)據(jù)集中每個文件對應(yīng)一個特定的流量類別和加密技術(shù)。對原始數(shù)據(jù)集進行手動標(biāo)記后,得到10 種流量數(shù)據(jù),其中5 種為常規(guī)加密流量,另外5 種為經(jīng)過VPN 協(xié)議封裝后的流量。但對于Browser 和VPN-Browser 兩類流量,例如Facebook_video 等文件,既可歸為Browser 又可歸為Streaming,因此決定不標(biāo)注這些文件并刪除數(shù)量較少、分類不清晰的P2P 類別。標(biāo)注后的數(shù)據(jù)如表2 所示,原始未平衡數(shù)據(jù)和平衡后的流量類別分布如表3 所示。
表2 標(biāo)注后的VPN 數(shù)據(jù)集類別及內(nèi)容列表
為確保實驗的科學(xué)性,本節(jié)使用精確率P(Precision)、召回率R(Recal1)、F1 值來評價模型。P是分類器預(yù)測為某一類別的概率,R是分類器正確分類為某一類的概率,F(xiàn)1 值是精確率和召回率的調(diào)和平均,用來衡量模型的性能,則定義:
式中:TP為被模型預(yù)測為正類的正樣本;FP為被模型預(yù)測為正類的負(fù)樣本;FN為被模型預(yù)測為負(fù)類的正樣本。
實驗配置:CPU 為Intel(R)Core(TM)i7-10750H@ 2.60 GHz 2.59 GHz 處理器,內(nèi)存為16 GB,GPU 為GeForce RTX2060(顯存6 GB),系統(tǒng)為Windows 10。
通過GAN、WGAN、DCGAN 圖像生成方法,在流量圖像階段,擴充原始不平衡數(shù)據(jù)集。完成擴充的數(shù)據(jù)集分別在CNN 分類器上進行測試,實驗結(jié)果對比如圖6、圖7 所示。
如圖6 所示,字節(jié)流灰度圖方法中VPNStreaming、VPN-Email、Chat 三類效果較差,其他均值可達80%以上。如圖7 所示,包特征灰度圖方法中有關(guān)VPN 的類別分類效果較差,其余分類精確率均可達到70%以上,接近80%。經(jīng)過對比實驗可知,在相同訓(xùn)練參數(shù)下,使用DCGAN 方法對網(wǎng)絡(luò)加密流量圖像化表示的數(shù)據(jù)集進行圖片平衡的分類效果,不僅比未經(jīng)過平衡的數(shù)據(jù)集效果好,而且比其他數(shù)據(jù)平衡方法的效果有較小幅度的提升。字節(jié)流灰度圖實驗結(jié)果平均值統(tǒng)計結(jié)果如表4、表5 所示。
表4 字節(jié)流灰度圖實驗結(jié)果平均值
表5 包特征灰度圖實驗結(jié)果平均值
圖6 字節(jié)流灰度圖分類結(jié)果對比
圖7 包特征灰度圖分類結(jié)果對比
由表4、表5 可知,數(shù)據(jù)平衡對于分類結(jié)果有著重要的影響,能夠有效地解決數(shù)據(jù)匱乏問題,從而平衡數(shù)據(jù),同時能夠提升分類模型的泛化能力和魯棒性。
在字節(jié)流灰度圖生成的數(shù)據(jù)集中,除少數(shù)類在訓(xùn)練數(shù)據(jù)大幅度縮減后表現(xiàn)出的性能略微降低外,其余類型都有較明顯的提升,如DCGAN 平衡在F1均值上相較于SMOTE 提高了近3%,相較于GAN平衡提高了近4%,相較于WGAN 平衡提升了近4%。在包特征灰度圖生成的數(shù)據(jù)集中,DCGAN 平衡在F1 均值上,相較于SMOTE 提高了近3%,相較于GAN 平衡提高了近4%,相較于WGAN 平衡提升了近1%。對比結(jié)果驗證了本文方法的可行性。
本文將原始流量數(shù)據(jù)進行圖形化表示,并把DCGAN 圖片生成的方法應(yīng)用在加密流量分類方法中,實現(xiàn)數(shù)據(jù)增強,從而解決了分類任務(wù)中數(shù)據(jù)不平衡的問題。通過經(jīng)典深度學(xué)習(xí)分類器CNN 實現(xiàn)分類任務(wù),驗證了使用DCGAN 生成圖像來進行數(shù)據(jù)增強平衡數(shù)據(jù),能夠有效地提升加密流量分類效果,并通過不同的數(shù)據(jù)增強方式來優(yōu)化分類器的性能,以便于提高分類的準(zhǔn)確率。DCGAN 可以解決普通GAN 網(wǎng)絡(luò)訓(xùn)練不穩(wěn)定、難以有效度量訓(xùn)練效果等方面的問題。未來將尋求更好的方法優(yōu)化DCGAN 網(wǎng)絡(luò)鑒別器和生成器模型結(jié)構(gòu),使其更好地應(yīng)用在網(wǎng)絡(luò)加密流量分類任務(wù)中。