高 平,廣 暉,陳 熹,李光松
(1.河南省網(wǎng)絡密碼技術(shù)重點實驗室,鄭州 450001;2.鄭州大學 體育學院,鄭州 450004)
為維護網(wǎng)絡安全,互聯(lián)網(wǎng)服務商通常會在網(wǎng)關(guān)處的防火墻利用網(wǎng)絡審查技術(shù)來過濾網(wǎng)絡流量中的不良信息,如端口過濾、深度包檢測等技術(shù)。與此同時,一些惡意用戶和組織往往會使用各種各樣的方法手段規(guī)避網(wǎng)絡審查。目前,用戶主要使用安全代理、VPN 加密、匿名網(wǎng)絡3 種方式突破防火墻的封鎖,達到訪問受限資源的目的。這些技術(shù)對防火墻的穿透會造成用戶網(wǎng)絡行為無法識別、不可監(jiān)控的后果,如非法交易、傳播不良信息等。因此,識別和分類這些技術(shù)軟件產(chǎn)生的流量對網(wǎng)絡管理和網(wǎng)絡安全具有重要意義。
安全代理部署簡單、成本較低,更容易在互聯(lián)網(wǎng)用戶之間傳播,已經(jīng)成為惡意用戶突破防火墻的重要手段之一。目前Shadowsocks(SS)、V2Ray、Freegate、Ultrasurf 這4 種安全代理使用較為廣泛[1]。SS 和V2Ray 是開源的安全代理軟件,用戶可輕易在虛擬專用服務器(Virtual Private Server,VPS)上部署。通過VPS 對客戶端流量進行代理,達到穿透防火墻的目的。Freegate 和Ultrasurf 安全代理軟件有較大的受眾基數(shù),由專門的公司動態(tài)網(wǎng)和UltraReach對軟件進行定期的更新和維護。安全代理通過加密用戶的流量來規(guī)避防火墻的深度包檢測技術(shù)。因此,安全代理流量分類本質(zhì)上是加密流量分類問題。加密流量分類主要有基于端口的流量分類、基于深度包檢測的流量分類和基于統(tǒng)計特征的機器學習算法流量分類3 種方法。
基于端口的分類是早期傳統(tǒng)的流量分類方法,使用Internet Assigned Numbers Authority(IANA)[2]來分配知名端口號識別流量類型。然而,對于使用非標準端口的協(xié)議和應用,這種監(jiān)測技術(shù)則會失效。例如SS 和V2Ray 安全代理均可指定非標準端口,F(xiàn)reegate 和Ultrasurf 通過使用443 端口偽裝成TLS 流量來規(guī)避防火墻的端口過濾。
基于深度包檢測的分類方法融合了基于端口的分類方法。它不僅在端口過濾網(wǎng)絡流量,而且還會檢查流經(jīng)網(wǎng)關(guān)的流量載荷來匹配已知協(xié)議或應用的關(guān)鍵字段。目前較為流行的深度包檢測工具主要包括nDPI[3]、Libprotoident[4]、L7 fliter[5]、OpenDPI[6]4 種。文獻[7]對這些工具的性能進行了比較。然而,深度包檢測技術(shù)能夠識別的協(xié)議種類有限。由于SS 和V2Ray 通過雙方預共享口令生成加密密鑰,直接加密雙方的通信內(nèi)容,使得流量中分組有效載荷內(nèi)容被混淆成隨機字符串,深度包檢測技術(shù)不能對其進行過濾和識別。
基于側(cè)信道特征的機器學習算法分類通過提取網(wǎng)絡流量中分組側(cè)信道特征,如有效載荷長度、分組時間間隔、分組總數(shù)等,使用機器學習算法實現(xiàn)流量類型的區(qū)分。相比基于端口和深度包檢測的方法,該方法具有協(xié)議無關(guān)性,即不依賴有效載荷中協(xié)議的具體實現(xiàn),使用側(cè)信道特征對流量進行分類。
文獻[8]基于流中分組總數(shù)、有效載荷長度統(tǒng)計量(最大值、最小值、平均值、方差等)和分組時間間隔統(tǒng)計量等特征使用XGBoost 算法對SS 流量進行識別,但未將有效載荷長度直接作為分類特征,并且沒有充分利用流中載荷長度的變化。文獻[9]基于流中分組總數(shù)、同方向分組持續(xù)總時間、同方向分組長度總字節(jié)數(shù)等特征構(gòu)成3 000 維特征向量,使用隨機森林(RF)算法區(qū)分SS 流量。但使用的特征維度高,對于每一條流而言,并不一定具有多達3 000 維特征,特征向量會有大量填充。文獻[10]基于流中同方向分組長度總字節(jié)數(shù)和目的IP 分布等特征使用隨機森林(RF)等機器學習算法區(qū)分SS 流量,但未考慮分組時間間隔特征。文獻[11]基于流中分組長度平均值、分組總數(shù)、分組時間間隔等特征,使用XGBoost 算法區(qū)分SS 流量,但分組長度平均值并不能精確表征流量的特征變化。文獻[12-13]基于分組長度的統(tǒng)計量等特征使用機器學習算法對SS 安全代理流量進行區(qū)分。文獻[14]基于載荷內(nèi)容使用多種深度學習算法區(qū)分多種應用。但由于SS 和V2Ray 不進行協(xié)議的協(xié)商,載荷內(nèi)容被加密算法加密并直接傳輸,因此使用載荷內(nèi)容構(gòu)造特征向量會對分類造成混淆。文獻[15]基于分組長度和分組方向等特征,使用卷積神經(jīng)網(wǎng)絡(CNN)區(qū)分SS、V2Ray等流量。文獻[16]基于分組長度特征識別Freegate流量,但由于Freegate 版本的更新,該方法對更新后的Freegate 流量并不適用。
相比于上述文獻使用的特征,除使用流中分組總數(shù)、有效載荷長度的統(tǒng)計量、分組時間間隔特征外,流中單個分組的有效載荷長度和流量類型緊密相關(guān),也可以被用來構(gòu)建特征向量。本文將流中前n個有效載荷長度組合成有效載荷長度序列(Payload Length Sequence,PLS),來表征流量的載荷長度變化情況。從信號分析的角度出發(fā),將流中每一個分組表征為一個信號,該信號由有效載荷長度、分組時間間隔和分組方向構(gòu)成,從而可以將多個分組對應的信號進行合并構(gòu)成信號序列,作為分類特征向量。本文基于提取的流量側(cè)信道特征構(gòu)建特征向量,使用機器學習算法、深度學習算法進行訓練得到分類器,最終在測試集上使用分類器區(qū)分正常Web 瀏覽和4 種安全代理流量。本文使用的分類算法分別包括樸素貝葉斯(NB)、邏輯回歸(LR)、支持向量機(SVM)、隨機森林(RF)、XGBoost 5種機器學習算法和前饋神經(jīng)網(wǎng)絡多層感知機(MLP)、卷積神經(jīng)網(wǎng)絡(CNN)、長短期記憶(LSTM)網(wǎng)絡3 種深度學習算法。
SS 和V2Ray 一般由Socks5 協(xié)議代理本地Web流量。文獻[17]將加密流量通信分為非加密初始化階段和加密數(shù)據(jù)傳輸階段。非加密初始化階段協(xié)商雙方使用密碼算法、DH 值、證書等信息,加密數(shù)據(jù)傳輸階段完成數(shù)據(jù)的加密傳輸。但SS 和V2Ray 并沒有遵循此規(guī)則,雙方在發(fā)送數(shù)據(jù)之前未進行協(xié)商,而是直接基于雙方預共享密鑰生成加密密鑰,對本地代理和服務器代理之間的數(shù)據(jù)進行加密封裝,如圖1所示。
圖1 SS 和V2Ray 通信流程Fig.1 Communication procedure of SS and V2Ray
Freegate 和Ultrasurf 的工作原理與SS、V2Ray 不同,不能直接與代理服務器傳輸數(shù)據(jù)。首先通過DNS 解析獲取服務器IP,之后與代理服務器進行協(xié)商并建立連接,建立連接后與代理服務器進行數(shù)據(jù)傳輸,如圖2 所示。
圖2 Freegate 和Ultrasurf 通信流程Fig.2 Communication procedure of Freegate and Ultrasurf
Freegate有A、F、M 3種通道,通過測試發(fā)現(xiàn)A 通道和F 通道已經(jīng)被防火墻封鎖,目前M 通道可以正常使用。A 通道使用內(nèi)容分發(fā)網(wǎng)絡(Content Delivery Network,CDN)隱藏代理服務器真實IP,使用TLS 建立連接后使用UDP 傳輸數(shù)據(jù)。與A 通道不同,F(xiàn) 通道使用TLS 傳輸數(shù)據(jù),但目前F 通道不穩(wěn)定。除使用CDN隱藏代理服務器真實IP 地址外,M 通道建立連接和數(shù)據(jù)傳輸均使用TLS 進行流量偽裝,穩(wěn)定性較好。本文分析M 通道協(xié)商時產(chǎn)生的TLS 流量。
與Freegate 的M 通道相似,Ultrasurf 首先通過CDN 隱藏代理服務器真實IP 地址,然后使用TLS 建立連接并傳輸數(shù)據(jù)。
本文以雙向流(Bi-flow)為研究對象,設:主機A的IP 為IPA,端口為PortA;主機B 的IP 為IPB,端口為PortB;傳輸層協(xié)議號為Proto。在同一會話中通信雙方的IP 地址、端口號以及傳輸層協(xié)議號不變并且一直持續(xù)到會話結(jié)束。從新的會話建立開始,稱具有相同五元組(IPA,PortA,IPB,PortB,Proto) 或者(IPB,PortB,IPA,Proto)并持續(xù)到會話結(jié)束的分組集合為雙向流:
其中:hi是流中第i個分組的首部,包括以太網(wǎng)層、IP 層、傳輸層的信息;pi是第i個分組的應用層載荷。
由于深度包檢測分類方法難以對加密流量有效載荷的關(guān)鍵字段進行匹配,對加密流量的分類性能較差,并且基于SS 和V2Ray 在通信時的特點,整個通信過程的數(shù)據(jù)均被加密算法封裝,在無協(xié)議的非加密初始化階段,使用有效載荷內(nèi)容作為分類特征,容易造成混淆。因此,本文提取與有效載荷內(nèi)容無關(guān)的流量側(cè)信道特征,使用機器學習算法和深度學習算法構(gòu)建分類器,對安全代理流量進行識別和分類。
本文首先收集真實的Web 瀏覽和安全代理流量,將流量存儲在pcap 或pcapng 文件中。之后對流量數(shù)據(jù)進行預處理,將具有相同五元組的分組組合成雙向流(Bi-flow)。提取雙向流PLS 序列、分組總數(shù)、分組時間間隔、載荷長度統(tǒng)計量、信號序列側(cè)信道特征,構(gòu)建特征向量?;跇?gòu)建的特征向量,使用機器學習和深度學習算法得到流量分類器。最后使用這些分類器在測試集上進行標簽預測,并評估不同分類器的性能?;趥?cè)信道特征的流量分類框架如圖3 所示。本文處理流量和提取特征的工具已在Github 上公開[18]。
圖3 基于側(cè)信道特征的流量分類框架Fig.3 Traffic classification framework based on side-channel feature
文獻[14,19]使用有效載荷內(nèi)容作為特征向量進行流量分類,但考慮到SS 和V2Ray 的流量在通信時沒有非加密初始化階段,整個通信過程被加密算法封裝,將有效載荷內(nèi)容作為分類特征會降低分類器的性能。本文使用NIST 檢測標準說明了SS 和V2Ray 的有效載荷內(nèi)容均被加密,難以進行區(qū)分。
NIST[20]隨機性檢測標準是美國國家標準與技術(shù)研究院(National Institute of Standards and Technology,NIST)提出用來檢測二元比特序列隨機性的方法集合,其中包含15 種隨機性檢測方法。本文使用單比特頻數(shù)檢驗、塊內(nèi)頻數(shù)檢驗、最大1 游程檢驗、近似熵檢驗、累加和檢驗5 種檢驗方法對SS 和V2Ray 流量載荷內(nèi)容進行分析,使用開源代碼[21]計算檢驗值,其中塊內(nèi)頻數(shù)檢驗、最大1 游程檢驗選取的參數(shù)如表1 所示,其他檢驗使用代碼默認參數(shù)。
表1 NIST 標準參數(shù)選取Table 1 Selection of NIST standard parameters
抽取SS 和V2Ray 各50 條流,通過截取流中前80 Byte 有效載荷,使用NIST 隨機性檢測標準對SS和V2Ray 的通信數(shù)據(jù)隨機性進行度量,表2 給出了每種檢驗值的平均值。
表2 檢驗標準平均值Table 2 Average of test standard
在NIST 隨機性檢測標準中,將檢驗值與P值比較用來判定測試數(shù)據(jù)是否為隨機產(chǎn)生的。當檢驗值大于P值時測試數(shù)據(jù)被認為是隨機的。本文取P值為0.01,表示序列被認為是隨機序列的置信度為99%。通過比較,SS 和V2Ray 流量均為加密流量,但是載荷的檢驗值接近,難以區(qū)分。因此,需要通過提取和載荷內(nèi)容無關(guān)的并且有區(qū)分度的側(cè)信道特征表征安全代理流量,進而對其進行識別和分類。
定義流f中第i個分組為pkti,其有效載荷為pi,有效載荷長度為l(pi)。對于流中前n個有效載荷長度不為0 的分組可定義有效載荷長度序列(Payload Length Sequence,PLS):
對于流中前n個有效載荷長度不為0 的分組,定義第ik-1個分組和第ik個分組時間間隔為tk,則分組時間間隔組成的序列如下:
其中:t0表示流中第1 個有效載荷長度不為0 的分組和TCP 三次握手的最后1 個分組的時間間隔。
使用有效載荷長度構(gòu)建PLS 序列,可以表征流量載荷長度的變化。為了從整體上對流量進行表征,流中有效載荷長度統(tǒng)計量包括最大值、最小值、平均值、方差、中位數(shù)、上四分位數(shù)、下四分位數(shù)以及分組總數(shù)特征被提取作為特征向量的一部分。
基于上述提取的側(cè)信道特征,根據(jù)算法1 構(gòu)建機器學習算法使用的特征向量F。
從信號處理的角度出發(fā),流f可被看作信號源,流中的分組pkti可被看作i時刻發(fā)出的信號Si。Si由分組pkti的有效載荷長度、分組時間間隔、分組方向構(gòu)成,定義如下:
其中:t1=0,dir(pkti)定義如下:
給定要處理流中的分組個數(shù)n,對每一時刻信號Si進行匯總,構(gòu)成流的信號序列特征向量:
使用信號序列對網(wǎng)絡流量進行表征,作為1DCNN 和LSTM 深度學習算法的輸入,對安全代理流量進行分類。
本文使用樸素貝葉斯(NB)、邏輯回歸(LR)、支持向量機(SVM)、隨機森林(RF)、XGBoost 5 種機器學習算法對安全代理流量進行分類,利用算法1 得到的特征向量F組成樣本集合進行訓練,并得到分類器。在測試集上,比較不同n值下的不同分類器性能,最終得到最佳分類器。
對于不同的n值,PLS 長度不同,一般來說,選取流中的分組越多,分類器的性能越優(yōu)越,當選取的分組總數(shù)達到一定數(shù)量時,分類器的性能會趨于穩(wěn)定。
在訓練和測試之前首先對數(shù)據(jù)進行Shuffle 操作,打亂樣本順序,訓練集和測試集比例為3∶1。除了NB 算法外,在訓練階段使用GridSearch 算法進行參數(shù)搜索,并使用4 折交叉驗證。
本文使用MLP、1D-CNN、LSTM 3 種深度學習算法識別和區(qū)分安全代理流量。
MLP 架構(gòu)中的隱藏層如表3 所示。MLP 的輸入特征向量為F=(PLS,T,pkt_cnt,S),其中PLS 和T的長度為8。在每一層隱藏層后加入批量歸一化(BN)層提高模型的收斂速度,并防止過擬合。
表3 MLP 隱藏層結(jié)構(gòu)Table 3 Structure of MLP hidden layers
CNN已經(jīng)在機器視覺等多個領域內(nèi)有了較成熟的應用。文獻[14,19]基于流中分組有效載荷,使用2D-CNN深度學習算法對加密流量進行分類。根據(jù)上文分析,由于SS和V2Ray均使用加密算法對數(shù)據(jù)進行封裝,其流量分組中的載荷均為隨機字符串,將載荷的隨機字符串加入到分類特征向量中,會降低分類器對SS和V2Ray的分類能力。除分組有效載荷內(nèi)容特征外,可使用的特征包括有效載荷長度、分組時間間隔、分組方向等流量的測信道特征。對于2D-CNN算法而言,由于卷積核和池化操作均被用來對特征進行降維,使用側(cè)信道特征構(gòu)成的特征向量F=(PLS,T,pkt_cnt,S)特征維度小,不適合使用2D-CNN 進行訓練。近年來,1D-CNN 逐漸被用于語音識別領域[22-23]。將信號序列SSig=(S1,S2,…,Sn)作為1D-CNN的輸入,可避免特征維度小而難以進行訓練的問題,其中序列的長度n=30。1D-CNN 框架如圖4所示。
圖4 1D-CNN 整體架構(gòu)Fig.4 Overall architecture of 1D-CNN
第1 次卷積后使用最大池化層,第2 次卷積后使用均值池化層,每個卷積層和全連接層具體參數(shù)如表4 和表5 所示。
表4 卷積層具體參數(shù)Table 4 Specific parameters of convolutional layers
表5 全連接層具體參數(shù)Table 5 Specific parameters of full connection layers
LSTM 是專門用來處理時序特征數(shù)據(jù)的神經(jīng)網(wǎng)絡。將信號序列SSig=(S1,S2,…,Sn)作為模型輸入,對安全代理流量進行分類,其中n=30。其整體架構(gòu)如圖5 所示,其中隱藏層狀態(tài)為64,在LSTM 隱藏層后加入了一層全連接層,其神經(jīng)元個數(shù)為64,并使用ReLU 激活函數(shù)。最終使用Softmax 分類器達到分類的目的。LSTM 整體架構(gòu)如圖5 所示。
圖5 LSTM 整體架構(gòu)Fig.5 Overall architecture of LSTM
在訓練和測試深度學習算法的分類器時,首先進行Shuffle 操作打亂樣本順序,訓練集和測試集比例為3∶1。3 種算法的Batch_Size大小為64,并使用Adam 優(yōu)化算法。
通過Selenium[24]自動爬取ChinaZ[25]排名前840的網(wǎng)頁,構(gòu)造正常的Web 瀏覽流量、SS 流量、V2Ray流量。通過Bat 腳本自動開啟Freegate、Ultrasurf 代理軟件,構(gòu)造客戶端連接代理服務器的流量。所有的網(wǎng)絡流量均存儲于pcap 或pcapng 文件中,數(shù)據(jù)集總量為10.13 GB,包含109 237 條流。各種類型流量在數(shù)據(jù)集中具體分布如表6 所示。
表6 流量分布Table 6 Flow distribution
機器學習算法使用scikit-learn 0.22.2[26],深度學習算法使用Tensorflow 2.0[27]搭建。
不同的安全代理具有不同的流量特征,從有效載荷長度角度來看,不同安全代理的有效載荷長度具有不同的分布,圖6~圖10 分別列出正常Web 瀏覽、SS、V2Ray、Freegate、Ultrasurf 流中第1 個分組有效載荷長度的分布。
圖6 Web 載荷長度分布Fig.6 Payload length distrubution of Web
圖7 SS 載荷長度分布Fig.7 Payload length distrubution of SS
圖8 V2Ray 載荷長度分布Fig.8 Payload length distrubution of V2Ray
圖9 Freegate 載荷長度分布Fig.9 Payload length distrubution of Freegate
圖10 Ultrasurf 載荷長度分布Fig.10 Payload length distrubution of Ultrasurf
正常的Web 瀏覽流量和SS 流量,除區(qū)間[50~100]外,對于其他區(qū)間的載荷長度分布,SS 的有效載荷長度均大于正常Web 瀏覽流量,可發(fā)生載荷分布平移的現(xiàn)象。這種現(xiàn)象對Ubuntu16.04下的sslibev 軟件更為明顯。通過結(jié)合公開的SS 協(xié)議設計[28]和源碼審計[29]發(fā)現(xiàn),發(fā)生載荷長度平移現(xiàn)象是因為SS 協(xié)議特殊的封裝方式造成的。以ss-Libev 為例,SS 協(xié)議一般分為SS 請求和SS 數(shù)據(jù)傳輸,用戶在訪問網(wǎng)站時,首先會構(gòu)造SS 請求。SS 請求使用如圖11 所示格式將需要訪問的目的地址傳遞給遠端服務器。
圖11 SS 請求格式Fig.11 Request format of SS
在圖11 中,ATYP 代表地址類型,一般為IP 和域名2 種地址類型。從客戶端角度分析,如果訪問的網(wǎng)站有其對應的IP 地址,則使用IP 地址請求。若沒有,則會將域名填入SS 請求消息中??蛻舳说却线m的時機將請求發(fā)送給遠端服務器,讓遠端服務器進行地址解析。在發(fā)送之前,客戶端會對SS 請求進行加密,如圖12 所示,其中,灰色部分表示數(shù)據(jù)加密,PADDING 是為了對齊加密算法密鑰長度進行的數(shù)據(jù)填充。
圖12 加密后的SS 請求Fig.12 Encrypted request of SS
SS 本地代理通過Socks5 協(xié)議收到瀏覽器發(fā)來的數(shù)據(jù),對數(shù)據(jù)加密封裝后和SS 請求一起發(fā)往SS服務器,如圖13 所示。
圖13 SS 數(shù)據(jù)發(fā)送Fig.13 Data transmission of SS
V2Ray 安全代理使用VMess 協(xié)議在客戶端和服務器之間進行通信。V2Ray客戶端消息格式如圖14所示。CMD 的具體格式如圖15 所示。
圖14 VMess 客戶端消息格式Fig.14 Client message format of VMess
圖15 CMD 具體格式Fig.15 Specific format of CMD
在圖15 中,IV、KEY 為16 Byte,Other 字段包括選項、余量、加密方式、指令、端口、地址類型、地址、隨機值、校驗,至少18 Byte。其中余量字段指定了隨機值字段的長度,隨機值字段代表隨機填充的數(shù)據(jù)。通過隨機填充,V2Ray 重塑了所封裝流量的分組有效載荷長度分布。因此,V2Ray 載荷長度也會產(chǎn)生平移現(xiàn)象。
由于Freegate 和Ultrasurf 的TLS 流量中的密碼套件和拓展字段與正常的TLS 流量有差異,因此這些流量的有效載荷長度和正常的Web 瀏覽具有一定的區(qū)分度。
3.3.1 評價指標
為了評估分類器的性能,本文使用準確率、宏精確率、宏召回率以及宏F1 值4 個指標,最終給出模型分類結(jié)果的混淆矩陣。以上指標的計算公式如下:
其中:TPi是每一類正確預測的樣本;Pi是每一類別的精確率;Ri是每一類別的召回率;N是測試樣本總數(shù);n為類別總數(shù)。
3.3.2 深度包檢測
本文運用4 種開源深度包檢測工具進行測試,檢視這些工具對安全代理流量識別的能力。檢測工具具體信息如表7 所示。
表7 深度包檢測工具Table 7 Inspection tools of deep packet
由于SS 和V2Ray 對流量的加密封裝,這4 種深度包檢測工具均不能識別SS 和V2Ray 流量。Freegate 和Ultrasurf 均被識別為TLS 流量。深度包檢測工具主要是通過內(nèi)置的簽名庫進行字段匹配,若沒有相應的簽名匹配則不能識別流量的種類,并且容易對Freegate 和Ultrasurf 的TLS 偽裝流量造成誤報。因此,防火墻使用深度包檢測方法不能有效過濾安全代理流量。
3.3.3 機器學習算法
NB、LR、SVM、RF 以及XGBoost 5 種機器學習算法以F=(PLS,T,pkt_cnt,S)作為特征向量對4種安全代理流量進行識別和分類。在不同PLS 長度下,圖16 和圖17 分別展示了5 種算法準確率和F1 值的變化。
圖16 機器學習算法準確率Fig.16 Accuracy of machine learning algorithms
圖17 機器學習算法F1 值Fig.17 F1-score of machine learning algorithms
從圖16 和圖17 可以看出:使用XGBoost 和RF 構(gòu)建的分類器均能夠獲得良好的分類性能,并且XGBoost的準確率比RF平均高1.21%,F(xiàn)1值平均高1.2%。當PLS長度大于3時,XGBoost和RF的分類器性能趨于穩(wěn)定。當PLS 長度為8 時,XGBoost 的準確率為98.4%,F(xiàn)1 值為98.36%。相比于NB、LR、SVM,使用屬于集成學習的XGBoost 和RF 算法性能有明顯提升。圖18 給出了PLS 長度為8 時,XGBoost 的分類混淆矩陣。
圖18 XGBoost 混淆矩陣Fig.18 Confusion matrix of XGBoost
3.3.4 深度學習算法
前饋神經(jīng)網(wǎng)絡使用PLS 長度為8 時的特征向量F=(PLS,T,pkt_cnt,S)作為輸入。1D-CNN 和LSTM使用構(gòu)建的信號序列SSig=(S1,S2,…,S30)分別對4 種安全代理流量進行識別和區(qū)分。算法的準確率和損失隨輪數(shù)(Epoch)增加的變化趨勢分別如圖19 和圖20 所示。從圖19 和圖20 可以看出:與MLP 和LSTM 算法相比,1D-CNN 算法在訓練時的準確率和損失隨著輪數(shù)的增加分別在平穩(wěn)地增加和減少。最終相比分類器在測試集上的性能,1D-CNN 算法的性能最優(yōu)越。1D-CNN 算法的分類混淆矩陣如圖21所示。
圖19 準確率變化趨勢Fig.19 Change trend of accuracy
圖20 損失變化趨勢Fig.20 Change trend of loss
圖21 1D-CNN 混淆矩陣Fig.21 Confusion matrix of 1D-CNN
3.3.5 結(jié)果對比
從分類器性能分析可以看出,在5 種機器學習算法中,XGBoost算法性能最優(yōu)越。在3 種深度學習算法中,1D-CNN算法性能最優(yōu)越。表8對比了RF、XGBoost、LSTM 以及1D-CNN 算法在測試集上的性能。
表8 各算法性能對比Table 8 Performance comparison of each algorithm %
從表8 分析可以看出:XGBoost算法的性能是最優(yōu)的,與1D-CNN 算法相比較,準確率、精確率、召回率和F1 值分別提高了1.33、1.30、1.47、1.40 個百分點。
文獻[8-12]分別從不同的特征角度對SS 流量進行區(qū)分,除使用載荷統(tǒng)計量、分組總數(shù)表征流量整體的特征外,本文提取了反映流量特征變化的PLS 序列和信號序列,利用序列中特征的不同分布能夠獲得更好的性能。性能結(jié)果對比如表9 所示。
表9 不同算法識別SS 流量方法的性能對比Table 9 Performance comparison of different algorithms for identifying SS traffic %
文獻[15]運用2D-CNN 對SS 和V2Ray 流量進行區(qū)分,當訓練輪數(shù)達到5 000 時,準確率達到93.3%;本文使用1D-CNN 在訓練輪數(shù)達到500 時,準確率達到98.22%,計算開銷更小。
本文根據(jù)流的不同側(cè)信道統(tǒng)計特征,提出一種基于側(cè)信道特征的安全代理流量分類方法。通過構(gòu)建特征向量對安全代理流量進行表征,分別使用5 種機器學習算法和3 種深度學習算法識別和區(qū)分安全代理流量。實驗結(jié)果表明,相比深度包檢測方法,該方法使用機器學習和深度學習算法,避免了關(guān)鍵字段匹配技術(shù)的缺陷,提高了分類性能。在本文使用的分類算法中,XGBoost 算法的性能最優(yōu)越,與其他算法使用特征獲得的分類器性能相比,本文提取與載荷內(nèi)容無關(guān)的側(cè)信道特征表征載荷長度變化,區(qū)分安全代理流量,達到較好的分類效果。下一步將對Lantern、Trojan、賽風等安全代理軟件進行分類,加強防火墻的網(wǎng)絡審查能力,以彌補深度包檢測技術(shù)的不足。