在安全和隱私保護需求的驅(qū)動下,網(wǎng)絡通信加密化已經(jīng)成為不可阻擋的趨勢。加密網(wǎng)絡流量呈現(xiàn)爆炸增長,給流量審計與網(wǎng)絡空間治理帶來了挑戰(zhàn)。盡管機器學習已解決了部分加密流量識別的問題,但仍存在無法自動提取特征等局限。深度學習可以自動提取更本質(zhì)、更有效的特征,已被用于加密流量識別,并取得了高精度?;谏疃葘W習的加密流量識別的相關(guān)研究工作,提出基于深度學習的加密流量識別的框架,并通過數(shù)據(jù)集、特征構(gòu)造和模型架構(gòu)回顧部分研究工作,分析基于深度學習的加密流量識別面臨的挑戰(zhàn)。
0 引 言
加密流量主要是指在通信過程中所傳送的被加密過的實際明文內(nèi)容。在安全和隱私保護需求的驅(qū)動下,網(wǎng)絡通信加密化已經(jīng)成為不可阻擋的趨勢。加密網(wǎng)絡流量呈現(xiàn)爆炸增長,安全超文本傳輸協(xié)議(Hyper Text Transfer Protocol over Secure,HTTPS)幾乎已經(jīng)基本普及。但是,加密流量也給互聯(lián)網(wǎng)安全帶來了巨大威脅,尤其是加密技術(shù)被用于網(wǎng)絡違法犯罪,如網(wǎng)絡攻擊、傳播違法違規(guī)信息等。因此,對加密流量進行識別與檢測是網(wǎng)絡惡意行為檢測中的關(guān)鍵技術(shù),對維護網(wǎng)絡空間安全具有重要意義。
隨著流量加密與混淆的手段不斷升級,加密流量分類與識別的技術(shù)逐步演進,主要分為基于端口、基于有效載荷和基于流的方法。
基于端口的分類方法通過假設大多數(shù)應用程序使用默認的傳輸控制協(xié)議(Transmission Control Protocol,TCP)或用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)端口號來推斷服務或應用程序的類型。然而,端口偽裝、端口隨機和隧道技術(shù)等方法使該方法很快失效。基于有效載荷的方法,即深度包解析(Deep Packet Inspection,DPI)技術(shù),需要匹配數(shù)據(jù)包內(nèi)容,無法處理加密流量。基于流的方法通常依賴于統(tǒng)計特征或時間序列特征,并采用機器學習算法,如支持向量機、決策樹、隨機森林等算法進行建模與識別。此外,高斯混合模型等統(tǒng)計模型也被用于識別和分類加密流量。
雖然機器學習方法可以解決許多基于端口和有效載荷的方法無法解決的問題,但仍然存在一些局限:(1)無法自動提取和選擇特征,需要依賴領(lǐng)域?qū)<业慕?jīng)驗,導致將機器學習應用于加密流量分類時存在很大的不確定性;(2)特征容易失效,需要不斷更新。與大多數(shù)傳統(tǒng)機器學習算法不同,在沒有人工干預的情況下,深度學習可以提取更本質(zhì)、更有效的檢測特征。因此,國內(nèi)外最近的研究工作開始探索深度學習在加密流量檢測領(lǐng)域中的應用。
基于已有研究工作,本文提出了基于深度學習的加密流量分類的通用框架,主要包括數(shù)據(jù)預處理、特征構(gòu)造、模型與算法選擇。本文其余部分組織如下:第1節(jié)介紹加密流量識別的定義;第2節(jié)提出基于深度學習的加密流量分類的總體框架;第3節(jié)討論加密流量分類研究中一些值得注意的問題和面臨的挑戰(zhàn);第4節(jié)總結(jié)全文。
1 加密流量識別的定義
1.1 識別目的
加密流量識別的類型是指識別結(jié)果的輸出形式。通過加密流量識別的應用需求,確定識別的類型。加密流量可以從協(xié)議、應用、服務等屬性出發(fā),逐步精細化識別,最終實現(xiàn)協(xié)議識別、應用識別、異常流量識別及內(nèi)容本質(zhì)識別等。
1.1.1 識別加密流量
加密流量識別的首要任務是區(qū)分加密與未加密流量。在識別出加密流量后,可以采用不同策略對加密流量進行精細化識別。
1.1.2 識別加密協(xié)議
加密協(xié)議(如TLS、SSH、IPSec)的識別可以用于網(wǎng)絡資源的調(diào)度、規(guī)劃和分配,也可以用于入侵檢測以及惡意網(wǎng)絡行為檢測等。由于各協(xié)議定義不同,需要在協(xié)議交互過程中挖掘具有強差異性的特征與規(guī)律,從而提升加密流量識別的精確性。
1.1.3 識別加密應用
加密應用的識別是指識別加密流量所屬的應用類型,如Facebook、Youtube、Skype等。它既可用于網(wǎng)絡資源的精準調(diào)度,也可用于識別暗網(wǎng)應用(如Tor、Zeronet),從而提升網(wǎng)絡空間治理能力。
1.1.4 識別惡意加密流量
惡意加密流量是指使用加密傳輸?shù)膼阂饩W(wǎng)絡流量,如勒索病毒、惡意軟件等。識別惡意加密流量可以用于入侵檢測、惡意軟件檢測和僵尸網(wǎng)絡檢測。
1.1.5 識別加密流量內(nèi)容
加密流量的內(nèi)容識別是指從加密流量中識別其承載的內(nèi)容,如圖片、視頻、音頻、網(wǎng)頁以及文件類型等。識別加密流量內(nèi)容可用于網(wǎng)絡空間安全治理。
1.2 識別性能
目前,網(wǎng)絡加密流量的識別方法大多采用與準確性相關(guān)的指標進行評估,主要為誤報率、精確率、召回率以及總體準確率等。
假設加密流量有N種類型,即N為分類類別數(shù);定義圖片為實際類型為i的樣本被識別為類型i的樣本數(shù);定義圖片為實際類型為i的樣本被誤識別為類型j的樣本數(shù)。
類型i的誤報率為:
類型i的精確率為:
類型i的召回率為:
總體準確率為:
1.3 加密流量數(shù)據(jù)集
使用深度學習對加密流量進行分類時,需要選擇規(guī)模較大、數(shù)據(jù)分布均衡且具有代表性的數(shù)據(jù)集。目前,加密流量數(shù)據(jù)集主要有公共數(shù)據(jù)集和原始數(shù)據(jù)。
1.3.1 選擇公共數(shù)據(jù)集
近年來,大多數(shù)加密流量識別的研究工作選擇公共數(shù)據(jù)集,如ISCX2012、Moore、USTC-TFC2016和IMTD17等。但是,公開的加密流量數(shù)據(jù)集的數(shù)量少,且缺少一個能夠準確且全面表征所有加密流量類型的數(shù)據(jù)集。究其原因,主要在于:流量類型多且數(shù)量龐大,應用程序更新頻繁,沒有數(shù)據(jù)集可以包含所有類型的加密流量;難以覆蓋寬帶和無線接入、PC和移動設備接入等所有網(wǎng)絡場景。
1.3.2 收集原始數(shù)據(jù)
文獻[11-12]通過數(shù)據(jù)包采集工具,收集來自研究實驗室網(wǎng)絡或運營商的原始流量數(shù)據(jù),但大部分原始數(shù)據(jù)集均未公開。
2 深度學習的加密流量識別框架
本文提供了基于深度學習的加密流量識別通用框架,并簡要介紹常用深度學習方法的一些最新論文,總體框架如圖1所示,包含數(shù)據(jù)預處理、特征構(gòu)造以及深度學習模型架構(gòu)設計、訓練以及識別等流程。
圖1 基于深度學習的加密流量識別的通用框架
2.1 數(shù)據(jù)預處理
加密流量原始數(shù)據(jù)集可以分為原始數(shù)據(jù)包數(shù)據(jù)集、流量pcap文件和已處理過的統(tǒng)計特征3種類型。在對加密流量識別的深度學習框架中,常見的數(shù)據(jù)預處理操作有數(shù)據(jù)包過濾或報頭去除、數(shù)據(jù)包填充與截斷以及數(shù)據(jù)歸一化。
2.1.1 數(shù)據(jù)包過濾或報頭去除
由于原始數(shù)據(jù)包數(shù)據(jù)集中可能包含地址解析協(xié)議(Address Resolution Protocol,ARP)、動態(tài)主機配置協(xié)議(Dynamic Host Configuration Protocol,DHCP)、Internet控制報文協(xié)議(Internet Control Message Protocol,ICMP)等流量,同時pcap文件中包含pcap文件頭等信息。通常這兩類數(shù)據(jù)需要進行預處理,如數(shù)據(jù)包過濾、報頭去除。
2.1.2 數(shù)據(jù)包填充與截斷
由于深度神經(jīng)網(wǎng)絡(Deep Neural Networks,DNN)總是被饋送固定大小的輸入,而數(shù)據(jù)包的幀長度從54到1 514變化很大,如傳輸控制協(xié)議(Transmission Control Protocol,TCP)協(xié)議,因此需要對數(shù)據(jù)包進行固定長度的零填充和截斷。
2.1.3 數(shù)據(jù)歸一化
數(shù)據(jù)歸一化對深度學習的性能至關(guān)重要。通過將統(tǒng)計特征數(shù)據(jù)集中的流量數(shù)據(jù)歸一化為[-1,+1]或[0,1]范圍內(nèi)的值,有助于分類任務在模型訓練期間更快收斂。
2.2 特征提取
深度學習模型的輸入對模型在訓練和測試過程中的性能有很大影響,既能直接影響模型的準確性,又能影響計算復雜度和空間復雜度。在現(xiàn)有研究中,基于深度學習的加密流量分類模型的輸入一般可以分為原始數(shù)據(jù)包數(shù)據(jù)、流量特征以及原始數(shù)據(jù)與流量特征組合3種類型。
2.2.1 原始數(shù)據(jù)包數(shù)據(jù)
深度學習可以自動提取特征,因此大多數(shù)基于深度學習的加密流量分類算法將數(shù)據(jù)預處理后的原始數(shù)據(jù)包數(shù)據(jù)作為模型的輸入。
2.2.2 流量特征
加密流量的一般流量特征可以分為包級特征、會話特征和統(tǒng)計特征。其中:包級特征包含源和目的端口、包長度、到達時間間隔、有效載荷字節(jié)、TCP窗口大小以及流向等;會話特征包括接收與發(fā)送數(shù)據(jù)包個數(shù)、會話持續(xù)時間以及會話有效負載等;統(tǒng)計特征有平均數(shù)據(jù)包長度、平均延誤時間間隔以及平均上下行數(shù)據(jù)比例等。在文獻[12]中,數(shù)據(jù)包級、流級特征和統(tǒng)計特征都被用于模型的輸入。文獻[15]針對Tor常用的3種流量混淆插件(Obfs3、Obfs4、ScrambleSuit)進行研究,旨在挖掘可用的混淆插件Tor流量識別方法。該文采用的方法為機器學習方法,包括C4.5、SVM、Adaboost以及隨機森林,采用的流特征包括數(shù)種前向與后向的數(shù)據(jù)包大小統(tǒng)計特征,如前向總字節(jié)數(shù)。該實驗結(jié)果證明,僅僅采用每條流的前10~50個數(shù)據(jù)包的信息即可實現(xiàn)上述流量的快速檢測。同時,有研究表明,第一個數(shù)據(jù)包的數(shù)量對分類器的影響較大,尤其是實時分類性能。第一個數(shù)據(jù)包收集越多,流量特征越完整和全面。
2.2.3 原始數(shù)據(jù)和流量特征的組合
TONG等人將原始數(shù)據(jù)包數(shù)據(jù)和從網(wǎng)絡流量中提取的特征進行組合,從而對新型加密協(xié)議QUIC下的谷歌應用程序進行分類。
2.3 模型架構(gòu)
2.3.1 多層感知器
由于多層感知器(Multilayer Perceptron,MLP)的復雜性和低準確率,研究者在識別加密流量領(lǐng)域中較少使用MLP。文獻[18]基于不同的加密流量數(shù)據(jù)集,將多種深度學習算法與隨機森林算法(Random Forest,RF)進行比較,結(jié)果表明大多數(shù)深度學習方法優(yōu)于隨機森林算法,但MLP性能低于RF。但文獻[18]提出,由于RF、MLP和其余深度學習方法的輸入特征不同,不應將該實驗結(jié)果作為對MLP、RF等方法的綜合比較結(jié)論。
文獻[19]介紹了一種稱為DataNet的基于深度學習的加密流量分類方法,其中MLP模型由1個輸入層、2個隱藏層和1個輸出層組成,用ISCX2012的VPN-nonVPN流量數(shù)據(jù)集進行實驗。實驗評估結(jié)果表明,它的精確率、召回率均超過92%。
2.3.2 卷積神經(jīng)網(wǎng)絡
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)可以通過卷積層來改善MLP無法處理高維輸入的限制,利用卷積和池化來減少模型參數(shù),如圖2所示。
圖2 卷積神經(jīng)網(wǎng)絡
文獻[14]用一維向量表示每個流或會話,以訓練CNN模型。結(jié)果表明,該CNN的準確性優(yōu)于使用時間序列和統(tǒng)計特征的C4.5方法。文獻[17]將時間序列數(shù)據(jù)轉(zhuǎn)換為二維圖像,并使用具有2個卷積層、2個池化層和3個全連接層的CNN進行訓練。結(jié)果表明,文獻[14]提出的CNN模型在協(xié)議和應用分類方面優(yōu)于經(jīng)典機器學習方法和MLP。
2.3.3 循環(huán)神經(jīng)網(wǎng)絡
循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)可以有效處理序列問題,對之前發(fā)生的數(shù)據(jù)序列有一定的記憶力,結(jié)構(gòu)如圖3所示。文獻[12]提出,在加密流量識別領(lǐng)域中,混合模型會有優(yōu)于單一的長短期記憶網(wǎng)絡(Long Short-Term Memory,LSTM)或CNN模型。文獻[12]同時使用CNN和RNN來捕獲流的空間特征和時間特征。LIU等人采用基于注意力的雙向門限循環(huán)單位網(wǎng)絡(Attention-Based Bidirectional GRU Networks,BGRUA)進行以HTTPS封裝的Web流量的識別。該文采用3個部分的神經(jīng)網(wǎng)絡進行充分的加密流量識別。第1部分為一個雙層的BGRU網(wǎng)絡,用于從輸入的流序列中學習得到序列隱藏狀態(tài)。第2部分為注意力層,將隱藏狀態(tài)序列轉(zhuǎn)化為帶注意力權(quán)重參數(shù)的隱藏狀態(tài)序列,然后通過前向神經(jīng)網(wǎng)絡轉(zhuǎn)化為預測標簽。第3部分為遷移學習網(wǎng)絡,實現(xiàn)前兩部分學習成果的場景擴展。實驗結(jié)果除了證明模型在性能上的優(yōu)勢外,還證明了遷移學習在加速新場景方面的訓練能力。
圖3 RNN結(jié)構(gòu)
2.3.4 自編碼器
自編碼器(Auto-Encoder,AE)是一種無監(jiān)督的神經(jīng)網(wǎng)絡模型,可以學習到輸入數(shù)據(jù)的隱含特征。文獻[21]使用AE重構(gòu)輸入,并將softmax層應用于自編碼器的編碼內(nèi)部表示。文獻[22]采用有效載荷數(shù)據(jù)來訓練一維CNN和堆疊AE模型,如圖4所示。這兩種模型顯示出高精度,且CNN模型略微優(yōu)于堆疊AE模型。
圖4 Deep Packet框架
3 挑戰(zhàn)與展望
本節(jié)對加密流量識別的挑戰(zhàn)與未來方向進行了討論。
3.1 現(xiàn)存挑戰(zhàn)
3.1.1 新型加密協(xié)議的出現(xiàn)
隨著新型加密協(xié)議的出現(xiàn)與普及,如TLS1.3協(xié)議,數(shù)據(jù)包中只有少數(shù)字段未加密,證書和域名信息都將加密。基于TLS1.2握手期間,部分明文字段的加密流量識別算法都將失效。
3.1.2 加密流量的標注
深度學習在訓練過程中需要大量標記數(shù)據(jù)。但是,由于隱私保護和流量標注工具如深度包解析工具無法處理加密流量,難以在短時間和低成本的條件下合法收集,并準確標注加密流量數(shù)據(jù)集。
3.1.3 加密流量的分布
在真實網(wǎng)絡環(huán)境下,類不平衡也是加密流量分類的重要問題,會直接影響分類精度。
3.2 未來可能的方向
3.2.1 預訓練模型
未標記的流量數(shù)據(jù)數(shù)據(jù)量大且比較容易獲取,因此一些研究人員開始探索如何利用容易獲得的未標記流量數(shù)據(jù)結(jié)合少量標記流量數(shù)據(jù)進行準確的流量分類。通過它可以使用大量未標記的交通數(shù)據(jù)預訓練模型,然后將其轉(zhuǎn)移到新架構(gòu),并使用深度學習重新訓練模型。此外,預訓練可以用于降維,使模型變得輕量級。
3.2.2 生成對抗網(wǎng)絡
生成模型可用于處理網(wǎng)絡流量分類中的數(shù)據(jù)集不平衡問題。不平衡問題是指每個類的樣本數(shù)量差異很大的場景,而處理不平衡數(shù)據(jù)集的最常見和最簡單的方法是通過復制少類的樣本進行過采樣,或者通過從多類中刪除一些樣本進行欠采樣。文獻[24]中,生成對抗網(wǎng)絡(Generative Adversarial Network,GAN)用于生成合成樣本以處理不平衡問題,通過使用輔助分類器生成對抗網(wǎng)絡(Auxiliary Classifier Generative Adversarial Network,AC-GAN)來生成兩類網(wǎng)絡,使用具有2個類(SSH和非SSH)和22個輸入統(tǒng)計特征的公共數(shù)據(jù)集。
3.2.3 遷移學習
遷移學習假設源任務和目標任務的輸入分布是相似的,允許在源任務上訓練的模型用于不同的目標任務。由于模型已訓練,再訓練過程需要的標記數(shù)據(jù)和訓練時間將明顯減少。在網(wǎng)絡加密流量識別的場景中,可用公開的加密數(shù)據(jù)集來預訓練模型,在進一步調(diào)整模型后,以用于具有較少標記樣本的另一個加密流量分類任務。文獻[23]使用這種方法,將預先訓練的CNN模型的權(quán)重轉(zhuǎn)移到一個新模型,訓練對Google應用程序進行分類。論文還表明,在不相關(guān)的公共數(shù)據(jù)集上,預訓練的模型仍然可以用于遷移學習。
4 結(jié) 語
網(wǎng)絡流量是網(wǎng)絡通信的必然產(chǎn)物,而流量蘊含了通信過程中雙方的各種關(guān)鍵信息,因此加密流量分析是網(wǎng)絡態(tài)勢感知的一個重要方面。多種研究和實踐已經(jīng)證明,加密流量中蘊含的信息可以在一定程度上被有效挖掘,為網(wǎng)絡管理操作決策提供高質(zhì)量的依據(jù)支撐。因此,加密流量分析是提升網(wǎng)絡態(tài)勢感知能力的關(guān)鍵因素之一,具有極高的科研、應用、民生以及安全意義。
本文提出了基于深度學習的加密流量分類的通用框架,并根據(jù)分類任務定義、數(shù)據(jù)準備、特征構(gòu)造、模型輸入設計和模型架構(gòu)回顧了最新的現(xiàn)有工作。此外,本文對加密流量識別的現(xiàn)存問題和未來可能的識別技術(shù)進行了討論。