崔永俊,郝立鑫
(中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,山西太原 030051)
加密流量分類(lèi)對(duì)于網(wǎng)絡(luò)安全、網(wǎng)絡(luò)入侵檢測(cè)、QoS 分析等具有重要意義[1],傳統(tǒng)的流量識(shí)別有基于端口、基于負(fù)載、基于測(cè)度[2]等識(shí)別方法,深度學(xué)習(xí)與之相比在這一方面表現(xiàn)出優(yōu)越的特性,無(wú)需人工提取特征、模型訓(xùn)練簡(jiǎn)單、準(zhǔn)確率較為理想等優(yōu)點(diǎn)讓深度學(xué)習(xí)成為當(dāng)下研究的熱點(diǎn)。
文獻(xiàn)[3]中選用CNN 對(duì)三種加密流量進(jìn)行識(shí)別,準(zhǔn)確率達(dá)到了98%。文獻(xiàn)[4]中選用CNN 對(duì)14 種應(yīng)用的加密流量進(jìn)行分類(lèi),識(shí)別準(zhǔn)確率達(dá)到了96.22%。文獻(xiàn)[5]中將CNN 與RNN 串聯(lián)在一起,對(duì)五種未加密流量和五種加密流量進(jìn)行測(cè)試,識(shí)別準(zhǔn)確率達(dá)到98%。
該文綜合模型的識(shí)別、訓(xùn)練魯棒性等各個(gè)方面,提出了并聯(lián)融合模型[6]識(shí)別加密流量分類(lèi)方法。
為了增加實(shí)驗(yàn)的可信度,選用ISCX VPN-non VPN 加密流量數(shù)據(jù)集[7],此數(shù)據(jù)集是pcap 格式的文件,選取其中五種常見(jiàn)的加密流量類(lèi)型。將加密流量進(jìn)行五元組(源IP 地址、目的IP 地址、源端口號(hào)、目的端口號(hào)、協(xié)議)分類(lèi),將數(shù)據(jù)包中的源IP 地址、目的IP 地址以及MAC 地址等都過(guò)濾掉,這些地址信息對(duì)加密流量的特征提取沒(méi)有幫助,當(dāng)模型遷移到其他設(shè)備工作時(shí),還可能對(duì)模型造成干擾,所以認(rèn)為過(guò)濾掉這些信息更有利于進(jìn)行模型的訓(xùn)練。數(shù)據(jù)預(yù)處理的整體流程圖如圖1 所示。

圖1 數(shù)據(jù)預(yù)處理的整體流程圖
在CNN 的選擇中,選用了二維CNN[8],其相較于一維CNN 具有更好的分類(lèi)效果。二維CNN 對(duì)圖片格式的數(shù)據(jù)更為敏感,將數(shù)據(jù)包轉(zhuǎn)化為灰度圖作為輸入,更有利于CNN 學(xué)習(xí)特征。經(jīng)實(shí)驗(yàn)證明28*28 像素大小的灰度圖效果最好[9],數(shù)據(jù)包的長(zhǎng)度不一,提取每個(gè)數(shù)據(jù)包前784 Byte,不足784 Byte的數(shù)據(jù)包用零補(bǔ)足到784 Byte,對(duì)于超過(guò)784 Byte的數(shù)據(jù)包,舍棄掉多余字節(jié),保證所有樣本的長(zhǎng)度相同,數(shù)據(jù)包中的原始字節(jié)是十六進(jìn)制的兩位數(shù),將其轉(zhuǎn)換為0~255 的十進(jìn)制數(shù)據(jù),進(jìn)行歸一化將其變?yōu)?~1 之間的數(shù)據(jù),采用瀑布流構(gòu)圖[10]方式將其轉(zhuǎn)換為28*28 像素的灰度圖,此種構(gòu)圖方式會(huì)增加像素點(diǎn)之間的聯(lián)系,有利于模型的訓(xùn)練,構(gòu)圖方式如圖2 所示。

圖2 瀑布流構(gòu)圖方式
為了發(fā)揮GRU[11]提取時(shí)序特征的特性,隨機(jī)選取連續(xù)四個(gè)數(shù)據(jù)包的前196 Byte,同理,不足補(bǔ)零,溢出舍棄,將其前后拼接為784 Byte,此樣本中含有豐富的時(shí)序特征,進(jìn)制轉(zhuǎn)換并歸一化后將其作為GRU的輸入。
該文的整體模型設(shè)計(jì)如圖3 所示,CNN 與GRU并聯(lián)結(jié)合,模型經(jīng)過(guò)決策融合后輸出最后分類(lèi)結(jié)果。

圖3 整體模型設(shè)計(jì)
CNN 的結(jié)構(gòu)及參數(shù)如圖4 所示。

圖4 卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)及參數(shù)
該文設(shè)計(jì)的CNN 結(jié)構(gòu)為四層卷積層與兩層全連接層,CNN 中沒(méi)有池化層,因?yàn)槌鼗椒╗12]中無(wú)論是最大池化還是平均池化都會(huì)造成特征丟失,且池化層沒(méi)有學(xué)習(xí)的能力,所以用卷積層來(lái)代替池化層[13]。
經(jīng)過(guò)卷積之后,圖片尺寸的輸出公式如式(1)-(2)所示:
由上式可以看出選用不同參數(shù)時(shí),輸出圖片的尺寸也會(huì)相應(yīng)變化,當(dāng)padding=SAME,步長(zhǎng)stride=2時(shí)圖片的輸出尺寸會(huì)變?yōu)檩斎氲囊话耄藭r(shí)的卷積層可以代替池化層進(jìn)行工作,實(shí)驗(yàn)證明此改變可以提高模型的準(zhǔn)確率。
CNN 訓(xùn)練時(shí)的優(yōu)化器采用Adam[14]優(yōu)化器,網(wǎng)絡(luò)層的激活函數(shù)均采用ReLU 激活函數(shù)。
模型的右邊是循環(huán)神經(jīng)網(wǎng)絡(luò),LSTM[15](Long Short Term Memory)和GRU 都是較為常用的循環(huán)神經(jīng)網(wǎng)絡(luò),GRU 是在LSTM 的基礎(chǔ)上變化而來(lái),與LSTM 相比,GRU 不僅結(jié)構(gòu)簡(jiǎn)單,還有良好的時(shí)序列特征學(xué)習(xí)能力。
該文設(shè)計(jì)的循環(huán)網(wǎng)絡(luò)模型采用了三層GRU 網(wǎng)絡(luò)進(jìn)行堆疊,三層網(wǎng)絡(luò)中隱藏單元的數(shù)量為128,每層GRU 網(wǎng)絡(luò)具體結(jié)構(gòu)如圖5 所示。

圖5 GRU單層結(jié)構(gòu)
其中,A 代表GRU cell 結(jié)構(gòu),Xt是每個(gè)時(shí)刻的輸入單元,在文中輸入分為四個(gè)時(shí)刻,每個(gè)時(shí)刻的輸入向量為196 維,ht是每個(gè)時(shí)刻的輸出向量,每一層網(wǎng)絡(luò)的輸出作為下一層網(wǎng)絡(luò)相同時(shí)刻的輸入,第三層網(wǎng)絡(luò)中最后一個(gè)時(shí)刻的輸出作為整個(gè)網(wǎng)絡(luò)的輸出,輸出再經(jīng)過(guò)全連接層轉(zhuǎn)化為相應(yīng)維度。
模型融合就是對(duì)一組基分類(lèi)器以特定方式進(jìn)行組合,以提升模型整體性能的方法。模型融合的常見(jiàn)方法有Voting、Averaging、Ranking、Bagging、Boosting、Stacking 等,該文選用Averaging 方法,也就是平均法,平均法又分為三種方法,分別是算數(shù)平均法、幾何平均法以及加權(quán)平均法,如下所示:
其中,f1+f2+f3+…+fk=n,加權(quán)平均法相較其他兩種方法融合效果更為理想,經(jīng)實(shí)驗(yàn)得出CNN 與GRU 預(yù)測(cè)結(jié)果的權(quán)數(shù)分別設(shè)為1.2 與0.8 最為理想,融合表達(dá)式為:
該文按照控制變量法分別設(shè)置了三組對(duì)照實(shí)驗(yàn),以便更好地評(píng)估該文所提出的模型性能。
1)該文模型與單一卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行對(duì)比,因該文模型中卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù)均為現(xiàn)有方法中最為有效的,所以將單一卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù)均與該文一樣并設(shè)其為CNN,設(shè)該文模型為CNN+RNN。
2)該文模型與卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的串聯(lián)融合模型進(jìn)行對(duì)比,設(shè)置對(duì)比模型的參數(shù)與現(xiàn)有方法中效果最好的參數(shù)一致,設(shè)此對(duì)比模型為CNN-RNN。
該文所有實(shí)驗(yàn)均使用相同的數(shù)據(jù)集,基于TensorFlow[16]框架構(gòu)建模型,所有實(shí)驗(yàn)都在Nvidia RTX 2060 GPU 實(shí)現(xiàn),在訓(xùn)練趨于穩(wěn)定時(shí)結(jié)束訓(xùn)練并進(jìn)行驗(yàn)證與測(cè)試。
該文的實(shí)驗(yàn)評(píng)價(jià)指標(biāo)有兩個(gè),一個(gè)是查準(zhǔn)率(Precision)和召回率(Recall)的綜合值F1,查準(zhǔn)率與召回率同等重要,為了避免兩個(gè)指標(biāo)發(fā)生沖突難以評(píng)價(jià)模型性能,所以提出了F1 值,另一個(gè)是準(zhǔn)確率(Accuracy),計(jì)算方法如下:
式中,TP 代表真正(True Positive),TN 代表真負(fù)(True Negative),F(xiàn)P 代表假正(False Positive),F(xiàn)N 代表假負(fù)(False Negative),具體如表1 所示。

表1 分類(lèi)結(jié)果混淆矩陣
將ISCX VPN-nonVPN 數(shù)據(jù)集中的數(shù)據(jù)預(yù)處理之后,按照7∶1∶2 的比例劃分為訓(xùn)練集、驗(yàn)證集與測(cè)試集,按照實(shí)驗(yàn)設(shè)置進(jìn)行實(shí)驗(yàn)得到三種模型的測(cè)試準(zhǔn)確率,由于篇幅所限,只給出CNN+RNN 模型的數(shù)據(jù),如表2 所示。

表2 模型測(cè)試數(shù)據(jù)
將表2 中的加密流量按照從上到下的順序標(biāo)號(hào)為1-8,對(duì)比實(shí)驗(yàn)結(jié)果如圖6-7 所示。

圖6 對(duì)比實(shí)驗(yàn)1

圖7 對(duì)比實(shí)驗(yàn)2
由對(duì)比實(shí)驗(yàn)的結(jié)果圖可知,該文所提出模型CNN+RNN的準(zhǔn)確率相對(duì)于CNN平均提高了14.07%,有著較大提升,說(shuō)明單一模型在流量識(shí)別方面的局限性;CNN+RNN 的準(zhǔn)確率相對(duì)于CNN-RNN 平均提高了2.79%,雖然準(zhǔn)確率提高的并不算非常明顯,但是由于顯示生活中流量的基數(shù)非常大,所以小的提升所節(jié)省下的資源也是非常可觀的。三種模型的F1 值對(duì)比圖如圖8 所示。

圖8 F1值對(duì)比圖
可以看出CNN+RNN 模型的魯棒性也優(yōu)于其他兩種模型。在訓(xùn)練準(zhǔn)確率方面,三種模型趨于穩(wěn)定的訓(xùn)練輪次基本相同,如圖9 所示。

圖9 訓(xùn)練準(zhǔn)確率
在訓(xùn)練時(shí)間上,CNN 因結(jié)構(gòu)較為簡(jiǎn)單所以耗費(fèi)時(shí)間較少,CNN+RNN 耗費(fèi)時(shí)間略多于CNN-RNN,如表3 所示。

表3 模型訓(xùn)練效率
CNN+RNN 耗費(fèi)時(shí)間更多是因?yàn)榇四P蛽碛袃蓚€(gè)完整的神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu)上相較而言更為復(fù)雜。總體來(lái)說(shuō),訓(xùn)練效率在可接受范圍之內(nèi)。
該文針對(duì)加密流量分類(lèi)問(wèn)題提出了一種基于融合模型的分類(lèi)方法,此方法將卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)以并聯(lián)的方式結(jié)合起來(lái),每個(gè)神經(jīng)網(wǎng)絡(luò)都能發(fā)揮出自己的特性,卷積神經(jīng)網(wǎng)絡(luò)提取加密流量的空間特征,循環(huán)神經(jīng)網(wǎng)絡(luò)提取加密流量的時(shí)序特征,此方法還將卷積神經(jīng)網(wǎng)絡(luò)的池化層用卷積層代替,解決了加密流量特征丟失以及池化層不能學(xué)習(xí)等問(wèn)題。并聯(lián)融合模型的識(shí)別準(zhǔn)確率相較于單一模型和串聯(lián)融合模型分別提高了14.07%與2.79%,實(shí)驗(yàn)證明此模型性能優(yōu)于現(xiàn)有模型。該文所用數(shù)據(jù)集為離線數(shù)據(jù)集,在未來(lái)將進(jìn)行加密流量實(shí)時(shí)分析等方面的工作,在線流量處理將會(huì)增加相當(dāng)大的處理性能開(kāi)銷(xiāo),因此需要在準(zhǔn)確性、誤報(bào)率、實(shí)時(shí)性以及性能優(yōu)化等方面做進(jìn)一步研究。