蔣考林,白 瑋,任傳倫,張 磊,陳 軍,潘志松,郭世澤
(1.陸軍工程大學(xué)指揮控制工程學(xué)院,南京210007;2.華北計算技術(shù)研究所,北京100083)
近年來,加密數(shù)據(jù)傳輸技術(shù)被廣泛應(yīng)用,流量加密已成為當前網(wǎng)絡(luò)的事實標準。流量加密保證了數(shù)據(jù)傳輸?shù)陌踩?,但也給網(wǎng)絡(luò)管理帶來了巨大挑戰(zhàn);由于無法對加密流量進行解密,網(wǎng)絡(luò)管理人員從數(shù)據(jù)負載內(nèi)容本身獲得的信息非常有限,以致對加密流量的管理非常困難,這使它成為了違法犯罪活動逃避監(jiān)管的常用工具。報告顯示[1],近年來,中國數(shù)百個重要目標頻繁受到網(wǎng)絡(luò)攻擊,涉及數(shù)十個重要行業(yè),這些攻擊流量均使用了加密流量,面對當前加密技術(shù)被濫用,安全形勢日趨復(fù)雜的局面,亟須一種能夠?qū)用芰髁窟M行有效監(jiān)管的技術(shù)。加密流量監(jiān)管的前提是流量識別,即在眾多網(wǎng)絡(luò)流量中指出哪些連接是加密流量,以及使用了何種加密協(xié)議,這些信息能為后續(xù)加密流量分析提供基礎(chǔ)支撐。
目前網(wǎng)絡(luò)流量分析技術(shù)主要有4種[2]:(1)基于端口號的方法,該方法采用簡單的端口映射方式對網(wǎng)絡(luò)流量進行識別[3],簡單直觀易實現(xiàn),但由于現(xiàn)在動態(tài)端口技術(shù)的廣泛使用,該方法已逐漸失效。(2)基于深度包檢測(Deep packet inspection,DPI)的方法,DPI方法根據(jù)流量的先驗知識提取固定規(guī)則,然后在待檢流量中匹配這些規(guī)則[4]。Bujlow等[5]利用深度包檢測進行流量識別,并對6種DPI方法進行了比較,實驗結(jié)果發(fā)現(xiàn)DPI方法對未加密流量有很好的效果,但是對加密流量檢測效果較差。潘吳斌等[6]認為流量加密后,特征會發(fā)生較大改變,故DPI方法很難適用于加密流量。(3)基于統(tǒng)計和行為分析的方法,其不再依賴于固定的規(guī)則,不需要對數(shù)據(jù)包進行解析,從數(shù)理統(tǒng)計的理論出發(fā),根據(jù)人工預(yù)先設(shè)定的特征,對流量進行分類,主要使用的特征包含負載隨機性檢驗、加權(quán)累積和檢驗[7]等,這些方法受加密影響相對較??;但是由于特征提取和規(guī)則定義都由人工完成,因而所用特征和規(guī)則都過于簡單,無法應(yīng)對復(fù)雜的分類問題。(4)基于機器學(xué)習(xí)的方法[8],它是目前比較主流的流量識別方法,其核心優(yōu)點在于可以使用較為復(fù)雜的規(guī)則。Deng等[9]采用隨機森林方法,該方法從會話流中提取超過3 000個數(shù)據(jù)包級的特征,得到了較好的識別效果。為進一步提高精度,機器學(xué)習(xí)方法往往和其他先驗知識相融合;張先勇等[10]提出基于XGBoost機器學(xué)習(xí)和域名相融合的流量識別技術(shù),首先構(gòu)建機器學(xué)習(xí)模型進行流量的初步識別,然后構(gòu)建二級域名的映射關(guān)系對識別結(jié)果進行二次篩選,進一步提高準確率。機器學(xué)習(xí)方法在一定程度上克服了規(guī)則簡單的問題,但其所用的特征仍然需要人工定義,使得這些特征的有效性無法提前驗證,特征之間的相關(guān)性會導(dǎo)致計算資源浪費,并且人工選擇特征一般都針對特定問題背景,方法兼容性差[11]。
近年來興起的深度學(xué)習(xí)方法在語音識別和圖像識別等領(lǐng)域取得了巨大成功。深度學(xué)習(xí)已被廣泛用于各類異常識別問題[12]。它從大量的異常樣本中直接提取特征,并利用這些特征進行分類,得到異常樣本識別模型。深度學(xué)習(xí)方法具有自動化程度高、資源消耗低等優(yōu)點。Zhang等[13]利用卷積神經(jīng)網(wǎng)絡(luò)提取加密流量的動態(tài)特征,實驗表明該方法能較好地識別加密流量。但是,現(xiàn)有的網(wǎng)絡(luò)流量識別方法,還存在流量識別機制和管控機制難以有效融合的問題。當前加密流量識別方法需要數(shù)據(jù)流的整體特征[14],這些特征需要在流量結(jié)束后才能獲得,具有滯后性,此時已經(jīng)無法對流量進行有效管控;因此,加密流量的早期識別很有必要,這就要求深度學(xué)習(xí)模型應(yīng)提取數(shù)據(jù)流的早期特性,并且應(yīng)降低模型識別耗時,以保證實時處理。本文提出一種輕量化的加密流量快速識別方法,該方法僅使用通信雙方建鏈過程中的交互流量數(shù)據(jù),有效提取加密流量的類別特征,并進行快速識別。實驗證明,該方法能夠有效識別出加密流量,具有早期識別特性,且處理速度能滿足實時性要求。
加密連接通常分為兩個階段:建鏈階段和數(shù)據(jù)傳輸階段。第一階段為加密建立連接的建立,執(zhí)行握手、認證和交換秘鑰等動作[15],稱為建鏈階段,由于該階段還未建立完整的加密機制,因此交互的數(shù)據(jù)是明文形式;第二階段利用建立好的加密連接進行數(shù)據(jù)的加密傳輸,如圖1所示。對建鏈階段進行流量分析通常能獲取重要信息。在初始握手階段,要協(xié)商連接的參數(shù),如密碼組件、加密協(xié)議版本和數(shù)據(jù)認證等信息,這些信息對于連接的建立和數(shù)據(jù)包的解析至關(guān)重要。例如,由于大部分密碼組件由操作系統(tǒng)實現(xiàn),因此應(yīng)用程序必須在建鏈階段交互雙方所支持的密碼組件,對密碼組件進行分析以獲得用戶的操作系統(tǒng)、瀏覽器和其應(yīng)用版本等信息。
圖1 加密連接的兩個階段Fig.1 Two stages of encrypted connection
基于深度學(xué)習(xí)的流量識別方法需要按照一定粒度將流量切分為多個離散單元。流量的切分方式有5種:主機、服務(wù)、TCP、流和會話?,F(xiàn)在主流的切分方式為流和會話[16];流指的是具有相同五元組(源IP地址,源端口號,目的IP地址,目的端口號,傳輸層協(xié)議)的所有包,由客戶端C到服務(wù)端S或由服務(wù)端S到客戶端C的單向流量;而會話指的是通信雙方的所有交互數(shù)據(jù),會話也被稱為雙向流。會話含有通信雙方的交互信息,更能反映密數(shù)據(jù)流的特征,如圖2所示。
在TCP/IP協(xié)議棧中,網(wǎng)絡(luò)協(xié)議可以分為4層:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、運輸層和應(yīng)用層。在數(shù)據(jù)傳輸時對應(yīng)各協(xié)議層附加了不同的頭部,如圖3所示。通信雙方在數(shù)據(jù)傳輸過程中,負載和包頭都交互了大量的信息。
圖3 TCP/IP協(xié)議數(shù)據(jù)包結(jié)構(gòu)Fig.3 Data packet structure of TCP/IP protocol
本文方法從建鏈階段雙方交互的數(shù)據(jù)出發(fā),流量切分粒度為會話,使用數(shù)據(jù)包中所有協(xié)議層的數(shù)據(jù),結(jié)合深度學(xué)習(xí)方法,識別加密流量。
基于建鏈信息的密數(shù)據(jù)流識別方法總體流程包括5個部分:(1)數(shù)據(jù)預(yù)處理,將流量數(shù)據(jù)按照會話進行切分,獲得每一次會話建鏈階段的數(shù)據(jù),去除類別無關(guān)的特征;(2)將建鏈階段的數(shù)據(jù)可視化;(3)針對加密流量識別任務(wù),構(gòu)建卷積神經(jīng)網(wǎng)絡(luò);(4)模型訓(xùn)練與調(diào)優(yōu),利用訓(xùn)練數(shù)據(jù)對卷積神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,逐步調(diào)優(yōu)參數(shù);(5)模型測試,利用測試數(shù)據(jù)對訓(xùn)練好的模型進行測試與評價,如圖4所示。
圖4 加密流量識別的整體流程Fig.4 Overall process of encrypted traffic identification
為了盡可能多地保存加密流量的特征,在數(shù)據(jù)預(yù)處理階段將網(wǎng)卡中獲得的原始流量切分成會話形式,并使用所有協(xié)議層的數(shù)據(jù),即整個數(shù)據(jù)包。訓(xùn)練數(shù)據(jù)中存在大量的非類別特征,這些特征應(yīng)當去除。非類別特征是指和特定樣本相關(guān),但和類別不相關(guān)的特征。例如,每個數(shù)據(jù)包都含有該次通信的IP地址、端口號和報文的唯一標識符等。由于生成訓(xùn)練數(shù)據(jù)時流量都由特定的連接產(chǎn)生,所以這些字段和每一次連接強相關(guān),但它們并不能反映流量的類別屬性。訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型時,模型將非類別特征和加密流量類型標簽之間的相關(guān)關(guān)系,極大地降低模型的泛化性。用隨機數(shù)代替這些字段的值可以去除這些分類別特征。
一般地,TCP數(shù)據(jù)包的非類別特征及位置如表1所示。數(shù)據(jù)預(yù)處理時,將每一個數(shù)據(jù)包中該位置的值替換成一個等長的隨機數(shù)。
表1 TCP數(shù)據(jù)包的非類別特征及其位置Table 1 Non?categorical features and their locationof TCP packets
加密流量預(yù)處理完畢后,將其轉(zhuǎn)化為灰度圖。處理步驟為將每個會話中的包依次排列。將每個包中二進制碼按照字節(jié)重新編碼,每個字節(jié)對應(yīng)灰度圖中像素值,重復(fù)這一過程直到選取1 024字節(jié),若所有的數(shù)據(jù)不足1 024字節(jié),則末端用0補足1 024字節(jié)。這樣就將流量數(shù)據(jù)轉(zhuǎn)化成了一維的像素序列,然后再將像素序列進行正方化,得到一張大小為32像素×32像素的灰度圖。圖5是流量數(shù)據(jù)轉(zhuǎn)化為灰度圖的過程。
圖5 流量文件生成灰度圖的過程Fig.5 Process of generating gray images from flow files
搭建卷積神經(jīng)網(wǎng)絡(luò)模型,其有8個可訓(xùn)練層:5個卷積層和3個全連接層,還有3個不可訓(xùn)練的池化層。圖6給出了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),其中輸入為灰度圖像,輸出為加密流量的類型,C1、C2、C3、C4、C5為卷積層,P1、P2、P3為池化層,F(xiàn)1、F2為全連接層。
圖6 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Structure of convolutional neural network
圖6所示的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的詳細參數(shù)如表2所示。Input表示神經(jīng)網(wǎng)絡(luò)的輸入,是由加密流量生成的灰度圖;Output表示神經(jīng)網(wǎng)絡(luò)的輸出,是加密數(shù)據(jù)的類別標簽;size為當前層神經(jīng)網(wǎng)絡(luò)的形狀;filter為池化層過濾器的形狀;ker為卷積核的形狀;stride為卷積核或過濾器移動的步長;relu表示該層用修正線性單元函數(shù)激活;dropout為神經(jīng)元失活的概率。
表2 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與參數(shù)Table 2 Structure and parameters of the neural network
卷積神經(jīng)網(wǎng)絡(luò)適用于分類任務(wù),每一類都應(yīng)有確定的訓(xùn)練數(shù)據(jù)集,并要求訓(xùn)練數(shù)據(jù)是完備的[17]。但是在流量識別任務(wù)問題中,需要在背景流量中識別出特定流量,背景流量也被作為一個類別標簽。假設(shè)網(wǎng)絡(luò)流量類的全體為集合U,是一個無限集;待識別流量的類別為集合D={TA,TB,…},D的元素個數(shù)由具體問題確定,D是一個有限集;而背景流量類的集合為B=U-D,|B|=|U-D|=∞,B也是一個無限集;所以在實際獲取訓(xùn)練數(shù)據(jù)集時,提取完備的背景流量數(shù)據(jù)是不可能的。于是提出一種近似完備方法,利用隨機數(shù)據(jù)對真實數(shù)據(jù)進行增強,以提升背景流量的“一般性”。實現(xiàn)方法為:在實際中盡量全面地選取種背景流量,得到集合BI;再隨機生成數(shù)據(jù)集BR,BR為隨機生成的大小為32像素×32像素的灰度圖;以BI∪BR作為最終的背景流量訓(xùn)練數(shù)據(jù)。圖4中的訓(xùn)練數(shù)據(jù)集在訓(xùn)練模型前應(yīng)對訓(xùn)練數(shù)據(jù)進行增強,如圖7所示。
圖7 利用隨機數(shù)據(jù)實現(xiàn)背景流量數(shù)據(jù)增強Fig.7 Background flow data enhancement by us?ing random flow data
數(shù)據(jù)來自真實環(huán)境中的流量,主要涉及兩類加密流量:Shadowsocks和V 2ray。Shadowsocks和V 2ray主要基于Socks5協(xié)議,它們使用中轉(zhuǎn)服務(wù)器實現(xiàn)數(shù)據(jù)傳輸。當瀏覽器訪問某個目標服務(wù)時,數(shù)據(jù)先轉(zhuǎn)發(fā)到本地代理客戶端,由本地代理客戶端加密后轉(zhuǎn)發(fā)到遠程代理服務(wù)器端,由遠程代理服務(wù)器端請求目標服務(wù),獲取應(yīng)答數(shù)據(jù)后,再原路返回到瀏覽器,其原理如圖8所示。Shadowsocks和V 2ray流量是目前使用最廣泛的加密代理協(xié)議,大量的非法連接建立在這些代理服務(wù)器之上。
圖8 Shadowsocks和v2ray的實現(xiàn)原理Fig.8 Realization principle of Shadowsocks and v2ray
數(shù)據(jù)集共有3個類(SV,SS,SB),2個加密數(shù)據(jù)類和1個背景流量數(shù)據(jù)類。表3描述了數(shù)據(jù)集的詳細信息。將數(shù)據(jù)集劃分為10等份,輪流選取其中9份為訓(xùn)練數(shù)據(jù),1份為測試數(shù)據(jù)進行實驗,最終結(jié)果為這10次實驗的平均值。
表3 數(shù)據(jù)集的詳細信息Table 3 Details of the data sets
實驗任務(wù)分為兩個:(1)驗證近似完備法的有效性,并確定隨機數(shù)據(jù)與真實數(shù)據(jù)的最佳比率R;(2)構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),依據(jù)第一個實驗確定的最佳比率R生成訓(xùn)練數(shù)據(jù),并訓(xùn)練得到密數(shù)據(jù)流識別模型,然后與基線方法進行比較。神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率取0.000 1,優(yōu)化方法為Adam優(yōu)化方法。
3.2.1 評價指標
通常采用準確率Acc(Accuracy),精確率Pre(Precision)和召回率Rec(Recall)來評價識別模型。對Shadowsocks和v2ray類流量的識別能力分開進行評價,當評價模型對某類流量的識別能力時,該類流量作為正類,其他流量類型作為負類。假定TP、FP、FN和TN分別是指正確分類為正樣本的數(shù)量、錯誤分類為正樣本的數(shù)量、錯誤分類為負樣本的數(shù)量和正確分類為負樣本的數(shù)量。各評價指標由以下公式計算得到
除了精度相關(guān)的評價指標,流量識別問題還應(yīng)考慮加密流量識別完成的時刻。流量識別問題通常涉及到“阻斷操作”,阻斷是指以第三方的身份強制終斷某一連接。早期識別指的是,在連接剛建立時,數(shù)據(jù)傳輸還沒開始或數(shù)據(jù)傳輸結(jié)束之前,就對其進行類型識別,這在實際應(yīng)用中有很重要的意義。早期識別并及時阻斷非法連接,能防止危害的持續(xù)與擴大,而數(shù)據(jù)傳輸結(jié)束或已傳輸大部分數(shù)據(jù)后的阻斷將失去意義,所以是否能進行早期識別也是評價流量識別模型的一個重要指標。
3.2.2 近似完備法的有效性驗證(實驗1)
利用含有隨機數(shù)據(jù)的數(shù)據(jù)集和不含有隨機數(shù)據(jù)的數(shù)據(jù)集進行分組實驗,設(shè)隨機產(chǎn)生的背景流量為數(shù)據(jù)集SR。對比實驗設(shè)置為:第0組實驗只有真實環(huán)境中采集到的背景流量;其他各組實驗中同時使用隨機數(shù)據(jù)和真實數(shù)據(jù),并成梯度設(shè)置隨機數(shù)據(jù)量與真實數(shù)據(jù)量的比率R。對比實驗中,除了隨機數(shù)據(jù)占比不同,其他部分均相同,訓(xùn)練得到多個模型,對比實驗設(shè)置如表4所示。最后在相同環(huán)境中對各模型進行測試。
3.2.3 與基線方法進行比較(實驗2)
文中用于對比的基線方法為:文獻[3]中基于端口號的識別方法和文獻[5]中基于深度包檢測的識別方法;文獻[7]提出的基于報文加權(quán)累積和檢驗的加密流量盲識別算法;文獻[9]提出的基于隨機森林的加密流量識別方法,該方法從會話中提取包級別的特征,并用這些特征對Shadowsocks流量識別進行研究。
在真實環(huán)境中采集數(shù)據(jù),加入隨機數(shù)據(jù)生成數(shù)據(jù)集,隨機數(shù)據(jù)與真實數(shù)據(jù)的比率采用實驗1確定的最佳比率,訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型并測試,與基線方法進行對比。實驗環(huán)境為Ubuntu16系統(tǒng),并配有1塊2080Ti圖像處理器,卷積神經(jīng)網(wǎng)絡(luò)在Tensorflow框架下搭建。
表4 實驗設(shè)置對比Table 4 Comparison of experiment settings
對比實驗中,訓(xùn)練數(shù)據(jù)集中隨機數(shù)據(jù)與真實數(shù)據(jù)的比率R不同,識別效果不同,圖9給出了R對識別效果的影響。從圖中發(fā)現(xiàn)隨著隨機數(shù)據(jù)占比的增大,識別準確率、精確率和召回率都呈現(xiàn)先升高后降低的變化趨勢,并且極值都出現(xiàn)在R=1/9附近。這說明實際采集的背景流量存在特征不全面的問題,模型無法有效地學(xué)習(xí)到各類別的特征邊界,導(dǎo)致后續(xù)識別中效果不好;加入隨機數(shù)據(jù)后,增強了背景流量的“一般性”,識別效果逐漸變好;但是隨機數(shù)據(jù)不能無限增加,隨機數(shù)據(jù)過量會導(dǎo)致背景流量的本質(zhì)特征被覆蓋,破壞了背景流量的“特殊性”,進而導(dǎo)致識別效果變差。
圖9 比率R對識別效果的影響Fig.9 Influence of R on recognition effect
當隨機數(shù)據(jù)和真實數(shù)據(jù)的比例為1/9時,表5和表6給出了其詳細實驗的結(jié)果和評價指標值。表5中標簽B、S和V分別表示背景流量、Shadowsocks流量和v2ray流量。表6中顯示加入隨機數(shù)據(jù)后,準確率、精確率和召回率最高分別提升了6.4%、9.0%和11.9%,實驗結(jié)果證明了加入隨機數(shù)據(jù)對于提升加密流量識別效果作用明顯。
表5 無隨機數(shù)據(jù)組和有隨機數(shù)據(jù)組中最優(yōu)例的實驗結(jié)果Table 5 Experiment results of the best examples in the random data group or no random data group
表6 兩組實驗的各項指標值Table 6 Index comparison of two experiments
由實驗1確定了隨機數(shù)據(jù)與真實數(shù)據(jù)的最佳比率在1/9附近,表7給出了當隨機數(shù)據(jù)與真實數(shù)據(jù)的比例為1/9時本方法與基線方法的對比結(jié)果。
表7 本文方法和基線方法對比結(jié)果Table 7 Compar ison of exper imental results between our method and the baseline method
表7中結(jié)果表明,本方法能顯著提高密數(shù)據(jù)流的識別效果。實驗結(jié)果顯示基于端口映射的方法因其匹配規(guī)則簡單,能很快反饋結(jié)果,但準確率很低,無法解決加密流量識別問題;加密流中數(shù)據(jù)包的特征不明顯使得深度包檢測無法實現(xiàn)加密流量的有效識別。而基于統(tǒng)計學(xué)和隨機森林的方法識別準確率有較大提升,但是它們需要整個連接的數(shù)據(jù),因而無法實現(xiàn)識別機制和管控機制的有效融合。本文方法直接從原始建鏈數(shù)據(jù)中提取特征,能最大限度地保留密數(shù)據(jù)的特征,并由于卷積神經(jīng)網(wǎng)絡(luò)的強大特征提取能力,使得模型能很好地學(xué)習(xí)到密數(shù)據(jù)流的類別特征,提高密數(shù)據(jù)流的識別效果?;诮ㄦ溞畔⒌淖R別方法,只需要連接初始化階段最前面的1 024字節(jié)數(shù)據(jù),當通信雙方交互的數(shù)據(jù)達到1 024字節(jié)時,就能開始識別流量類別,并且由于涉及的數(shù)據(jù)很小,計算速度很快,識別時間為0.1 ms,所以該方法具有早期識別特點。
本文提出了一種基于建鏈信息的密數(shù)據(jù)流識別方法。首先,將加密流量的所有數(shù)據(jù)包切分成會話形式,以單個會話作為一個樣本;然后截取會話數(shù)據(jù)的前1 024字節(jié),獲得會話連接的建鏈信息;再將這1 024字節(jié)大小的樣本轉(zhuǎn)換成大小32像素×32像素的灰度圖;最后利用卷積神經(jīng)網(wǎng)絡(luò)提取連建鏈階段流量數(shù)據(jù)的圖像特征,進行加密流量識別,并采用加入隨機數(shù)據(jù)的近似完備法進行數(shù)據(jù)增強,解決了背景數(shù)據(jù)空間無限大、實際數(shù)據(jù)集不完備的問題。最后在真實環(huán)境中進行了測試,結(jié)果表明該方法具有準確率高、速度快以及早期識別等優(yōu)點,該方法能很好地解決密數(shù)據(jù)流的識別問題,其早期識別優(yōu)勢具有實用意義,速度快具有實時性使其能夠用在骨干網(wǎng)絡(luò)管理中。