目前,公知的基于深度學習的加密流量識別算法可分為基于端口、基于有效載荷和基于流的識別方法。在這一框架下,基于端口的流量識別方法假設大多數應用程序使用默認的TCP協議或UDP端口號來推斷服務或應用程序的類型。因此,端口偽裝、隨機及隧道技術等方法失效。而基于有效載荷的識別方法需要匹配數據包內容,因此無法處理加密流量。和前兩種方法不同,基于流的識別方法通常依賴于統計特征或時間序列特征,采用機器學習方法對流量數據進行建模,再給出識別結果。
然而,機器學習方法存在的局限性包括:(1)難以自動提取和選擇特征,需要依賴專家經驗進行手動提取特征、選擇特征等,使得識別效果難以保證;(2)離線提取特征的方式使得識別算法難以應對在線流量識別的場景,需離線更新特征,重新訓練識別模型,難以實時提供流量識別結果。因此,解決上述問題,是流量識別算法設計的重中之重。
為了克服現有流量識別方法的不足,解決現有流量識別方法難以自動提取和選擇特征的問題。本發明專利提供一種基于深度學習技術的加密流量識別算法。該流量識別算法不僅能夠自動從流量數據中準確提取特征、選擇特征,而且能夠在線訓練流量識別模型。
解決技術問題所采用的技術方案是:
(1)流量數據預處理,加密流量數據集劃分為原始數據包數據集、流量文件和統計特征三種類型。預處理包括數據包過濾、報頭去除、數據包填充與階段以及數據歸一化。
(2)自動特征提取,輸入數據為原始數據包數據、流量特征、原始數據與流量特征組合三種。使用深度學習技術自動提取原始數據包中的特征,流量特征采用包級別特征,即源與目的端口,包長度、到達時間間隔、有效載荷字節、TCP窗口大小及流向。會話特征采用接收與發送數據包的個數、會話持續時間和有效負載。統計特征采用平均數據包長度、平均延誤時間間隔和平均上下行數據比例。原始數據與流量特征則包含上述特征的優化組合結果。
(3)深度神經網絡搭建,采用深度卷積網絡作為流量識別模型,使用多個卷積層處理高維輸入,利用池化層減少模型參數。將流量數據轉換為二維圖像,提高流量識別模型的泛化能力。
(4)深度神經網絡的訓練,采用隨機梯度下降方法訓練模型,并采用在線訓練方法對模型進行實時更新,使識別模型能夠提供在線識別結果。
本方法的有益效果是,可以在線提供流量數據的識別結果。能夠自動進行特征提取、計算和選擇,有效提高了實時場景下的流量識別效果。