基于載荷相鄰概率模型的加密流量識別方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種網(wǎng)絡(luò)流量識別方法,特別是設(shè)及一種基于載荷相鄰概率模型的加 密流量識別方法。
【背景技術(shù)】
[0002] 當前,采用加密機制的網(wǎng)絡(luò)協(xié)議越來越多。一方面,通信加密有助于安全和隱私保 護,另一方面,也成為不法分子逃避安全監(jiān)測和管理的屏障。加密流量識別對網(wǎng)絡(luò)犯罪行為 分析具有重要意義。
[0003] 加密就是把明文轉(zhuǎn)換為不可辨識的密文的過程,使非授權(quán)人無法識別和篡改。加 密流量的本質(zhì)是加密協(xié)議交互產(chǎn)生的加密數(shù)據(jù)。加密流量識別方法主要劃分為兩類:(1) 基于數(shù)據(jù)載荷特征識別。某些加密協(xié)議在密鑰協(xié)商階段可能交互部分明文參數(shù),比如版本 號、密鑰長度等,其值域范圍及所在偏移位置可作為識別特征。該類方法有利于識別加密流 量的協(xié)議類型或業(yè)務名稱,但是必須針對應用定制協(xié)議識別規(guī)則,且不能識別未知加密協(xié) 議。(2)基于數(shù)據(jù)隨機性識別。隨機性檢測是評價加密算法好壞的關(guān)鍵指標,從識別的角度 來說,數(shù)據(jù)隨機性也是評判該數(shù)據(jù)是否為加密數(shù)據(jù)的重要憑證。該類方法適于普適加密流 量識別,但準確性有待進一步提高。目前尚無利用非加密流量特征的普適加密流量識別方 法。
【發(fā)明內(nèi)容】
[0004] 針對已有加密流量識別方法中,基于數(shù)據(jù)載荷特征識別的加密流量識別方法不能 識別尚未定制協(xié)議識別規(guī)則的加密協(xié)議,而基于數(shù)據(jù)隨機性識別的加密流量識別方法準確 性不高的問題,本發(fā)明在已有數(shù)據(jù)隨機性識別方法的基礎(chǔ)上,首次利用非加密網(wǎng)絡(luò)流量的 載荷相鄰特征改進加密流量識別,提供一種基于載荷相鄰概率模型的加密流量識別方法。 本發(fā)明的技術(shù)方案為:將載荷數(shù)據(jù)字符相鄰關(guān)系按照概率統(tǒng)計值高低劃分為高概率、低概 率相鄰關(guān)系兩類,設(shè)計非加密流量數(shù)據(jù)載荷相鄰概率模型;在此基礎(chǔ)上,提取網(wǎng)絡(luò)流量會話 的相鄰特征,統(tǒng)計高概率相鄰關(guān)系連續(xù)出現(xiàn)的次數(shù),從大到小選擇若干個結(jié)果作為相鄰特 征,同時輔W基于信息賭的數(shù)據(jù)隨機性特征;最后,將非加密流量及加密流量的相鄰特征和 隨機性特征作為輸入送入基于機器學習的分類引擎進行訓練,繼而根據(jù)未知流量的相鄰特 征和隨機性特征進行加密流量識別。 陽〇化]具體技術(shù)方案如下:
[0006] 第一步,建立載荷相鄰概率模型。輸入非加密網(wǎng)絡(luò)流量,統(tǒng)計報文數(shù)據(jù)載荷字節(jié)間 的相鄰次數(shù),并選擇數(shù)值點區(qū)分高概率相鄰關(guān)系及低概率相鄰關(guān)系,構(gòu)建相鄰概率關(guān)系模 型。具體步驟為:
[0007] 步驟1. 1初始化。初始化載荷相鄰記錄矩陣A[時[時,及相鄰概率關(guān)系矩陣B[閲 [時,R為整數(shù),由于Ascn碼中有256個字符,R> 256,R優(yōu)選為256。A、B矩陣大小均設(shè) 置成RXR,初始值均為全0 ;0《m《R-LO《n《R-l,m、n均為整數(shù),Am,"、Bm,。記錄ASCII 碼中編碼為m的字符與編碼為n的字符之間的相鄰次數(shù)和相鄰概率,如字符a、b在ASCII碼表中的十進制編碼分別是97和98,Aw,記錄載荷中字符a與字符b相鄰的次數(shù)和 相鄰概率,即載荷中字符油出現(xiàn)的次數(shù)和概率。
[0008] 步驟1. 2統(tǒng)計報文數(shù)據(jù)載荷字節(jié)間的相鄰次數(shù),得到載荷相鄰記錄矩陣A。記共有 P條非加密流量報文,記為化ckagei,…,Package。,…Packagep, 1《P《P,P、P均為整數(shù), 化Ckagep中的數(shù)據(jù)載荷為DATA[P],數(shù)據(jù)載荷長度為LP,Lp^ 2,LP為整數(shù)。記DATA[P] 1為 DATA[P]第i位對應的Ascn字符,1《i《Lp,i為整數(shù)。逐一讀取P條非加密流量報文, 遍歷DATA[1],…,DATA[P],…DATA[P],將單字節(jié)載荷之間的相鄰關(guān)系統(tǒng)計入載荷相鄰記錄 矩陣A,方法如下:
[0009] 1. 2. 1令循環(huán)變量卵=1 ;
[0010] 1. 2. 2 令臨時變量ii= 1 ; W11] 1. 2. 3 記j=DATA[pp]。,k=DATA[pp]…1,將Aj,k增 1,即Ai,k=Aj,k+l; 陽01引 1. 2. 4循環(huán)變量ii=ii+1 ; 陽〇1引1. 2. 5如果ii《Lpp,轉(zhuǎn)1. 2. 3 ;否則,循環(huán)變量卵=卵+1 ;
[0014] 1. 2. 6如果卵《P,轉(zhuǎn)1. 2. 2 ;否則,進入步驟1.3。
[0015] 步驟1. 3構(gòu)建相鄰概率關(guān)系矩陣B。讀取載荷相鄰記錄矩陣A中的R2個元素按 照數(shù)值從大到小排序,選取第Nd《N《r2,N為整數(shù))個元素的數(shù)值作為分位點(即高 概率相鄰關(guān)系及低概率相鄰關(guān)系分割點,記為Division)。依次遍歷A中的每個元素,若 Am,Division,則Bm,。= 1,即m與n之間為高概率相鄰關(guān)系;否則,Bm,。保持為0,即m與 n之間為低概率相鄰關(guān)系。A矩陣遍歷結(jié)束后,得到相鄰概率關(guān)系矩陣B,即載荷相鄰概率模 型。
[0016] 第二步,特征提取。輸入網(wǎng)絡(luò)會話流量,即報文同屬于一個網(wǎng)絡(luò)會話,且包含1字 節(jié)W上的數(shù)據(jù)載荷,分別提取相鄰特征和隨機性特征。記網(wǎng)絡(luò)會話中共包含Q條報文,記為 Package/,…,Package。,,…Package。,,1《q《Q,q、Q均為整數(shù),Package。,中的數(shù)據(jù)載 荷為0414站',數(shù)據(jù)載荷長度為1^。,1^。>2,1^。為整數(shù)。記0414站1為0414站第1位對應 的ASCII字符,1《i《Lq,i為整數(shù)。提取M維相鄰特征,M為整數(shù)。具體步驟為:
[0017] 步驟2. 1相鄰特征提取。將數(shù)據(jù)載荷中高概率相鄰關(guān)系連續(xù)出現(xiàn)的次數(shù)與數(shù)據(jù)載 荷長度的比值作為相鄰特征,并將相鄰特征存儲在集合D中,D中允許包含重復數(shù)值。具體 步驟包括:
[0018] 2. 1.1 清空集合D;
[0019] 2. 1. 2相鄰特征計算。記高概率相鄰關(guān)系連續(xù)出現(xiàn)的次數(shù)為count,count為整數(shù), 遍歷DATA山',…,DATA[q]',…DATA陽]',統(tǒng)計高概率相鄰關(guān)系連續(xù)出現(xiàn)的次數(shù),并將其 與數(shù)據(jù)載荷長度的比值,即count/n,作為相鄰特征加入集合D。具體步驟包括:
[0020] 2. 1. 2. 1 令循環(huán)變量qq= 1 ;
[0021] 2. 1. 2. 2令計數(shù)變量count= 0,循環(huán)變量iii= 1 ; 陽02引 2. 1. 2. 3 令臨時變量jj=DATA[qq]iw化=DATA[qq]iiw;。 陽02;3] 2. 1. 2. 4如果Bjj,kk等于1,即為高概率相鄰關(guān)系,count=count+1,轉(zhuǎn)2. 1. 2. 6 ; 否則,即為低概率相鄰關(guān)系,進入2. 1. 2. 5 ;
[0024] 2. 1. 2. 5如果count不等于0,將數(shù)值count/Lqq作為一個相鄰特征加入集合D。令 count=O;
[00巧]2.I. 2. 6 循環(huán)變量iii二iii+1 ;
[002糾 2.L2. 7 如果iii<Lqq,轉(zhuǎn) 2.L2. 3 ;否貝IJ,進入 2.L2. 8 ;
[0027] 2. 1. 2. 8如果count不等于0,將數(shù)值count/Lqq作為相鄰特征加入集合D;
[0028] 2. 1. 2. 9 循環(huán)變量qq=qq+1,如果qq《Q,轉(zhuǎn) 2. 1. 2. 2 ;否則,進入 2. 1. 3。
[0029] 2. 1. 3相鄰特征篩選。全部流量讀取完畢后,將集合D中相鄰特征按照數(shù)值大小排 序,選取前M個數(shù)值,得到M維相鄰特征E,E為大小為M的數(shù)組,E中數(shù)組元素間按照從大 到小順序排列。
[0030] 步驟2. 2基于信息賭的隨機性特征提取。逐一計算報文數(shù)據(jù)載荷的字節(jié)信息賭, 并按照報文總數(shù)求均值。具體步驟包括:
[0031] 2. 2. 1令集合F存儲每個報文的字符信息賭,初始為空; 陽032] 2. 2. 2信息賭計算。逐一讀取流量報文,令C[時表示DATA數(shù)據(jù)載荷按字節(jié)遍歷 得到的取值分布,即Ct表示載荷取值等于t的字節(jié)個數(shù),1《t《R。為統(tǒng)一表述,令log20 等于0,按照式(1)計算信息賭:
[0034] 并將H'加入集合F。
[0035] 2. 2. 3計算集合F中元素平均值H,得到隨機性特征H。
[0036] 第=步基于機器學習方法的分類識別。使用基于機器學習方法的分類引擎進行加 密流量識別,共包括兩個步驟:學習訓練階段和。步驟如下:
[0037] 步驟3. 1學習訓練。將網(wǎng)絡(luò)會話流量的相鄰特征E、隨機性特征HW及加密流量 標記(標記特征是否來自加密流量)送入分類引擎,進行學習訓練。訓練完畢后,進入步驟 3. 2。
[0038] 步驟3. 2將網(wǎng)絡(luò)會話流量相鄰特征E及隨機性特征H送入分類引擎,得到基于載 荷相鄰概率模型的加密流量識別結(jié)果。
[0039] 基于機器學習方法的分類引擎設(shè)計可W采用本領(lǐng)域已有的設(shè)計技術(shù),如使用 開源機器學習軟件肥KA提供的多層神經(jīng)網(wǎng)絡(luò)分類器(weka.classifiers,functions. Multilayerferceptron-L0.3-M0.2-N日OO-VO-SO-E20-Ha)。
[0040] 采用本發(fā)明可W達到W下有益效果:
[0041] 1.本發(fā)明利用非加密網(wǎng)絡(luò)流量的載荷相鄰特征,將載荷數(shù)據(jù)字符相鄰關(guān)系按照概 率統(tǒng)計值高低劃分為高概率、低概率相鄰關(guān)系兩類,設(shè)計非加密流量數(shù)據(jù)載荷相鄰概率模 型;在此基礎(chǔ)上,提取網(wǎng)絡(luò)流量會話的相鄰特征,統(tǒng)計高概率相鄰關(guān)系連續(xù)出現(xiàn)的次數(shù),從 大到小選擇若干個結(jié)果作為相鄰特征,同時輔W基于信息賭的數(shù)據(jù)隨機性特征;最后,將非 加密流量及加密流量的相鄰特征和隨機性特征作為輸入送入基于機器學習的分類引擎進 行訓練,繼而根據(jù)未知流量的相鄰特征和隨機性特征進行加密流量識別。因此,相對于基于 數(shù)據(jù)載荷特征識別的加密流量識別方法不能識別尚未定制協(xié)議識別規(guī)則的加密協(xié)議,本發(fā) 明可W對未知加密協(xié)議流量普適識別;相對于基于數(shù)據(jù)隨機性識別的加密流量識別方法, 本發(fā)明基于數(shù)據(jù)隨機性的識別方法輔W相鄰概率模型,有效提升了識別準確性。
【附圖說明】
[0042] 圖1是本發(fā)明基于載荷相鄰概率模型的加密流量識別流程圖;
[0043] 圖2是本發(fā)明第一步建立載荷相鄰概率模型流程圖;
[0044] 圖3是本發(fā)明第二步特征提取流程圖。
【具體實施方式】
[0045] 下面結(jié)合實例對本發(fā)明的實施方式進行進一步詳細說明。
[0046] 第一步建立載荷相鄰概率模型。
[0047] 采用單個報文網(wǎng)絡(luò)會話作為輸入介紹處理過程。為便于表述,采用特別構(gòu)造的數(shù) 據(jù)載荷,不能反映真實的非加密流量特征,僅示意處理過程。 W48] 步驟1. 1初始化。初始化載荷相鄰記錄矩陣A[256] [256]及相鄰概率關(guān)系矩陣B[256]巧56],矩陣A和B初始值均為全0。
[0049] 步驟 1. 2 令輸入的報文數(shù)據(jù)載荷DATAl= "0x000x000x010x010x000x000x01 0x01" (16進制表示,共8個字節(jié)),得到相鄰次數(shù)矩陣A,見表1,其中"0x00"與"0x00"相 鄰 2 次,"OxOO"與"OxO1"相鄰 2 次,"OxO1"與"OxOO"相鄰 1 次,"OxO1"與"OxO1"相鄰 2 次,其余的相鄰計數(shù)均為0次。
[0050] 表1相鄰次數(shù)矩陣A
[0051]
[0052] 步驟1. 3對相鄰次數(shù)矩陣A中的記錄進行排序,假定選擇第3個數(shù)值(即N= 3) 作為分位數(shù)值(即Division= 2),將相鄰次數(shù)矩陣A轉(zhuǎn)換為相鄰關(guān)系矩陣B,見表2,因為 "0