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

圖1 數據預處理的整體流程圖
在CNN 的選擇中,選用了二維CNN[8],其相較于一維CNN 具有更好的分類效果。二維CNN 對圖片格式的數據更為敏感,將數據包轉化為灰度圖作為輸入,更有利于CNN 學習特征。經實驗證明28*28 像素大小的灰度圖效果最好[9],數據包的長度不一,提取每個數據包前784 Byte,不足784 Byte的數據包用零補足到784 Byte,對于超過784 Byte的數據包,舍棄掉多余字節,保證所有樣本的長度相同,數據包中的原始字節是十六進制的兩位數,將其轉換為0~255 的十進制數據,進行歸一化將其變為0~1 之間的數據,采用瀑布流構圖[10]方式將其轉換為28*28 像素的灰度圖,此種構圖方式會增加像素點之間的聯系,有利于模型的訓練,構圖方式如圖2 所示。

圖2 瀑布流構圖方式
為了發揮GRU[11]提取時序特征的特性,隨機選取連續四個數據包的前196 Byte,同理,不足補零,溢出舍棄,將其前后拼接為784 Byte,此樣本中含有豐富的時序特征,進制轉換并歸一化后將其作為GRU的輸入。
該文的整體模型設計如圖3 所示,CNN 與GRU并聯結合,模型經過決策融合后輸出最后分類結果。

圖3 整體模型設計
CNN 的結構及參數如圖4 所示。

圖4 卷積神經網絡模型結構及參數
該文設計的CNN 結構為四層卷積層與兩層全連接層,CNN 中沒有池化層,因為池化方法[12]中無論是最大池化還是平均池化都會造成特征丟失,且池化層沒有學習的能力,所以用卷積層來代替池化層[13]。
經過卷積之后,圖片尺寸的輸出公式如式(1)-(2)所示:
由上式可以看出選用不同參數時,輸出圖片的尺寸也會相應變化,當padding=SAME,步長stride=2時圖片的輸出尺寸會變為輸入的一半,此時的卷積層可以代替池化層進行工作,實驗證明此改變可以提高模型的準確率。
CNN 訓練時的優化器采用Adam[14]優化器,網絡層的激活函數均采用ReLU 激活函數。
模型的右邊是循環神經網絡,LSTM[15](Long Short Term Memory)和GRU 都是較為常用的循環神經網絡,GRU 是在LSTM 的基礎上變化而來,與LSTM 相比,GRU 不僅結構簡單,還有良好的時序列特征學習能力。
該文設計的循環網絡模型采用了三層GRU 網絡進行堆疊,三層網絡中隱藏單元的數量為128,每層GRU 網絡具體結構如圖5 所示。

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

表1 分類結果混淆矩陣
將ISCX VPN-nonVPN 數據集中的數據預處理之后,按照7∶1∶2 的比例劃分為訓練集、驗證集與測試集,按照實驗設置進行實驗得到三種模型的測試準確率,由于篇幅所限,只給出CNN+RNN 模型的數據,如表2 所示。

表2 模型測試數據
將表2 中的加密流量按照從上到下的順序標號為1-8,對比實驗結果如圖6-7 所示。

圖6 對比實驗1

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

圖8 F1值對比圖
可以看出CNN+RNN 模型的魯棒性也優于其他兩種模型。在訓練準確率方面,三種模型趨于穩定的訓練輪次基本相同,如圖9 所示。

圖9 訓練準確率
在訓練時間上,CNN 因結構較為簡單所以耗費時間較少,CNN+RNN 耗費時間略多于CNN-RNN,如表3 所示。

表3 模型訓練效率
CNN+RNN 耗費時間更多是因為此模型擁有兩個完整的神經網絡,結構上相較而言更為復雜。總體來說,訓練效率在可接受范圍之內。
該文針對加密流量分類問題提出了一種基于融合模型的分類方法,此方法將卷積神經網絡與循環神經網絡以并聯的方式結合起來,每個神經網絡都能發揮出自己的特性,卷積神經網絡提取加密流量的空間特征,循環神經網絡提取加密流量的時序特征,此方法還將卷積神經網絡的池化層用卷積層代替,解決了加密流量特征丟失以及池化層不能學習等問題。并聯融合模型的識別準確率相較于單一模型和串聯融合模型分別提高了14.07%與2.79%,實驗證明此模型性能優于現有模型。該文所用數據集為離線數據集,在未來將進行加密流量實時分析等方面的工作,在線流量處理將會增加相當大的處理性能開銷,因此需要在準確性、誤報率、實時性以及性能優化等方面做進一步研究。