唐舒燁,程光,4,蔣泊淼,陳子涵,郭樹一
〔1.東南大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,江蘇南京 211189;2.網(wǎng)絡(luò)空間國際治理研究基地(東南大學(xué)),江蘇南京 211189;3.網(wǎng)絡(luò)通信與安全紫金山實(shí)驗室,江蘇南京 211111;4.教育部計算機(jī)網(wǎng)絡(luò)和信息集成重點(diǎn)實(shí)驗室(東南大學(xué)),江蘇南京 211189〕
虛擬專用網(wǎng)(Virtual Private Network,VPN)技術(shù)作為加密網(wǎng)絡(luò)流量的主要使用技術(shù)之一,依靠加密隧道等手段,向用戶提供便利、隱秘的遠(yuǎn)程訪問等操作。然而,被VPN工具掩蓋下的流量,失去了原有流量的報文頭部信息、流量側(cè)信道特征信息,也給網(wǎng)絡(luò)監(jiān)管帶來了新的挑戰(zhàn)。
因此,針對VPN加密流量測量分析已經(jīng)刻不容緩。本文對使用V2Ray工具的VPN加密流量信息熵分布特性進(jìn)行研究,提出了一種基于分段熵分布的VPN加密流量檢測與識別方法,實(shí)現(xiàn)VPN加密流量的檢測與識別,加強(qiáng)對VPN流量的有效監(jiān)管。
目前,主流的加密流量檢測識別技術(shù)一般是根據(jù)加密流量數(shù)據(jù)均勻隨機(jī)分布[1]的特點(diǎn)進(jìn)行研究。而現(xiàn)有專門針對VPN流量的研究,則大多基于Gerard Draper-Gil提供的ISCX VPN-nonVPN公開數(shù)據(jù)集[2]展開。
借助于該公開數(shù)據(jù)集,Bagui Sikha[3]和王琳[4]使用了6種傳統(tǒng)機(jī)器學(xué)習(xí)分類模型進(jìn)行檢測。同時,一些深度學(xué)習(xí)[5]方法也被運(yùn)用于VPN流量檢測識別研究,如基于注意力機(jī)制的長短期記憶網(wǎng)絡(luò)[6](Attention-based Long Short-Term Memory)、膠囊神經(jīng)網(wǎng)絡(luò)模型[7](Capsule Neural Networks)、立體變換神經(jīng)網(wǎng)絡(luò)[8](Stereo Transform Neural Network)等。然而,現(xiàn)有的VPN加密流量識別方法拘泥于機(jī)器學(xué)習(xí)方法的改進(jìn)和應(yīng)用,并未針對流量本身特性進(jìn)行研究。
目前,主流使用的VPN工具是V2Ray工具,V2Ray工具使用私有協(xié)議VMess實(shí)現(xiàn)數(shù)據(jù)的隨機(jī)化加密傳輸,VMess協(xié)議是一種基于TCP協(xié)議的無狀態(tài)協(xié)議,協(xié)議本身沒有握手過程。然而,普通的加密流量在傳播過程中包含協(xié)議握手和數(shù)據(jù)傳輸兩個過程,其中協(xié)議握手過程通常存在隨機(jī)性較低的明文字段,包含未加密的雙方通信協(xié)商的參數(shù)及公鑰信息;加密數(shù)據(jù)傳輸過程中的報文內(nèi)容主要是加密后的數(shù)據(jù)以及頭部少量的會話標(biāo)識、加密數(shù)據(jù)長度等信息,也存在有少量不可或缺的明文頭部。
鑒于此,VPN加密流量的檢測識別可以根據(jù)VMess協(xié)議下VPN加密流量呈現(xiàn)高度均勻隨機(jī)分布,且不含明文頭部的特點(diǎn),圍繞VPN流量的信息熵分布特性展開研究。
信息熵(Entropy)是反映能量分布均勻程度的測度。給定一個概率分布:
其包含元素的集合為:
則該分布 的熵可以表示為:
然而在實(shí)際需求中,需要在欠采樣條件下利用熵的估計值實(shí)現(xiàn)對目標(biāo)數(shù)據(jù)的隨機(jī)性的準(zhǔn)確判斷以提高識別效率。因此本文引入N-截斷熵的概念,N-截斷熵被定義為根據(jù)概率分布P產(chǎn)生的所有長度為P的樣本序列的熵的平均值,當(dāng)P為均勻分布U時,可以得到長度為N的隨機(jī)序列的N-截斷熵為:
VPN加密流量加密化程度整體較高,因此可以針對VPN流量報文中的高熵低熵區(qū)域進(jìn)行劃分,以大小為N的滑動窗口的形式以固定步長τ在流序列中遍歷每一窗口內(nèi)序列的熵值,當(dāng)滑動窗口遍歷完流序列時,對每個序列分段計算其有效載荷。接著,本文依據(jù)N-截斷熵理論對高熵區(qū)域的判別原則,對每個序列分段的有效載荷進(jìn)行判定。根據(jù)蒙特卡洛算法,通過對多組長度為N的隨機(jī)字段求其發(fā)現(xiàn),的取值符合正態(tài)分布,絕大部分的值在的區(qū)間范圍內(nèi),為標(biāo)準(zhǔn)偏差,以此進(jìn)行高熵區(qū)域的判別,從而將序列分段標(biāo)記為高熵或低熵區(qū)域,接著研究其分布情況,以此作為單條流量報文的流量特征。本文的流量特征是報文數(shù)據(jù)熵值特征而不是具體的報文數(shù)據(jù),不存在特定報文序列檢測,同時也不受數(shù)據(jù)包時空特性影響,具有方法上的普適性。
在對VPN加密流量的高熵低熵區(qū)域分布情況進(jìn)行研究之后,采用膠囊神經(jīng)網(wǎng)絡(luò)模型(CapsNet)進(jìn)行VPN加密流量檢測識別。常見的神經(jīng)網(wǎng)絡(luò)大多使用數(shù)據(jù)包空間特征或是時間序列特征進(jìn)行加密流量檢測,而忽視了報文數(shù)據(jù)內(nèi)部的相對位置,如前文提及的高熵低熵區(qū)域分布的位置特征等。膠囊神經(jīng)網(wǎng)絡(luò)正可以彌補(bǔ)這一缺陷,它使用向量代替標(biāo)量作為神經(jīng)單元,向量可以有效利用流量特征之間的邏輯關(guān)系,學(xué)習(xí)流量特征的屬性,尤其是VPN加密流量分段熵之間的位置與順序關(guān)系等。且與卷積神經(jīng)網(wǎng)絡(luò)相比,膠囊神經(jīng)網(wǎng)絡(luò)可以有效減少學(xué)習(xí)所需的訓(xùn)練數(shù)據(jù)量。因此,膠囊神經(jīng)網(wǎng)絡(luò)更適合于VPN加密流量檢測與識別。
基于膠囊神經(jīng)網(wǎng)絡(luò)的VPN加密流量檢測識別方法首先對前文的結(jié)構(gòu)化流量數(shù)據(jù)特征進(jìn)行提取,并統(tǒng)一轉(zhuǎn)換成可供膠囊神經(jīng)網(wǎng)絡(luò)模型使用的特征矩陣文件,然后對特征矩陣執(zhí)行多次卷積運(yùn)算和加權(quán)運(yùn)算,生成多個子向量,其中向量長度表示VPN加密流量存在的概率,向量方向表示各實(shí)例化的參數(shù),此時每個子向量即是一個子膠囊神經(jīng)單元,同時每個子向量選擇一個上層節(jié)點(diǎn)作為父膠囊神經(jīng)單元。
3.腹痛的視覺模擬評分法(VAS):使用視覺模擬評分量表判定腹痛程度,0分為無痛,1~3分為輕度疼痛,4~6分為中度和重度疼痛(陣發(fā)性疼痛4分,持續(xù)性疼痛5分,持續(xù)性加重的疼痛6分),逐漸劇烈的疼痛且無法忍受7~10分。
接著該方法通過動態(tài)路由協(xié)議,將子膠囊神經(jīng)單元的預(yù)測結(jié)果在向量網(wǎng)絡(luò)結(jié)構(gòu)中向上表征并傳遞給父膠囊神經(jīng)單元,最終隨著路由機(jī)制的不斷迭代,將所有子向量封裝成一個高維向量,由歸一化的Softmax回歸模型分類器對高維向量進(jìn)行VPN加密流量識別分類,并輸出識別分類結(jié)果。該方法可以通過增加卷積層數(shù)與調(diào)整動態(tài)路由協(xié)議迭代次數(shù)的方式進(jìn)行膠囊神經(jīng)網(wǎng)絡(luò)模型調(diào)優(yōu),有效提高流量識別分類準(zhǔn)確率。
實(shí)驗所使用的膠囊神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,分為輸入層、預(yù)處理層、第一膠囊層(Primary Capsules)與第二膠囊層(Digit Capsules)。其中,輸入層為K維特征向量,預(yù)處理層使用卷積核大小為1的1-d卷積層對輸入層輸入的K維向量進(jìn)行處理,得到有個通道的張量,并將得到的輸出張量作為第一膠囊層的輸入。第一膠囊層使用個卷積大小為1的1-d卷積層將輸入張量從個通道壓縮到個通道,得到組通道數(shù)為的張量并將其進(jìn)行合并,最終得到個長度為的膠囊,并使用非線性壓縮函數(shù)squash對這些膠囊進(jìn)行處理。完成后使用動態(tài)路由算法(迭代輪數(shù)為L)將第一膠囊層得到的個膠囊映射到第二膠囊層中,第二膠囊層一共包括C個長度為的膠囊,其中C為最終分類的類別數(shù)量,最終輸出每一個類別的分類結(jié)果。
圖1 膠囊神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
實(shí)驗所用機(jī)器CPU為i7-6700HQ,GPU為GTX1060,軟件環(huán)境Python版本為py3.7,Pytorch版本為15.1。
為研究VPN報文與普通加密報文的高熵與低熵區(qū)域劃分差異,以大小為32B的滑動窗口的形式以固定步長32B在每一條流量數(shù)據(jù)中遍歷每一窗口內(nèi)序列的熵值,即N=τ=32,此時。使用蒙特卡洛算法對標(biāo)準(zhǔn)偏差 進(jìn)行計算,模擬長度為32B的隨機(jī)序列求其對應(yīng)的并進(jìn)行統(tǒng)計。由于N-截斷熵是用于對較短字節(jié)序列的隨機(jī)性進(jìn)行衡量,所以本文使用隨機(jī)生成的字節(jié)序列而非真實(shí)加密報文進(jìn)行計算,完成隨機(jī)性指標(biāo)的計算后,再對加密報文有效載荷字段的隨機(jī)性強(qiáng)弱進(jìn)行分析,一共進(jìn)行106次模擬實(shí)驗,求得,則當(dāng)序列分段熵值在區(qū)間內(nèi)時被定義為高熵分段,當(dāng)序列分段熵值不在這個區(qū)間內(nèi)時則被定義為低熵分段。
報文熵值特征提取主要是為了對報文中的有效載荷的高熵低熵字段分布特征進(jìn)行提取。為保證數(shù)長度的一致性方便輸入到網(wǎng)絡(luò)中進(jìn)行處理,首先使用相同的字節(jié)0將報文有效載荷填充至1472B。接著,為便于計算,同樣按照32B進(jìn)行劃分,每一段求出一個作為這一段的熵值特征。最終得到46組分段的熵值特征,對于每一段有效載荷還計算一個總熵值特征。最終一共得到47組熵值作為特征。
表1 實(shí)驗使用的51組特征匯總
Br51報文的其他特征包括報文方向、報文長度、TCP Flag中PUSH報與ACK的取值,共計51組特征。本文使用圖1所示的網(wǎng)絡(luò)結(jié)構(gòu)對VPN流量進(jìn)行識別,輸入為表1中提到的51維特征向量。由于VPN流量識別是一個二分類問題,第二膠囊層僅包含兩個膠囊,同時多次實(shí)驗表明,膠囊 長度為16時,分類準(zhǔn)確率最高。第一膠囊層與第二膠囊層之間所使用的動態(tài)路由算法迭代輪數(shù)設(shè)置為3輪,在保證算法分類精度的同時減少過擬合的可能性。本文所用到的與膠囊神經(jīng)網(wǎng)絡(luò)訓(xùn)練相關(guān)的參數(shù)如表2所示。
本文在實(shí)驗室環(huán)境下實(shí)際采集得到的VPN加密流量數(shù)據(jù)集與ISCX VPN-nonVPN公開數(shù)據(jù)集分別進(jìn)行了實(shí)驗。其中,實(shí)際流量采集使用Wireshark抓取使用V2Ray vmess協(xié)議的VPN流量,包含視頻播放、網(wǎng)頁瀏覽、文件傳輸流量等用戶行為。
表2 膠囊神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置
VPN流量和普通加密流量有效載荷的高熵低熵區(qū)域劃分使用實(shí)際采集的流量進(jìn)行實(shí)驗,實(shí)驗結(jié)果如圖2所示。由于存在明文頭部字段,普通加密流量的有效載荷第一段中的熵值較低,為低熵區(qū)域,而之后字段為高熵區(qū)域,而VPN流量的有效載荷均為高熵區(qū)域,特征較為明顯。
使用膠囊神經(jīng)網(wǎng)絡(luò)進(jìn)行VPN流量識別的實(shí)驗結(jié)果如表3所示。
圖2 有效載荷熵值分布圖
表3 不同數(shù)據(jù)集上的測試結(jié)果
本文還在采集得到的VPN加密流量數(shù)據(jù)集上使用四種分類模型:隨機(jī)森林、C4.5決策樹、支持向量機(jī)、卷積神經(jīng)網(wǎng)絡(luò),進(jìn)行對比試驗。其中支持向量機(jī)的懲罰系數(shù)C=10,并使用sigmoid核函數(shù);決策樹每次選擇最優(yōu)的切分特征和切分點(diǎn)進(jìn)行切分,最大深度設(shè)為8防止出現(xiàn)過擬合的情況;隨機(jī)森林由64棵前述的決策樹構(gòu)成;卷積神經(jīng)網(wǎng)絡(luò)將報文使用隨機(jī)字段填充或截斷生成大小為28×28的灰度圖,并使用LeNet5網(wǎng)絡(luò)進(jìn)行分類。對比實(shí)驗結(jié)果如表4所示。
表4 不同機(jī)器學(xué)習(xí)方法的測試結(jié)果
實(shí)驗結(jié)果表明,本文提出的基于分段熵分布的VPN加密流量檢測與識別方法,在ISCX公開數(shù)據(jù)集與實(shí)際采集得到的VPN數(shù)據(jù)集上分別達(dá)到了99.87%和96.34%的識別準(zhǔn)確率,具有極高的識別準(zhǔn)確率,同時該結(jié)果也優(yōu)于隨機(jī)森林、C4.5決策樹、支持向量機(jī)、卷積神經(jīng)網(wǎng)絡(luò)四種分類方法,可以用于VPN加密流量檢測識別。
本文內(nèi)容打破了傳統(tǒng)VPN加密流量檢測方法的局限性,提出了一種基于分段熵分布的VPN加密流量檢測與識別方法,利用滑動窗口方法對VPN加密報文序列高熵、低熵區(qū)域進(jìn)行劃分,并使用膠囊神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)VPN加密流量的精準(zhǔn)檢測與識別。對比實(shí)驗表明,該方法具有更高的識別準(zhǔn)確率。