孟 娟,孟 鵬,繆志敏,李晨溪,錢明遠
(1.解放軍31108部隊,江蘇 南京 210016;2.湖北科技學院,湖北 咸寧 437000;3.解放軍陸軍工程大學,江蘇 南京 210007)
隨著互聯(lián)網(wǎng)加密協(xié)議應用越來越廣泛,網(wǎng)絡加密流量的識別問題日益引起人們的重視。網(wǎng)絡加密流量的有效識別,對保護用戶信息,監(jiān)管非法數(shù)據(jù),檢測網(wǎng)絡攻擊,維護網(wǎng)絡安全有著重要意義。
盡管網(wǎng)絡加密流量識別問題屬于網(wǎng)絡流量識別的子問題,但是傳統(tǒng)的網(wǎng)絡流量識別方法,如基于端口匹配識別、深度包檢測、深入流檢測等難以直接應用于網(wǎng)絡加密流量識別中。目前對網(wǎng)絡加密流量識別問題的研究多針對特定的加密協(xié)議,利用加密協(xié)議建立連接階段的明文特征,通過特征碼匹配來完成識別,或者利用加密協(xié)議建立連接階段的報文指紋特征,如特定的報文長度、到達時間等來完成識別[1-7]。這些識別方法均針對某種特定的加密協(xié)議,并未給出一種通用的網(wǎng)絡加密流量識別方法。
盡管網(wǎng)絡流量的具體加密協(xié)議細節(jié)各不相同,但好的加密算法的一個最基本的要求是要保證算法是安全的。算法的安全性體現(xiàn)在算法數(shù)學基礎的穩(wěn)健性、算法的抗攻擊性、算法的相對強度和算法輸出序列的隨機性。其中前3項因算法結構的種類而異,而利用統(tǒng)計檢測原理來檢測算法輸出序列是否隨機,只關心輸入輸出,在這種情況下,算法的具體結構是被忽略的,因此,可以通過網(wǎng)絡流量的隨機性特征來識別網(wǎng)絡加密流量。
利用網(wǎng)絡加密流量的隨機性特征,該文提出了一種基于多任務特征學習的網(wǎng)絡加密流量識別算法。該算法采用隨機性檢驗獲取數(shù)據(jù)流的隨機性特征,提取多維隨機性特征值,然后基于2,1范式最小化對一組相關任務進行聯(lián)合特征學習。最后針對網(wǎng)絡加密流量進行實驗分析,結果表明,該算法對網(wǎng)絡加密流量的識別精度可達到80%以上。
隨機性度量是指通過判斷被測序列是否存在某些隨機序列的特定特征,進而判斷其是否隨機。隨機性度量中需要對兩個問題進行研究:第一個問題是如何檢驗,就是確定應該對被測序列的哪些特征進行統(tǒng)計分析,如頻數(shù)、游程、相關性、累積和等,在設計隨機性檢驗方法時,應該選擇那些能反映隨機特性的方法,并盡可能反映更多特性,這樣通過較少的指標就可以全面地評價其隨機性。第二個問題是如何對測試結果做出評估,就是用什么方法來對統(tǒng)計檢驗得到的結果進行準確的評價,評價方法有門限值、P-value等。評價方法要盡可能準確。
現(xiàn)已知的隨機性檢驗方法達200多種。其中具有代表性的是美國商務部國家標準技術協(xié)會(NIST)在2001年5月公布的FIPS140-2標準[8]和SP800-22標準[9]、德國資訊安全聯(lián)合辦公室(BSI)在2001年9月公布的AIS31標準[10]。國內(nèi)也有隨機性檢驗方法的相關研究[11-12]。
讓一個隨機序列通過所有的隨機性檢驗,在時間、空間上需要很大的開支,同時有些檢驗方法反映的是隨機序列同一方面的特性。對于網(wǎng)絡加密流量而言,采用具有權威代表性的NIST SP800-22標準中的15種檢驗方法更加方便和準確,15種檢驗方法及其所針對的序列屬性簡列如下:
(1)單比特頻數(shù)檢驗。序列中1的個數(shù)。
(2)分組組內(nèi)頻數(shù)檢驗。對序列分組后每個子序列中1的個數(shù)。
(3)游程檢驗。序列中的游程個數(shù)。
(4)組內(nèi)最長游程檢驗。對序列分組后每個子序列的最長游程長度。
(5)二進制矩陣秩檢驗。將序列構造成N個矩陣,計算每個矩陣的秩。
(6)離散傅里葉變換檢驗。序列進行傅里葉變換后的頻率幅值。
(7)非重疊模式匹配檢驗。某特定模式的出現(xiàn)次數(shù)。
(8)重疊模式匹配檢驗。某特定模式的出現(xiàn)次數(shù)。
(9)Maurer通用統(tǒng)計檢驗。特定長度子序列的所有模式中,相同模式間間隔距離的位數(shù)。
(10)線形復雜度檢驗。用Berlekamp-Massey算法計算每個子序列的線形復雜度。
(11)串行檢驗。特定長度模式出現(xiàn)的頻數(shù);
(12)近似熵檢驗。特定長度模式出現(xiàn)頻率的熵值。
(13)累加和檢驗。序列累加和的最大值。
(14)隨機游走檢驗。隨機游走中各循環(huán)到達距離原點特定長度位置的次數(shù)。
(15)隨機游走變體檢驗。隨機游走中到達距離原點特定長度的位置的總次數(shù)。
該標準建立在假設檢驗的基礎上,統(tǒng)一采用P-value評價方式。每個隨機性檢驗的核心是其使用的統(tǒng)計量和統(tǒng)計量所滿足的分布,每個統(tǒng)計量針對了一個特定的序列屬性。
利用NIST SP800-22 隨機性檢驗可構建加密數(shù)據(jù)流的15類隨機性特征,根據(jù)不同的參數(shù)設置可提取不同維度的隨機性特征。按缺省設置運行NIST后得到統(tǒng)計結果,從統(tǒng)計結果中提取188維隨機性特征值,其中單比特頻數(shù)特征、分組頻數(shù)特征關注的是序列中0和1出現(xiàn)的頻率,游程特征、組內(nèi)最長游程特征關注的是序列中比特變化的特點,離散傅里葉變換特征、非重疊模式匹配特征、重疊模式匹配特征、串行特征和近似熵特征關注的是序列中是否有某一個模式出現(xiàn)的頻率較高。Maurer通用統(tǒng)計特征和線性復雜度特征關注的是序列的壓縮性。累加和特征、隨機游動特征和隨機游動變體特征關注的是序列的隨機游動特性。各個統(tǒng)計特征都各有其關注點,從統(tǒng)計原理上來看,這些特征之間具有一定的聯(lián)系,但是,從統(tǒng)計原理上分析特征之間相關性并不容易,有時候兩個看起來差別很大的兩個特征也有可能具有較高的相關性,這里通過計算它們的互信息熵對這些隨機性特征進行相關性分析。
H(X/bj)=Hn(P(a1,bj),P(a2,bj),…,P(an,bj))=
(1)
而
(2)
由上式可得:
P(bj)]=
H(X,Y)-H(Y)
(3)
H(X,Y)是聯(lián)合熵,H(X,Y)反映了X和Y這兩個統(tǒng)計量信息量的總和:
(4)
H(X)是X的信息熵,H(X/Y)是給定Y的條件下X的信息量,根據(jù)式(3)和式(4)可以計算出統(tǒng)計量間的互信息熵。
I(X,Y)=H(X)-H(X/Y)=
H(X)+H(Y)-H(X,Y)=
I(Y,X)
(5)
互信息熵反映了兩個統(tǒng)計量之間信息量的相互影響,可利用概率分布來估計互信息熵:
(6)
其中,PX,Y(x,y)指X和Y的聯(lián)合概率密度分布,PX(x)·PY(y)指X和Y各自獨立時的概率分布。
互信息熵反映了兩個統(tǒng)計量間的相互影響程度。當互信息熵為零時,這兩個統(tǒng)計量相互獨立,當互信息熵增大時,兩個統(tǒng)計量間的相關程度增強。
多任務特征學習[13-19]旨在學習多個相關任務的共同特征表示。在網(wǎng)絡加密流量識別中,將不同加密協(xié)議的網(wǎng)絡加密流量識別看作不同的任務,盡管各個任務中網(wǎng)絡流量的加密協(xié)議不同,但加密流量都具有隨機性的特征,因此,可以通過多任務特征學習對多個任務的聯(lián)合特征進行學習,識別網(wǎng)絡加密流量。
(7)
其中,wj∈d是第j個任務的權重向量,全部t個任務的權重向量形成權重矩陣W=[w1,w2,…,wt]∈d×t。
(8)
記σ=[σ1,σ2,…,σt]T∈t,假定數(shù)據(jù){A,y}獨立于分布式(8),則似然函數(shù)可以寫成:
為了捕獲任務間的相關性,定義先驗W,W的第i行記為wi∈1×t,對應所有任務的第i個特征,假設wi由以下指數(shù)先驗產(chǎn)生:
p(wi|δi)∝exp(-‖wi‖δi),i=1,2,…,d
(10)
其中,δi>0為超參數(shù),當t=1時,式(10)為拉普拉斯先驗。假定δ=[δ1,δ2,…,δd]T∈d,w1,w2,…,wd獨立于先驗(10),W的先驗表示為:
(11)
W的后驗正比于先驗和似然函數(shù)的乘積,即:
p(W|A,y,σ,δ)∝p(y|W,A,σ)p(W|δ)
(12)
取式(12)的負對數(shù)并結合式(7)~式(11),通過最小化式(13)可得到W的最大后驗估計。
(13)
簡單起見,假定σ=σj,?j=1,2,…,t,并且δ=δi,?i=1,2,…,d,由式(13)可得到2,1范式正則化的最小二乘回歸問題,即:
(14)
(15)
其中,ρ>0為正則化參數(shù);loss(W)為凸光滑的損失函數(shù),如最小二乘損失或logistic損失。
如果是單任務,則式(10)為拉普拉斯先驗分布,此時式(15)就是1范式正則化優(yōu)化問題。如果是多個任務,第i個特征的權重通過wi的二范式分組聚集,因此,2,1范式正則化傾向于對多個任務進行聯(lián)合特征學習。
利用網(wǎng)絡加密流量的隨機性特征,提出基于多任務特征學習的網(wǎng)絡加密流量識別算法。首先采集網(wǎng)絡數(shù)據(jù)流樣本,對數(shù)據(jù)流進行預處理,獲取載荷信息作為有效數(shù)據(jù);然后,對有效數(shù)據(jù)進行NIST SP800-22隨機性檢驗,獲取數(shù)據(jù)流的多維隨機性特征;最后對這些隨機性特征進行多任務特征學習,利用學習模型對未知樣本進行加密流量識別。算法流程如圖1所示。
圖1 基于多任務特征學習的網(wǎng)絡加密流量識別
對獲得的網(wǎng)絡數(shù)據(jù)進行預處理,獲取有效數(shù)據(jù),主要包括以下幾個步驟:首先,根據(jù)傳輸鏈路的類型判斷具體的鏈路層協(xié)議,丟棄無關內(nèi)容后對網(wǎng)絡層數(shù)據(jù)進行提??;然后,根據(jù)網(wǎng)絡層數(shù)據(jù)協(xié)議類型分類處理,丟棄非IP協(xié)議報文,對IP協(xié)議報文去除報頭內(nèi)容后,將具有相同源、目的地址,相同源、目的端口以及相同協(xié)議的報文組成一個數(shù)據(jù)流;最后,對有效數(shù)據(jù)進行提取。如果數(shù)據(jù)流中的報文載荷是TCP或UDP協(xié)議報文,則去除相應的協(xié)議報頭后剩余的數(shù)據(jù)即是提取的有效數(shù)據(jù);如果數(shù)據(jù)流中的載荷不是TCP或UDP協(xié)議報文,則可直接將數(shù)據(jù)流中的報文載荷作為有效數(shù)據(jù)。
對數(shù)據(jù)預處理后得到的有效數(shù)據(jù)進行NIST SP800-22隨機性檢驗,利用NIST SP800-22的15種檢驗方法,一共可提取15類隨機性特征,根據(jù)不同的參數(shù)設置可得到不同維度的隨機性特征值。該文按照缺省設置,得到188維隨機性特征值。
通過最小化如下目標函數(shù)來求解W:
ρ‖W‖2,1
(16)
利用加速梯度方法(accelerated gradient methods,AGM)[20]來求解此優(yōu)化問題。AGM不同于傳統(tǒng)的梯度方法,每次迭代使用前兩個點的線性組合作為搜索點,而不是僅使用最新點。AGM收斂速度為O(1/k2),這是最優(yōu)的一階方法,AGM的關鍵子程序是計算鄰近算子。
(17)
式中,Ω(W,λ)為非平滑正則化項;γ為步長,?L(·)為L(·)的梯度;S為當前搜索點。
對于測試樣本X,依據(jù)式(18)判斷其是否為加密數(shù)據(jù)流:
y=sign(XTW+c)
(18)
首先采集不同加密協(xié)議的網(wǎng)絡加密數(shù)據(jù)流和非加密數(shù)據(jù)流。作為研究對象的加密數(shù)據(jù)流取自網(wǎng)上銀行網(wǎng)站數(shù)據(jù)、VPN加密通信數(shù)據(jù)、TOR匿名通信和私有加密協(xié)議數(shù)據(jù),非加密數(shù)據(jù)流取自普通新聞類網(wǎng)站數(shù)據(jù)和在線視音頻數(shù)據(jù),對網(wǎng)絡流量進行預處理后得到有效載荷,對每一類數(shù)據(jù),取5 000個樣本,每個數(shù)據(jù)樣本長度為1 000比特。然后對流量數(shù)據(jù)樣本進行NIST SP800-22隨機性檢驗,測試中的參數(shù)均使用缺省值,每個樣本可得到188維隨機性特征值。將得到的實驗數(shù)據(jù)集劃分為50%訓練數(shù)據(jù)集和50%驗證數(shù)據(jù)集。
表1 學習的聯(lián)合隨機性特征數(shù)隨參數(shù)ρ變化
圖2 識別精度對比
為了進一步驗證該文提出的基于多任務特征學習的網(wǎng)絡加密流量識別算法的有效性,與傳統(tǒng)的單任務特征學習算法進行了對比。
傳統(tǒng)的單任務特征學習算法不考慮任務之間的特征關聯(lián)關系,通過求解1范式正則化優(yōu)化問題來進行單任務特征學習:
(19)
其中[a1,a2,…,an]∈n×d是隨機性特征矩陣,yi是樣本標簽,W是參數(shù)模型,c是偏置,單任務特征學習通過1正則化進行特征學習。單任務特征學習和多任務特征學習算法的平均識別精度對比如圖3所示。由圖3可以看出,多任務特征學習的平均識別精度超過80%,單任務特征學習的平均識別精度明顯低于多任務特征學習,但單任務特征學習的平均識別精度隨著特征數(shù)變化的穩(wěn)定性優(yōu)于多任務特征學習。
圖3 平均識別精度對比
基于多任務特征學習,將NIST SP800-22的15種隨機性檢驗方法得到的檢驗數(shù)值作為188維隨機性特征值,利用2,1正則化項對一組相關任務進行聯(lián)合特征學習,不僅能夠準確識別已知加密協(xié)議流量,同時還對未知加密協(xié)議流量具有一定的識別能力。實驗結果表明,提出的算法可以有效識別網(wǎng)絡加密流量,平均識別精度超過80%。