范耘程
(南京信息工程大學電子與信息工程學院,江蘇南京,210044)
近年來,移動互聯(lián)網(wǎng)行業(yè)迅速發(fā)展。根據(jù)中國互聯(lián)網(wǎng)絡信息中心(CNNIC)的第50次中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告顯示,截至2022年6月,我國網(wǎng)民規(guī)模為10.51億,互聯(lián)網(wǎng)普及率達74.4%?;ヂ?lián)網(wǎng)基礎建設全面覆蓋,用戶規(guī)模穩(wěn)步增加[1]。而隨著我國網(wǎng)絡安全法的完善以及網(wǎng)民隱私安全意識的加強,越來越多人的使用網(wǎng)絡流量加密技術(shù)來保證用戶的數(shù)據(jù)安全和隱私。
網(wǎng)絡流量是網(wǎng)絡協(xié)議的具體體現(xiàn)。VPN加密技術(shù)作為一種加密用戶通信并且隱藏用戶身份的方式,依靠隧道式的遠程通信加密技術(shù),正在廣泛地應用于互聯(lián)網(wǎng)生活中。來自美國一家網(wǎng)絡智能公司的報告[2]顯示,隨著新冠疫情的暴發(fā),人們在家工作,將會越來越多地使用VPN技術(shù)。但是,VPN作為一種流量加密技術(shù)為人們提供隱私安全和便利的同時,也因其隱秘性好,安全性高等特點不易被網(wǎng)絡管理所監(jiān)控,這給犯罪分子進行網(wǎng)絡攻擊、數(shù)據(jù)竊取等提供了便利。為此,本文提出了研究一種基于深度學習的VPN加密流量協(xié)議識別算法。首先,分別在不同代理協(xié)議下進行Wiresharek數(shù)據(jù)采集,并且在采集流量的過程中需要濾除掉非TCP的流量,再根據(jù)數(shù)據(jù)包的大小和數(shù)據(jù)包的到達時間生成圖像,進行卷積神經(jīng)網(wǎng)絡的訓練和測試。
隨著網(wǎng)絡加密技術(shù)的逐步提高,國內(nèi)外對于網(wǎng)絡流量加密技術(shù)的識別研究也在不斷推進。研究人員根據(jù)機器學習和深度學習進行深度流量分類。根據(jù)不同類型的輸入,這些研究方法又可以進一步分為以下兩類,一種研究是直接基于統(tǒng)計特征的方法,另一種是完全基于原始信息流量模型的方法。2016年,Draper-Gil G[3]依照與時間關聯(lián)的特性,選擇了C4.5決策樹和K近鄰算法,對VPN的流量識別取得了一定的成效,并且文獻公開了加密流量的數(shù)據(jù)集,為之后的VPN加密流量研究提供了便利。Wang等人提出了一種基于一維卷積神經(jīng)網(wǎng)絡的端到端方法,該方法將特征提取和分類器整合為一個框架,達到了不錯的效果[4]。以前的方法是對加密的流量進行了識別分類,但缺少對于VPN加密協(xié)議的統(tǒng)計分類,且方法也有局限性,有待進一步研究。
VPN是通過指通過隧道式加密傳輸或者匿名代理提供遠程數(shù)據(jù)代理服務的技術(shù)。常見且成熟的第三方VPN代理協(xié)議有Shadowsocks、SOCKS5、VMess等。
(1)SOCKS5代理協(xié)議:SOCKS5的代理目的是它在采用標準TCP/IP協(xié)議的通訊網(wǎng)絡系統(tǒng)的內(nèi)部各個網(wǎng)絡服務器層之間扮演起了其中一個數(shù)據(jù)中轉(zhuǎn)站的重要的角色,SOCKS5的協(xié)議層既也不再受依制于操作平臺上的其他任何的限制,也不管是運行在一個何種網(wǎng)絡協(xié)議層,它最終是處在其內(nèi)部外網(wǎng)層中的網(wǎng)絡服務器前端,能夠直接地訪問外部網(wǎng)絡層中的服務器,以確保通信更加保密。
(2)Shadowsocks代理協(xié)議:Shadowsocks協(xié)議是一種基于SOCKS5從而衍生出來的一種協(xié)議類型。它在基于SOCKS5的基礎上拆分為SS服務器(SS_Server)和SS客戶端(SS_Local)兩個部分以逃避網(wǎng)絡監(jiān)管。同時,重構(gòu)的報文數(shù)據(jù)加強了數(shù)據(jù)通信之間的隱秘性和安全性。
(3)VMess代理協(xié)議:VMess代理協(xié)議是由Google的開源V2Ray工具設計出的一種代理協(xié)議。它是一種基于TCP的無狀態(tài)協(xié)議,也是V2Ray的默認代理協(xié)議[5]。VMess的使用結(jié)合了inbound和outbound的概念,其清晰和直觀的界面表明顯示出了數(shù)據(jù)包的流動方向和方向,也是在使VMess使用的功能看起來更加的復雜和更強大的同時顯得清晰直觀而又并不混亂。
本文選用深度學習的卷積神經(jīng)網(wǎng)絡(CNN)來進行模型的訓練,并且用PyTorch作為模型架構(gòu)。隨著人工智能技術(shù)的發(fā)展,深度學習更多地被應用于加密流量的檢測環(huán)節(jié)中。與機器學習需要繁雜的特征提取和特征選擇不同,深度學習有著自動完成特征提取和學習訓練的優(yōu)勢。同時它能基于表征信息的神經(jīng)網(wǎng)絡學習方法,將大量的特征擬合為更高維度的綜合特征。所根據(jù)需要選擇的卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)包括:卷積層,下采樣層,全連接層。每層網(wǎng)絡有多個特征圖,通過卷積運算濾波器可以提取每個特征圖輸入的一種顯著的特征,每個特征圖有多個神經(jīng)元。本文選擇了LeNet-5風格的架構(gòu),為加密流量協(xié)議的識別達到好的效果。
圖1的神經(jīng)網(wǎng)絡通過接受處理后的圖像信息,進行多層卷積分別提取對象的特征信息,再分別用最大池化層提取主要特征,減少神經(jīng)網(wǎng)絡運算量,從而防止出現(xiàn)結(jié)果過擬合的情況。最后,為了保證可以實現(xiàn)分類器中的有效的特征識別表示工作,全連接層還將通過模型訓練中的分布式特征識別表示映射技術(shù)引入到樣本標記空間。
圖1 LeNet-5架構(gòu)
整個系統(tǒng)的流程包括了數(shù)據(jù)采集、數(shù)據(jù)預處理、流量信息提取以及加密協(xié)議分類這幾個部分。首先通過Wireshark自采集的數(shù)據(jù)包,再經(jīng)由卷積神經(jīng)網(wǎng)絡訓練學習,提取綜合特征,可以達到識別加密流量協(xié)議的效果。系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)概述
在整個系統(tǒng)進行模型核心訓練之前,需要采集到足夠多的網(wǎng)絡流量數(shù)據(jù)以支持卷積神經(jīng)網(wǎng)絡的模型訓練和測試。在采集流量時,用手機連接筆記本電腦的移動電腦熱點,然后通過這部手機通過VPN代理服務進行上網(wǎng)瀏覽,產(chǎn)生流量信息,再用筆記本的Wireshark流量捕獲軟件采集此時的流量,即可得到純粹的VPN流量。之后,在不同VPN協(xié)議的代理下,進行重復采集,直至所有協(xié)議流量信息都采集完畢,并標記流量來源。
對于Wireshark采集到的pcap包需要先進行信息處理。由于SOCKS5、Shadowsocks和VMess本質(zhì)上都是基于TCP傳輸層的加密流量代理協(xié)議,所以pcap包需要濾除掉非TCP協(xié)議的噪音流量和TCP的重傳包。再將數(shù)據(jù)包按照五元組的流形式重新編碼組成IP會話包形式,依次是源IP、源端口、目的IP、目的端口和傳輸協(xié)議。之所以本文把流量分成會話的形式,是因為Wang等人發(fā)現(xiàn)會話比流量有更多地交互信息,更適合加密信息的分類[4]。
我們知道,卷積神經(jīng)網(wǎng)絡的優(yōu)點在于輸入是圖像時有著不錯的表現(xiàn)。以圖像直接作為網(wǎng)絡的輸入,這樣就可以避免傳統(tǒng)識別算法中復雜的特征提取和數(shù)據(jù)重構(gòu)的過程,如網(wǎng)絡能夠自行抽取圖像的特征包括顏色、紋理、形狀及圖像的拓撲結(jié)構(gòu),在處理二維圖像的問題上,特別是識別位移、縮放及其他形式扭曲不變性的應用上具有良好的魯棒性和運算效率等[6]。
在所有的流量數(shù)據(jù)包進行了預處理工作之后,數(shù)據(jù)包中的每個字節(jié)對應于一個灰度像素值。例如,0x00表示黑色,0xff表示白色。經(jīng)由這樣,就可以將每一個流量數(shù)據(jù)包轉(zhuǎn)換為一個可視化的VPN流量數(shù)據(jù)灰度圖。神經(jīng)網(wǎng)絡可以自動從流量有效荷載中提取特征,每個方向的包每個長度的包的統(tǒng)計信息,從而提高模型泛化能力。特征包括了最大值、最小值、方差、標準差、平均值、偏度、峰度等。為了避免分類器在訓練過程中傾向于量級較大的特征,需要對特征進行歸一化處理。
本文選用的是LeNet-5模型架構(gòu)來進行加密流量協(xié)議的識別。首先將通過Wireshark采集到的數(shù)據(jù)包按照8:2的比例劃分為訓練集和測試集,再將訓練集的特征數(shù)據(jù)集樣本對卷積神經(jīng)網(wǎng)絡算法進行訓練,生成用于加密流量協(xié)議的識別模型。然后用測試集去測試已完成訓練的深度學習模型,最后由分類器對綜合特征轉(zhuǎn)化輸出,從而完成VPN加密流量協(xié)議的檢測識別,輸出并判斷識別分類結(jié)果。
我們使用PyTorch來構(gòu)建所需要的神經(jīng)網(wǎng)絡。為了驗證本文模型的有效性,將通過Wireshark采集到的不同的VPN協(xié)議Shadowsocks、SOCKS5、VMess以及不經(jīng)過VPN代理協(xié)議的情況分別處理成了圖3所示的圖像。
圖3 經(jīng)由不同代理協(xié)議的數(shù)據(jù)包轉(zhuǎn)化的灰度圖
之后再將圖像一次放入卷積神經(jīng)網(wǎng)絡進行訓練,當達到一個較高的訓練水準時,再拿出測試集進行測試,可以得到表1的數(shù)據(jù)結(jié)果。
表1 加密流量協(xié)議分類識別結(jié)果
在實驗中,有三個評價指標用來衡量我們模型的性能,分別是精確度、召回率和F1分數(shù)。精確度指正確預測為正的,占全部預測為正的比例。召回率指正確預測為正的,占全部實際為正的比例。F1分數(shù)指精確率和召回率的諧波平均值。F1分數(shù)我們定義為(1)。
可見,在無代理協(xié)議、Shadowsocks、SOCKS5以及VMess的加密協(xié)議下,卷積神經(jīng)網(wǎng)絡對于協(xié)議識別的準確度的F1分數(shù)可以達到一個不錯效果。
近年來,隨著VPN技術(shù)的快速發(fā)展和人們隱私安全意識的增長,加密流量識別的技術(shù)受到了學術(shù)界的廣泛討論。本文針對加密流量協(xié)議的識別比較少的情況,進行了實驗設計。整個系統(tǒng)的流程包括了數(shù)據(jù)采集、數(shù)據(jù)預處理、流量信息提取以及加密協(xié)議分類這幾個部分。首先分析了VPN代理協(xié)議的原理,再選用深度學習的模型從不同代理協(xié)議下的加密流量中提取對應的表征信息,并用這些對加密流量的協(xié)議進行分類識別。從實驗結(jié)果表明,本文提出的方法根據(jù)綜合流量特征可以較好地識別不同加密流量的代理協(xié)議。但這項工作仍有改進之處,數(shù)據(jù)集的不平衡不充分會導致,深度學習模型缺乏泛化能力,以及要進一步優(yōu)化提升算法,來提高識別的速度和準確率。