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