王 姣 ,蔣 言
(1.南京烽火星空通信發(fā)展有限公司IAO江蘇南京210019;2.武漢郵電科學研究院湖北武漢430074)
近年來,隨著移動互聯(lián)網(wǎng)浪潮的井噴,科技得以快速發(fā)展的同時,一些不良的協(xié)議,應用以及網(wǎng)站給互聯(lián)網(wǎng)安全帶來了很大的挑戰(zhàn),例如最常見的的Ddos攻擊;除了惡意流量的攻擊之外,流量爆炸問題也越來越嚴重,根據(jù)思科Visual Networking Index(VNI)全球移動數(shù)據(jù)流量預測報告(2015-2020)中顯示,自2000年首款智能手機上市以來,移動用戶的數(shù)量同往期相比已經(jīng)達到五倍的增長量。報告中顯示,到2020年,全球的上網(wǎng)總數(shù)將達55億,幾乎是人口數(shù)據(jù)的70%。隨著電子設備成本的不斷下降、移動互聯(lián)網(wǎng)的全面大規(guī)模覆蓋和社交媒體的廣泛普及,各種類型的數(shù)據(jù)流量將在未來五年內(nèi)快速大規(guī)模的增長。所以對互聯(lián)網(wǎng)的控制和管理中,對流量的識別顯得尤為重要[1]。
在業(yè)內(nèi),應用流量識別也是一個相對很熱門的話題和項目,國內(nèi)的許多大公司如360,科來,騰訊阿里等都在這個課題投入大量的精力加以研究,對于現(xiàn)在的互聯(lián)網(wǎng)公司而言,流量識別確實是一個很實用也很前景的方向,他們意識到網(wǎng)絡分析在很多方面可以滿足多種需求,流量的準確識別不但能洞悉整個互聯(lián)網(wǎng)的運行情況,還能針對具體需求對用戶進行大數(shù)據(jù)進行分析和行為透視。在業(yè)務層面上,不僅可以預防各種攻擊斷網(wǎng)事件,還可以保證互聯(lián)網(wǎng)的高效運行。另外,隨著加密流量和應用的不斷涌現(xiàn),這些不利因素將都會對流量識別的準確性產(chǎn)生重大的挑戰(zhàn)。
本文首先分析了目前的流量識別方法及其存在的問題,并針對IM數(shù)據(jù)這一特定流量,結合報文特征,考慮目前工具的配置以及數(shù)據(jù)的復雜度,提出了基于SAE(spare auto-encoder)的離線數(shù)據(jù)的識別模型。想要對互聯(lián)網(wǎng)運行狀況有一個良好的把握,網(wǎng)絡流量識別技術是進行流量測量與分析的基礎,但是目前在識別技術上并既沒有標準的數(shù)據(jù)集,也沒有一個標準的測試程序和算法,針對這一問題,也將在本文中進行一個初步的探討。
最初的應用流量識別,目的是想對P2P應用進行準確的分類和識別[2-17]。P2P應用特殊的非客戶端服務器文件傳輸模式,給流媒體、文件共享等領域帶來便捷的同時,加劇了互聯(lián)網(wǎng)的擁塞和不安全性。為了使互聯(lián)網(wǎng)的運行更加健壯,流量的有效識別就顯得很有必要,在前期的研究中,很多流量識別是通過提取數(shù)據(jù)報文的五元組特性進行的識別,如端口或者IP。隨著網(wǎng)絡的逐漸復雜,流量識別往DPIDPI(deap packet inspection)深度數(shù)據(jù)包檢測的方向發(fā)展[3],這一重大轉變,主要是由于后期的應用改變傳統(tǒng)的認知模式,使得固定端口的識別方法大面積失效導致的。同時,大數(shù)據(jù)概念的廣泛推廣,數(shù)據(jù)挖掘、模糊統(tǒng)計技術也不斷的改進和發(fā)展,相當多的機器學習分類算法等非常規(guī)手段在流量識別的問題上有很明顯的效果。很多學者在這方面投入了大量的研究工作。
通過對往期的各種P2P流量分類技術的調(diào)查研究[9],將各種流量檢測技術歸納如下。
這一方法靈感來源于因特網(wǎng)的一項核心服務DNS,它方便人們不用記住機器能夠讀取的IP串,而通過域名的方式就可以進行服務器訪問。而恰巧數(shù)據(jù)報文中能夠直接獲取到報文的源IP目的IP??梢酝ㄟ^對應關系,解析出對應的host,從而進行流量識別,但是要獲得一份完整的全球映射關系表并不容易,同時實時性較差,由此可見,這種識別方法比較局限,應用范圍比較狹窄。
這里的端口是指TCP/IP模型的傳輸層端口,即TCP或UDP端口。這種方法也是十分的簡潔和方便,通過對應兩者之間的對應關系就可以實現(xiàn)流量的分類。但是問題與第一種類似,很多當前的協(xié)議并不使用固定端口,為了繞開防火墻的封堵,進而選擇動態(tài)的使用端口,這也包括一些知名的服務。
該方法多用于BT的識別控制,這種方法是通過識別URL中的關鍵字從而進行過濾,這個明顯存在很大的局限性,因為很多應用廠商可以改變擴展名或者通過FTP的方式進行規(guī)避。
這種方法是通過總結各個應用流量傳輸?shù)奶攸c進行特征識別,例如P2P流量的數(shù)據(jù)量大,節(jié)點之間數(shù)據(jù)交換頻繁,最突出的特點是不分時段性和長時間持續(xù)傳播,其他的流量例如網(wǎng)站類,均是突發(fā)的,數(shù)據(jù)一般都不是上行的??梢酝ㄟ^分析和構建各個維度特征,采用一般的分類算法或模型就可以進行識別,樸素貝葉斯就曾經(jīng)被使用過,但是這個方法的缺點也是很明顯的,前期需要大量的人工干預,另外,在準確度上面極大的取決于維度的選擇。即使特征選擇恰當,相對其他方法準確度仍然比較低。值得一提的是,該方法的可移植性很好。
深度數(shù)據(jù)包檢測技術DPI擯棄傳統(tǒng)挖掘對應關系的簡單方法,而是對數(shù)據(jù)報文的深度解析工作著手,從而判定是何種應用。這種方法的精度度算是很高的,它是充分關聯(lián)報文的載荷進行的識別。但是對于加密性的報文,識別精度會明顯下降,可移植性也很差,新的應用出現(xiàn)了,要重新進行訓練和識別。
除了對截獲到的數(shù)據(jù)包報文進行分析外,也有學者對P2P節(jié)點所具有的特性入手,結合源IP地址對P2P流量進行識別檢測。已經(jīng)有學者對這個方法進行了實驗并取得成功。但是該方法的可用性很差,推廣上面難以進行。
目前的應用流量識別中,對即時通信類的流量識別討論較少,其他比如游戲類、網(wǎng)站類應用更加沒有,但是隨著當前這些應用的極大豐富,對進一步分析用戶行為,創(chuàng)造優(yōu)質(zhì)的網(wǎng)絡環(huán)境,這種類型的應用識別就顯得非常關鍵。下面將對IM的流量數(shù)據(jù)如QQ、微信等進行識別分類問題進行研究。
Deep Learning最簡單的一種方法是利用人工神經(jīng)網(wǎng)絡的特點,假設其輸出與輸入是相同的,然后通過大量的訓練和參數(shù)的調(diào)整,就得到了輸入I的幾種不同表示。其中每一層中的權重都是不盡相同的。而自動編碼器就是一種盡可能復現(xiàn)輸入信號的神經(jīng)網(wǎng)絡,從而有效的挖掘數(shù)據(jù)中隱含的特征。
圖1 AutoEncoder原理圖
算法的原理如圖2所示,將輸入信號I放入一個encoder編碼器中,就可以得到一個code,這個code就是輸入I的另外一種表述。再講前面產(chǎn)生的code輸入到另外的解碼器中(decoder),如果輸出的這個信息O與之前的輸入信號I之間的偏差值最小,那么就可以說明,這個code是可靠的。所以,我們就可以通過逐步調(diào)整encoder和decoder的參數(shù),當重構誤差最小時,可以得出結論:輸入信號I可以被code唯一表示。經(jīng)過這樣逐層訓練。輸入信號I可以被逐層得到的code唯一表示,而輸入信號的特征I就會變得非常明顯。這里誤差的來源就是直接重構后的信號O與原輸入I的絕對值。同時可以說明,輸入信號可以被有效的還原了。如果在AutoEncoder的基礎上加上L1的Regularity限制(L1主要是約束每一層中的節(jié)點中大部分都要為0,只有少數(shù)不為0),這就是Sparse AutoEncoder法。如圖2所示。
圖2 Sparse AutoEncoder示意圖
稀疏自編碼其實就是限制每次得到的code盡量稀疏。也就是讓特征盡量獨立,從而輸入I可以被有效的表達出來。這個概念類似于線性代數(shù)中的基,即O=a1*Φ1+a2*Φ2+…+an*Φn,Φi是基,ai是系數(shù),我們可以得到這樣一個優(yōu)化問題:
稀疏自編碼算法是一種無監(jiān)督學習方法,它用來尋找一組“超完備”基向量來更高效地表示樣本數(shù)據(jù)。
結合數(shù)據(jù)實際情況,識別IM流量模型如圖3所示,該識別模型主要包含4大模塊。
圖3 識別模塊流程圖
通過PC端抓取手機端的APP報文數(shù)據(jù),以抓取QQ報文為例,具體步驟如下:
St1:在 pc端建立虛擬 wifi;
St2:將手機連接該虛擬wifi,并開啟wireshark,wireshark選擇虛擬wifi對應的網(wǎng)卡;
St3:在wireshark的過濾框中,輸入相應的過濾條件,并執(zhí)行該條件;
St4:當沒有新的QQ報文數(shù)據(jù)產(chǎn)生時,停止抓取,將過濾出的QQ報文數(shù)據(jù)導出為純文本格式。
圖4 wireshark抓數(shù)據(jù)包截圖
這里進行識別模型的數(shù)據(jù)集是通過pc端的軟件wireshark進行手動抓包得到的,不僅需要進行人工干預多次上下線、發(fā)送多次消息、建立多次視頻和語音通信等動作來進行豐富的報文集抓取,不僅獲取數(shù)據(jù)速度慢,并且在報文的獲取中還要嚴格控制減少其他雜質(zhì)報文的產(chǎn)生,避免過濾條件的復雜化。而前期的研究中使用的ckan等數(shù)據(jù)集,研究者均是從中直接獲取再用來模型識別,已知存在的數(shù)據(jù)集,不僅存在數(shù)據(jù)集老舊的問題,并且數(shù)據(jù)集內(nèi)容單一,以P2P流量占多,一些新型的應用流量都需要人為的獲取并降噪。而數(shù)據(jù)的質(zhì)量對模型的選擇和調(diào)參都及其重要,如果能構建一個分布式的,能在各個應用服務器的分光口進行定期數(shù)據(jù)采集,對研究界將會產(chǎn)生及其重要的影響和作用。
預處理包括格式整理、MAC層數(shù)據(jù)剔除、五元組數(shù)據(jù)提取、傳輸層有效凈載荷提取、數(shù)據(jù)規(guī)范化處理。首先對wireshark保存的txt文件里無效內(nèi)容進行替換;報文前14個字節(jié)為MAC層數(shù)據(jù),對于傳輸層、應用層協(xié)議識別均無用處,故剔除。
報文第24個字節(jié)為傳輸層協(xié)議代碼:
表1 協(xié)議代碼
其中數(shù)據(jù)報文都以TCP、UDP為主,剩余夾雜ICMP協(xié)議。這里提取五元組主要是對TCP和UDP報文進行的,對于ICMP只提取源IP和目的IP以及自身協(xié)議代碼。報文第27~30個字節(jié)是源IP、第31~34個字節(jié)是目的IP。對于TCP和UDP,報文第35~36個字節(jié)是源端口,第37~38個字節(jié)是目的端口。
分別根據(jù)TCP、UDP、ICMP數(shù)據(jù)包結構,提取各自的有效凈載荷:
1)TCP:對于TCP數(shù)據(jù)我們以一次會話報文為基本單位,提取每次會話重組后報文的第55個字節(jié)到最后所有數(shù)據(jù)載荷;
2)UDP:對于UDP數(shù)據(jù),我們以每條報文為基本單位,提取每條報文的第43個字節(jié)到最后所有數(shù)據(jù)載荷;
3)ICMP:與UDP類似,提取第71個字節(jié)到最后所有數(shù)據(jù)載荷。
IM數(shù)據(jù)流量識別主要是對應用層協(xié)議的頭部(或尾部)進行識別,內(nèi)容相關性不大。因此,在構建模型時,只提取數(shù)據(jù)前固定若干個字節(jié)(或數(shù)據(jù)尾部固定若干個字節(jié))作為特征數(shù)據(jù)。假設應用層協(xié)議頭部長度一般不會大于MTU。選擇截取了數(shù)據(jù)凈載荷的前1 460個字節(jié)作為后面的訓練數(shù)據(jù)(默認MTU-20-20)。
為提高模型的收斂速度,進而提高模型的準確度,將1 460個字節(jié)數(shù)據(jù)各自除以255(歸一化處理)。SAE是一種無監(jiān)督學習方法,為了進一步精度的提升和明顯的分類效果,將訓練數(shù)據(jù)進行標簽化,對各個IM應用類型進行了如下編碼。
表2 APP應用類別One-hot編碼
流量識別選擇SAE(sparse auto-encoder)構建識別模型,隱含層神經(jīng)元都采用函數(shù)作為激勵函數(shù)。因為AutoEncoder是學習并獲得了一個可以良好代表輸入的特征,這個特征可以最大程度上代表原輸入信號,但是該模型并不能用來分類數(shù)據(jù)。為了實現(xiàn)分類,所以最后一層選擇添加一層logistic回歸層進行分類識別。
依據(jù)人工經(jīng)驗并根據(jù)調(diào)試結果進行調(diào)整,擬定SAE的隱含層個數(shù)以及各層神經(jīng)元個數(shù)為:[1460-730-200-50-10-1]。
圖5 SAE算法流程圖
構建SAE時,首次是以誤差二范數(shù)作為損失函數(shù),即模型訓練問題轉化為如下的最優(yōu)化問題:
W*,B*=訓練時,我們首先將有標簽的報文數(shù)據(jù)進行6∶1∶3(訓練集∶驗證集∶測試集)分割,經(jīng)過多次調(diào)整,訓練參數(shù)如下:
learning_rate_ae=0.05 #AE預訓練學習速率
learning_rate_refine=0.05 #反向微調(diào)學習速率
training_epochs_ae=5000 #AE預訓練批次
training_epochs_refine=5000 #反向微調(diào)訓練批次
mini_batch_ae=1000 #AE隨機選擇訓練數(shù)據(jù)大小
mini_batch_refine=1000 #反向微調(diào)隨機選擇訓練數(shù)據(jù)大小時,且添加了五元組中協(xié)議代碼(TCP0x06、UDP0x11、ICMP0x01)作為一個特征維度,訓練好后的SAE對訓練集、測試集和驗證集進行測試,得到如下結果:
表3 結果表
在各類特征提取的算法中,最大頻繁項集算法也是一種,它偏向于的尋找特征之間的關聯(lián),從而找出最合適的頻繁項,同樣也可以用到識別和提取中。好的特征選擇能夠提升模型的性能,更能幫助我們理解數(shù)據(jù)的特點、底層結構,下面對這兩種算法的優(yōu)劣進行初步的討論方便后面的人的研究。
所謂最大頻繁項集,就是交集不為空的最大項集。
原始Apriori算法是通過判斷各項集的頻次是否大于最小支持度來選擇第一層頻繁項集M的。如圖6所示,通常選出來的第一層頻繁項集有兩種情況:高度耦合和低耦合。高耦合即第一層頻繁項集中大部分項集甚至所有項集在大于最小支持度的情況下,存在交集;而低耦合則是少數(shù)項集甚至兩兩交集為空。
由于原始Apriori算法是由下至上、由個體項集逐次排列組合生成新的頻繁項集,因此在高耦合的情況下,Apriori算法需要多次逐層迭代,且每次迭代復雜度成指數(shù)級增長。在時間復雜度上一般要比SAE要大,SAE隱含層的層數(shù)是可選并且有限的,但是Apriori算法存在一個未知循環(huán),當最新的項集支持度超過閾值而下一層的支持度小于閾值才會停止。但是從空間復雜度上來看,從算法概念上來看是類似的。她們都是屬于層次遞進的,高層表達由底層表達的組合而成。但是每種算法的優(yōu)劣也是多方面的,應用場景不同,算法的優(yōu)勢表現(xiàn)也是不同的。而項目的應用場景是網(wǎng)絡流量在線實時識別方面,所以要盡量選擇實時性更好,并且這里并不需要深入探討數(shù)據(jù)特征的關聯(lián)性問題,所以在這一方面,稀疏自編碼對IM流量識別模型構建更實用。
圖6 耦合度示意圖
隨著每天新增應用的增多,所帶來的類別也越來越多。在實時應用流量識別的問題上,精度是很重要的,到底是每個應用訓練一個模型還是訓練一個綜合的識別模型的選擇很重要,從機器的角度,綜合緩存堆棧等影響偏向于后者,但是如果新增的和已有的某一應用很相似,而新增的應用之前并沒有被機器學習到,會大大影響識別的正確率,目前業(yè)內(nèi)解決被認錯方案就是利用關聯(lián)的方法把它找出來,通過神經(jīng)網(wǎng)絡每天對模型進行優(yōu)化,不需要重新訓練。另外可以考慮提高識別門限,將特征模糊的數(shù)據(jù)給過濾掉或先去處一些垃圾數(shù)據(jù),這樣可以有效的解決這種問題,就是會丟失部分數(shù)據(jù)。未來的識別模型中,是否可以嘗試將應用行為進行粒度細分,例如根據(jù)平臺(Android、IOS、Windows、Mac OS、Linux等等)、動作(上線、下線、心跳包、更新、IM數(shù)據(jù)等)、數(shù)據(jù)(文本、語音、圖片、視頻)來建立一個綜合的識別將是我們需要考慮的方向,從而真正的實現(xiàn)人工智能。
參考文獻:
[1]李鵬,劉悅.一種基于行為特征和SVM的P2P流量識別模型[J].開封大學學報,2010,24(3):79-84.
[2]喻東陽,陳宏偉,楊莊.基于信任抽樣的P2P流量識別[J].湖北工業(yè)大學學報,2013,28(4):24-26.
[3]王煒,程東年,馬海龍.基于趨勢感知協(xié)議指紋的Skype加密流量識別算法[J].計算機應用研究,2015,32(1):183-186.
[4]孫瑜玲,林勤花.基于遺傳神經(jīng)網(wǎng)絡的P2P流量識別系統(tǒng)[J].現(xiàn)代電子技術,2015,38(17):117-120.
[5]王春枝,張會麗,葉志偉.基于混沌粒子群算法和小波SVM的P2P流量識別方法[J].計算機科學,2015,42(10):117-121.
[6]張偉,劉清.基于傳輸層會話行為統(tǒng)計特征的惡意流量識別[J].小型微型計算機系統(tǒng),2015,36(5):959-963.
[7]劉三民,孫知信.一種新的P2P流量識別模型[J].小型微型計算機系統(tǒng),2015,36(6):1235-1239.
[8]邢玉鳳,毛艷瓊.基于有督導機器學習的網(wǎng)絡流量識別系統(tǒng)[J].現(xiàn)代電子技術,2015,38(21):109-112.
[9]魯剛,張宏莉,葉麟.P2P流量識別[J].軟件學報,2011,22(6):1281-1298.
[10]劉三民,孫知信,劉余霞.基于K均值集成和SVM的P2P流量識別研究[J].計算機科學,2012,39(4):46-48.
[11]于明,朱超.利用半監(jiān)督近鄰傳播聚類算法實現(xiàn)P2P流量識別[J].哈爾濱工程大學學報,2013,35(5):653-657.
[12]譚駿,陳興署,杜敏,等.基于自適應BP神經(jīng)網(wǎng)絡的網(wǎng)絡流量識別[J].算法電子科技學報,2012,41(4):580-585.
[13]HOU Ya-jun.P2P Network traffic identification based on random forest algorithm[J].Journal of Networks,2014,9(9):29-35.
[14]LIU Yan.Analysis of P2P traffic identification methods[J].Journal of Emerging Trends in Computing and Information Sciences,2013,4(5):490-493.
[15]趙晶晶.基于數(shù)據(jù)挖掘的P2P流量識別算法研究與實現(xiàn)[D].北京:北京郵電大學,2009.
[16]張峰.基于機器學習的VoIP流量識別技術研究[D].武漢:華中科技大學,2013.
[17]彭立志.基于機器學習的流量識別關鍵技術研究[D].哈爾濱:哈爾濱工業(yè)大學,2015.