萬(wàn)建偉,胡勇
(四川大學(xué)電子信息學(xué)院,成都 610021)
在過(guò)去的十幾年里,對(duì)等網(wǎng)絡(luò)P2P(Peer to Peer)技術(shù)在各個(gè)領(lǐng)域里得到了廣泛的應(yīng)用。P2P 技術(shù)的使用,使得網(wǎng)絡(luò)用戶(hù)在作為客戶(hù)端的同時(shí)也成為了服務(wù)端,能夠給網(wǎng)絡(luò)中的其他節(jié)點(diǎn)提供服務(wù),共享信息。因此,采用P2P 技術(shù)的應(yīng)用軟件因受到用戶(hù)的歡迎而快速發(fā)展。研究表明,60%的互聯(lián)網(wǎng)流量都是P2P 流量。P2P 協(xié)議傳輸?shù)臄?shù)據(jù)具有傳輸速度快、容量超大等優(yōu)點(diǎn),它極大地方便了用戶(hù),但與此同時(shí),由于缺乏有效的監(jiān)管,P2P 應(yīng)用也給網(wǎng)絡(luò)服務(wù)管理帶來(lái)了一些問(wèn)題,例如,眾多的網(wǎng)絡(luò)用戶(hù)同時(shí)使用P2P 流量會(huì)造成網(wǎng)絡(luò)堵塞、占用帶寬,這會(huì)加大網(wǎng)絡(luò)開(kāi)銷(xiāo)。并且P2P 流量在傳播的過(guò)程中,可能會(huì)攜帶木馬病毒、詐騙信息,容易造成網(wǎng)絡(luò)安全問(wèn)題;還有部分P2P 應(yīng)用軟件為了搶占客戶(hù)資源,惡意侵占網(wǎng)絡(luò)帶寬,大大降低了網(wǎng)絡(luò)空間的整體利用效率,破環(huán)了網(wǎng)絡(luò)運(yùn)營(yíng)環(huán)境。
隨著P2P 流量的急劇增多,網(wǎng)絡(luò)管理員如何更加有效監(jiān)控P2P 流量成為了一個(gè)形勢(shì)嚴(yán)峻的問(wèn)題。而要處理好這個(gè)問(wèn)題,必須對(duì)P2P 流量進(jìn)行識(shí)別研究,只有識(shí)別控制該流量,才能最大化地利用網(wǎng)絡(luò)資源,提升整個(gè)網(wǎng)絡(luò)的使用效率,P2P 流量的識(shí)別研究是網(wǎng)絡(luò)安全研究領(lǐng)域的熱點(diǎn)。
P2P 流量識(shí)別技術(shù)主要包括:基于固定端口的識(shí)別、基于深度包檢測(cè)技術(shù)(Deep Packet Inspection,DPI)、基于流量統(tǒng)計(jì)特征和機(jī)器學(xué)習(xí)的識(shí)別方法。
基于固定端口的識(shí)別方法是最常用、最基本的識(shí)別方法,其原理是通過(guò)分析報(bào)文段的報(bào)頭,獲取傳輸層的端口號(hào)信息,識(shí)別流量類(lèi)型。該識(shí)別方法在使用固定端口號(hào)的應(yīng)用程序上有著很高的識(shí)別率,方法簡(jiǎn)單、識(shí)別速度快。但是這種方法對(duì)未知端口和協(xié)議不適用。
基于DPI 技術(shù)的流量識(shí)別方法不僅分析數(shù)據(jù)包中源、目的地址和源、目的端口,還要分析應(yīng)用層的數(shù)據(jù)。獲取數(shù)據(jù)包之后,通過(guò)DPI 技術(shù)識(shí)別載荷里面的特征字,識(shí)別出對(duì)應(yīng)類(lèi)型的流量。DPI 主要是一種對(duì)應(yīng)用層載荷特征進(jìn)行識(shí)別的技術(shù),它基于特征字符串以及行為模式。但是,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,DPI 方法在檢測(cè)流量的過(guò)程中出現(xiàn)了一些問(wèn)題,例如,當(dāng)P2P應(yīng)用更新時(shí),檢測(cè)分析過(guò)程中的特征庫(kù)沒(méi)有及時(shí)更新,則無(wú)法檢測(cè)出該應(yīng)用。并且,該方法也不適用于檢測(cè)使用加密的應(yīng)用程序。
基于流量統(tǒng)計(jì)特征的識(shí)別方法在文獻(xiàn)[1]中有提及,該方法在分析P2P 協(xié)議工作原理的基礎(chǔ)上,提出了區(qū)分P2P 流量的幾個(gè)統(tǒng)計(jì)特征,如節(jié)點(diǎn)的鏈接不穩(wěn)定性、節(jié)點(diǎn)發(fā)現(xiàn)模式、遠(yuǎn)端IP 分布廣度?;诹髁拷y(tǒng)計(jì)特征的識(shí)別方法識(shí)別度好且效率高效,這是由于該方法選取了良好的流量特征,成功克服了基于效載荷方法成本高、無(wú)法識(shí)別加密流量的局限性,但是它不能辨別出具體的P2P 流量。
而后出現(xiàn)了大量的基于機(jī)器學(xué)習(xí)的識(shí)別方法,主要包括支持向量機(jī)、決策樹(shù)以及基于神經(jīng)網(wǎng)絡(luò)的識(shí)別方法。該類(lèi)方法不再依賴(lài)于單個(gè)應(yīng)用程序的特征,而是對(duì)基于流的傳輸層特性進(jìn)行分析,進(jìn)而識(shí)別P2P 應(yīng)用,該方法可以解決深度包檢測(cè)技術(shù)不能識(shí)別應(yīng)用層加密流量和應(yīng)用更新的問(wèn)題。文獻(xiàn)[2]提出了基于支持向量機(jī)(SVM)的識(shí)別方法,其改進(jìn)模型有:基于SVM的遺傳算法[3],基于SVM 的粒子群優(yōu)化算法[4]和基于SVM 的人工蜂群算法[5]等。該方法是一種有堅(jiān)實(shí)理論基礎(chǔ)的新穎的小樣本學(xué)習(xí)方法,它不僅算法簡(jiǎn)單,而且十分穩(wěn)定,但SVM 算法及其改進(jìn)方法對(duì)大規(guī)模訓(xùn)練樣本難以實(shí)施,且在解決多分類(lèi)問(wèn)題時(shí)存在困難。文獻(xiàn)[6]提出了基于BP 神經(jīng)網(wǎng)絡(luò)的識(shí)別方法,其改進(jìn)模型有:基于自適應(yīng)BP 神經(jīng)網(wǎng)絡(luò)的識(shí)別方法[7]和基于BP-LVQ 神經(jīng)網(wǎng)絡(luò)的識(shí)別方法[8]。BP 神經(jīng)網(wǎng)絡(luò)具有自學(xué)習(xí)能力,但是該方法存在選擇網(wǎng)絡(luò)結(jié)構(gòu)不唯一的缺點(diǎn)。文獻(xiàn)[9]提出了基于決策樹(shù)(Decision Tree)的識(shí)別方法,該方法易于理解和實(shí)現(xiàn),效率高,但是在處理特征關(guān)聯(lián)性比較強(qiáng)的數(shù)據(jù)時(shí)誤差比較大。因此,當(dāng)需要識(shí)別流量的數(shù)量足夠大時(shí),以上方法不能很好地識(shí)別出P2P 流量。
文獻(xiàn)[10]提出了基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的識(shí)別方法,該方法是一種前饋神經(jīng)網(wǎng)絡(luò)方法,特別適合圖像處理。CNN 在處理高維數(shù)據(jù)時(shí)表現(xiàn)良好,并且無(wú)需手動(dòng)選取特征,訓(xùn)練好權(quán)重,特征分類(lèi)效果好,但是該方法需要調(diào)參,需要大量樣本,實(shí)現(xiàn)起來(lái)比較復(fù)雜,并且訓(xùn)練所需時(shí)間比較久,在進(jìn)行P2P 流量識(shí)別時(shí),該方法不能實(shí)時(shí)識(shí)別出流量類(lèi)型。
本文結(jié)合機(jī)器學(xué)習(xí)利用傳輸層數(shù)據(jù)的檢測(cè)方法和DPI 方法,提出了一種新的識(shí)別模型:基于DPI 和BP神經(jīng)網(wǎng)絡(luò)的P2P 流量識(shí)別模型。該模型很好地彌補(bǔ)了DPI 檢測(cè)法不能及時(shí)識(shí)別出更新后的P2P 應(yīng)用和加密應(yīng)用的缺點(diǎn),極大地提升了識(shí)別P2P 流量的能力。
該模型結(jié)合DPI 技術(shù)和BP 神經(jīng)網(wǎng)絡(luò)來(lái)識(shí)別P2P流量。該模型的檢測(cè)流程圖如圖1 所示。

圖1 混合檢測(cè)模型
流量收集模塊的功能是捕獲流經(jīng)網(wǎng)絡(luò)中的流量,當(dāng)被捕獲的流量傳到DPI 模塊后,該模塊提取這些流量的應(yīng)用層特征,再結(jié)合特征庫(kù)中的特征數(shù)據(jù),對(duì)提取的特征進(jìn)行匹配,判斷該流量是否為P2P 流量。若是,則標(biāo)記該流量為已知流量;若不是,則進(jìn)行下一步操作,將該流量送入基于BP 神經(jīng)網(wǎng)絡(luò)模塊,做進(jìn)一步識(shí)別。圖1 是對(duì)此模塊的詳細(xì)說(shuō)明。
深度包檢測(cè)技術(shù)(DPI)通常利用模式匹配算法對(duì)數(shù)據(jù)包有效載荷中協(xié)議的關(guān)鍵字進(jìn)行匹配,從而判斷是否屬于對(duì)應(yīng)的協(xié)議。DPI 技術(shù)主要包含兩個(gè)方面,一方面是匹配算法的選取,另一方面是協(xié)議中關(guān)鍵字的提取。協(xié)議關(guān)鍵字的提?。河行﹨f(xié)議具有唯一標(biāo)識(shí)該數(shù)據(jù)包對(duì)應(yīng)業(yè)務(wù)類(lèi)型的特征串,可以通過(guò)搜索數(shù)據(jù)包中應(yīng)用層有效載荷的特征串,識(shí)別數(shù)據(jù)包中的協(xié)議。部分協(xié)議的負(fù)載特性如表1 所示。

表1 常見(jiàn)的P2P 應(yīng)用軟件特征值
在協(xié)議識(shí)別過(guò)程中,提取特征串的準(zhǔn)確度越高,識(shí)別的結(jié)果越準(zhǔn)確。
匹配算法利用特征庫(kù)中的協(xié)議特征字匹配數(shù)據(jù)包應(yīng)用層中有效載荷的內(nèi)容,如果匹配成功,則將該數(shù)據(jù)包的協(xié)議類(lèi)型對(duì)應(yīng)到協(xié)議特征字的應(yīng)用類(lèi)型。如使用表 1 中的 BitTorrent 的特征串“0x13Bittorrent Protocol”匹配數(shù)據(jù)包中有效載荷的內(nèi)容,如果匹配成功,則認(rèn)為這個(gè)數(shù)據(jù)包屬于BitTorrent 數(shù)據(jù)包。匹配算法[11]可以分為多模匹配和單模匹配兩種,常見(jiàn)的算法有KMP、AC、KR 和BM。特征串的長(zhǎng)度與模式匹配算法的時(shí)間復(fù)雜度有關(guān),當(dāng)特征串較長(zhǎng)時(shí),模式匹配算法的計(jì)算速度較慢,這將導(dǎo)致DPI 吞吐量降低。
綜上所述,在使用DPI 技術(shù)識(shí)別有特征字的協(xié)議時(shí),可以準(zhǔn)確、可靠地識(shí)別相應(yīng)協(xié)議流量,但是特征庫(kù)需要隨著協(xié)議的更新而不斷更新。
BP 神經(jīng)網(wǎng)絡(luò)在模式識(shí)別、數(shù)據(jù)壓縮和函數(shù)逼近等領(lǐng)域有著廣泛的應(yīng)用。圖2 展示了BP 神經(jīng)網(wǎng)絡(luò)對(duì)已有數(shù)據(jù)進(jìn)行訓(xùn)練、建立流量分類(lèi)器的過(guò)程,圖2 對(duì)未知流量分類(lèi)進(jìn)行了解釋。

圖2 流量分類(lèi)器的建立過(guò)程
首先,選擇部分常見(jiàn)的P2P 應(yīng)用(例如BitTorrent、騰訊視頻、酷狗音樂(lè)等)和部分非P2P 應(yīng)用(例如FTP、網(wǎng)頁(yè)瀏覽、DNS)的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)集。實(shí)驗(yàn)中,為提高對(duì)一些非常見(jiàn)流量的識(shí)別度,將選擇等量的應(yīng)用程序?qū)嵗?/p>
其次將這些應(yīng)用程序進(jìn)行預(yù)處理,提出數(shù)據(jù)流的特征屬性,如流持續(xù)的時(shí)間、流中發(fā)送/接收數(shù)據(jù)包的個(gè)數(shù)、流中發(fā)送與接收數(shù)據(jù)包個(gè)數(shù)的比值等。接著選擇流量特征。
特征選擇也叫特征子集選擇,是指從眾多特征中選出可以使系統(tǒng)獲得最優(yōu)化特征子集,去除冗余特征的過(guò)程。通過(guò)這種方法可以提高數(shù)據(jù)質(zhì)量。本文通過(guò)使用WireShark 工具對(duì)采集的P2P 流量數(shù)據(jù)樣本進(jìn)行分析,同時(shí)結(jié)合Moore 數(shù)據(jù)集(該數(shù)據(jù)是由英國(guó)劍橋大學(xué)的Moore 等在一天的10 個(gè)不同時(shí)間段采集經(jīng)過(guò)網(wǎng)絡(luò)出口的所有雙向流量數(shù)據(jù)所得到的,該數(shù)據(jù)集包含了377526 個(gè)流量樣本,由十個(gè)集合構(gòu)成,其中每一條的數(shù)據(jù)流樣本又包含248 個(gè)屬性特征。)中的大量屬性特征進(jìn)行比較,最終將用作P2P 流量識(shí)別依據(jù)的流特征向量定義為:

其中,各分量分別對(duì)應(yīng)一個(gè)流量特征:多連接性特征(mip)、多端口性特征(mport)、遠(yuǎn)端地址端口統(tǒng)一性特征(raup)、數(shù)據(jù)包凈荷長(zhǎng)度標(biāo)準(zhǔn)差(stddev)、大小數(shù)據(jù)包交替出現(xiàn)次數(shù)(swf)和凈荷長(zhǎng)度大于零的數(shù)據(jù)包個(gè)數(shù)(pcnt),這些特征分別從不同的視角闡述了P2P 流量與非P2P 網(wǎng)絡(luò)流量的差異,雖然單個(gè)特征不足以用來(lái)準(zhǔn)確識(shí)別P2P 流量,但是多個(gè)特征的組合則產(chǎn)生累加效應(yīng),從而提高識(shí)別準(zhǔn)確率。
接著將訓(xùn)練數(shù)據(jù)輸入BP 神經(jīng)網(wǎng)絡(luò)檢測(cè)模塊,建立分類(lèi)器。在整個(gè)訓(xùn)練過(guò)程中,選取包含P2P 應(yīng)用和非P2P 應(yīng)用的46500 條數(shù)據(jù)流量,驗(yàn)證方法采用十折交叉法,用于提高準(zhǔn)確度。
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程包含前向傳播和反向傳播兩個(gè)部分,它是目前應(yīng)用最為廣泛的神經(jīng)網(wǎng)絡(luò)之一。前向傳播將輸入神經(jīng)元的閾值整合進(jìn)隱層權(quán)值向量中,逐層傳播。當(dāng)輸出層的實(shí)際輸出和期望輸出不符時(shí),進(jìn)入誤差反向傳播,將誤差分?jǐn)偨o輸出層和隱含層的所有處理單元,逐層修正權(quán)值和閾值,反復(fù)迭代。通過(guò)這種方法,可以大大降低誤差。圖3 中是一個(gè)三層BP 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖。

圖3 三層BP神經(jīng)網(wǎng)絡(luò)
本文使用三層神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練和測(cè)試,選取輸入神經(jīng)元的個(gè)數(shù)為6,即樣本數(shù)據(jù)會(huì)話流的6 個(gè)屬性特征。輸出神經(jīng)元是輸入流量的對(duì)應(yīng)類(lèi)別,取值為0 或1,結(jié)果為1 則判定輸入流量為此類(lèi)別,反之,則不是。通過(guò)多次訓(xùn)練比較,確定隱含層神經(jīng)元的個(gè)數(shù)為11。
最后驗(yàn)證分類(lèi)器的精確度,所用的數(shù)據(jù)為測(cè)試數(shù)據(jù)集。
數(shù)據(jù)的分類(lèi)過(guò)程如圖4。通過(guò)預(yù)處理捕獲的46500 條數(shù)據(jù)流量,獲取統(tǒng)計(jì)特征,然后篩選出所需特征,再將樣本中的流量數(shù)據(jù)輸入分類(lèi)器,通過(guò)輸出結(jié)果判斷流量是否為P2P 類(lèi)型。

圖4 BP神經(jīng)網(wǎng)絡(luò)基于傳輸層檢測(cè)法
實(shí)驗(yàn)拓?fù)浣Y(jié)構(gòu)如圖5 所示,在實(shí)驗(yàn)室局域網(wǎng)環(huán)境下,使用3 臺(tái)均為Win7 系統(tǒng)的客戶(hù)端,1 臺(tái)服務(wù)器的操作系統(tǒng)使用的是Linux 系統(tǒng)。在Linux 服務(wù)器內(nèi)運(yùn)行識(shí)別P2P 流量的程序Weka3.7。

圖5 實(shí)驗(yàn)拓?fù)鋱D
方法1:使用DPI 方法,測(cè)試應(yīng)用選擇BitTorrent、酷狗音樂(lè)、騰訊視頻、迅雷、Skype。
方法2:使用BP 神經(jīng)網(wǎng)絡(luò)檢測(cè)方法。
方法3:結(jié)合BP 神經(jīng)網(wǎng)絡(luò)和DPI 的檢測(cè)方法。
分別在3 臺(tái)客戶(hù)端的虛擬機(jī)(VMware 下的Win7系統(tǒng))上運(yùn)行P2P 應(yīng)用軟件,PC1 上運(yùn)行BT 下載以及Skype 聊天;PC2 上運(yùn)行騰訊視頻在線播放以及迅雷下載;PC3 上運(yùn)行酷狗音樂(lè)和 Skype 聊天。BitTorrent、騰訊視頻、迅雷、酷狗音樂(lè)的應(yīng)用層特征均為已知,Skype為加密應(yīng)用軟件。同時(shí),在每臺(tái)PC 上運(yùn)行網(wǎng)頁(yè)瀏覽、FTP 上傳等非P2P 流量操作。本實(shí)驗(yàn)中,通過(guò)3 臺(tái)客戶(hù)端來(lái)獲取數(shù)據(jù),以便在較短的時(shí)間內(nèi)得到足夠多的數(shù)據(jù)量,在VMware 環(huán)境下可以減少Windows 系統(tǒng)自帶的應(yīng)用軟件在運(yùn)行過(guò)程中對(duì)采集的數(shù)據(jù)流量進(jìn)行干擾。數(shù)據(jù)采集完畢后,運(yùn)行Linux 系統(tǒng)中的識(shí)別程序。
運(yùn)行15 分鐘后,從程序中得到的實(shí)驗(yàn)識(shí)別結(jié)果如圖6 所示。

圖6 各方法的識(shí)別率
由圖6 可以看出,DPI 技術(shù)在識(shí)別P2P 流量時(shí),識(shí)別率達(dá)到了86%以上;BP 神經(jīng)網(wǎng)絡(luò)在識(shí)別P2P 流量時(shí),識(shí)別率也在85%左右;而結(jié)合了DPI 和BP 神經(jīng)網(wǎng)絡(luò)的方法在識(shí)別P2P 流量時(shí),識(shí)別率達(dá)到了95%。
整理圖表數(shù)據(jù),對(duì)各方法的平均識(shí)別率進(jìn)行對(duì)比,結(jié)果如表2 所示。

表2 各方法的平均識(shí)別率
由表2 可知,在進(jìn)行P2P 流量識(shí)別時(shí),DPI 的識(shí)別率為86.5%,BP 神經(jīng)網(wǎng)絡(luò)的識(shí)別率為85.3%,結(jié)合了DPI 和BP 神經(jīng)網(wǎng)絡(luò)方法的識(shí)別率為95.6%。
結(jié)合圖6 和表2 中的數(shù)據(jù)進(jìn)行分析可知,基于DPI 的檢測(cè)方法在識(shí)別BT、騰訊視頻、迅雷、酷狗音樂(lè)和Skype 等應(yīng)用程序時(shí),其效果和基于BP 神經(jīng)網(wǎng)絡(luò)的方法相差較小,這是因?yàn)榛贐P 神經(jīng)網(wǎng)絡(luò)的檢測(cè)方法在識(shí)別BT、騰訊視頻、迅雷和酷狗音樂(lè)等已知的P2P應(yīng)用程序時(shí),其表現(xiàn)不及DPI 方法,但是它在識(shí)別加密流量Skype 時(shí),性能比DPI 檢測(cè)法要好;而基于DPI 和BP 神經(jīng)網(wǎng)絡(luò)的檢測(cè)方法結(jié)合了兩者的優(yōu)點(diǎn),在識(shí)別已知P2P 應(yīng)用和加密P2P 應(yīng)用時(shí)都能獲得比較好的性能,因此它的識(shí)別率很高。
本文結(jié)合DPI 和BP 神經(jīng)網(wǎng)絡(luò)對(duì)P2P 流量進(jìn)行檢測(cè)。實(shí)驗(yàn)證明該方法提升了流量檢測(cè)的準(zhǔn)確度。但由于傳統(tǒng)BP 神經(jīng)網(wǎng)絡(luò)存在易陷入局部極小值的缺陷,在以后的工作中可以對(duì)BP 算法做一些優(yōu)化,進(jìn)一步提升P2P 流量檢測(cè)的準(zhǔn)確度。