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