吳 超 王佳賀 魏松杰
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 江蘇 南京 210094)
隨著以安卓為代表的智能終端的普及,網(wǎng)絡(luò)數(shù)據(jù)交換愈發(fā)頻繁。然而,現(xiàn)今大多數(shù)人只關(guān)注一個(gè)應(yīng)用程序是否是惡意應(yīng)用,卻忽視了應(yīng)用程序通過(guò)網(wǎng)絡(luò)流量所泄露出的用戶行為信息。應(yīng)用程序的行為流量不僅承載著用戶的個(gè)人意志,也成為行為模式分析、數(shù)據(jù)挖掘、用戶追蹤和隱私泄露的一個(gè)漏洞。
雖然現(xiàn)有的HTTPS加密技術(shù)和各種網(wǎng)絡(luò)安全協(xié)議可以保證網(wǎng)絡(luò)流量在Android終端傳輸過(guò)程中的保密性和完整性[1],但它們對(duì)于行為流量的嗅探分析、行為特征描述和行為追蹤卻無(wú)能為力。這類(lèi)漏洞被黑客和隱私窺探者加以利用來(lái)嗅探和識(shí)別用戶的網(wǎng)絡(luò)行為[2]。此外,流行的機(jī)器學(xué)習(xí)方法如BP神經(jīng)網(wǎng)絡(luò)算法[3]檢測(cè)網(wǎng)絡(luò)流量已經(jīng)解決了傳統(tǒng)方法準(zhǔn)確率低、開(kāi)銷(xiāo)大、穩(wěn)定性低、應(yīng)用范圍有限等問(wèn)題。陶曉玲等[4]通過(guò)對(duì)標(biāo)準(zhǔn)的BP網(wǎng)絡(luò)算法改進(jìn)后,提出了一種處理網(wǎng)絡(luò)流量問(wèn)題具有明顯優(yōu)勢(shì)的分類(lèi)方法;陳曉天等[5]通過(guò)分析網(wǎng)絡(luò)流量特征構(gòu)建了一種基于BP神經(jīng)網(wǎng)絡(luò)的IP網(wǎng)絡(luò)流量預(yù)測(cè)模型;魏松杰等[6]采用機(jī)器學(xué)習(xí)的方法生成了基于BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)行為模型,實(shí)現(xiàn)了對(duì)未知的Android應(yīng)為行為檢測(cè);劉璐選擇BP神經(jīng)網(wǎng)絡(luò)對(duì)惡意軟件進(jìn)行識(shí)別,建立一個(gè)檢測(cè)速度快、準(zhǔn)確率高的Android應(yīng)用安全評(píng)估平臺(tái)。所以,這種基于BP神經(jīng)網(wǎng)絡(luò)的流行機(jī)器方法從網(wǎng)絡(luò)流量的分類(lèi)、預(yù)測(cè)到網(wǎng)絡(luò)行為的分析和實(shí)現(xiàn),都可以非常高效地觸發(fā)并提取應(yīng)用程序。因此,面對(duì)以上種種問(wèn)題,必須尋求一種更加有效的辦法實(shí)現(xiàn)對(duì)應(yīng)用網(wǎng)絡(luò)行為的保護(hù)。
應(yīng)用行為流量混淆是一種在數(shù)據(jù)傳輸過(guò)程中的隱私保護(hù)手段,可以在不改變用戶原先連接的狀態(tài)和內(nèi)容的前提下,改變數(shù)據(jù)包的時(shí)序和數(shù)量特征。網(wǎng)絡(luò)流量被混淆后會(huì)大大地降低流量的準(zhǔn)確識(shí)別率和高效性,即使采用機(jī)器學(xué)習(xí)算法對(duì)網(wǎng)絡(luò)流量識(shí)別,檢測(cè)后也會(huì)毫無(wú)成效,從而非常有效地實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)行為的保護(hù)。國(guó)外較為典型的混淆工具有Anonym、Anontool等[7-8],但是它們一般適用于網(wǎng)絡(luò)流量的重放,用戶使用應(yīng)用時(shí)無(wú)法長(zhǎng)期等待流量重放,因此不適用于Android終端用戶實(shí)時(shí)流量混淆。國(guó)際上流行用Tor[9-10]進(jìn)行匿名通信,它通過(guò)在瀏覽器內(nèi)嵌入轉(zhuǎn)發(fā)插件[11-12],將用戶的實(shí)時(shí)行為流量偽裝成訪問(wèn)第三方服務(wù)器的流量,但是它必須依賴于瀏覽器插件通過(guò)HTTPS隧道隱藏自身的TLS指紋特征[13-14]。Android終端的應(yīng)用并不完全是基于B/S架構(gòu),因此,Tor在Android終端應(yīng)用上不具有普適性。
本混淆方法總結(jié)了目前流行的機(jī)器學(xué)習(xí)算法對(duì)流量的分類(lèi)情況和諸如Anonym混淆工具、Tor匿名通信過(guò)程的不足,設(shè)計(jì)并實(shí)現(xiàn)了抗機(jī)器學(xué)習(xí)檢測(cè)的Android應(yīng)用行為流量混淆過(guò)程,主要功能與創(chuàng)新點(diǎn)如下:
1) 設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)抵抗機(jī)器學(xué)習(xí)檢測(cè)的Android應(yīng)用行為流量混淆過(guò)程,能夠?qū)崟r(shí)對(duì)數(shù)據(jù)包進(jìn)行嗅探、緩存、處理和轉(zhuǎn)發(fā)。
2) 提出的混淆方法完全從數(shù)據(jù)流統(tǒng)計(jì)特征、數(shù)據(jù)流靜態(tài)特征和數(shù)據(jù)流動(dòng)態(tài)特征進(jìn)行處理,混淆后的數(shù)據(jù)包流量難以被現(xiàn)有的面向網(wǎng)絡(luò)時(shí)序數(shù)據(jù)的機(jī)器學(xué)習(xí)算法分析建模或分類(lèi)識(shí)別。
3) 用戶可以對(duì)數(shù)據(jù)包的分布、間隔、順序、長(zhǎng)度等四種基本時(shí)序特征處理方法進(jìn)行組合定制,實(shí)現(xiàn)所需的流量混淆效果。
4) 過(guò)程實(shí)現(xiàn)作為獨(dú)立程序運(yùn)行在網(wǎng)絡(luò)層,不需要運(yùn)行于第三方軟件環(huán)境,混淆窗口和細(xì)粒度可以被用戶自由定制。
本混淆過(guò)程采用網(wǎng)絡(luò)分層的思想,基于TCP/IP五層網(wǎng)絡(luò)架構(gòu),如圖1所示,在中間層、網(wǎng)絡(luò)層實(shí)現(xiàn)對(duì)應(yīng)用行為數(shù)據(jù)包的混淆。Android終端內(nèi)的Android應(yīng)用為整個(gè)混淆過(guò)程提供入口應(yīng)用行為流量,將流量數(shù)據(jù)包按照層次逐層拆解,傳輸至Android終端的VPN Service內(nèi)。由于物理層和數(shù)據(jù)鏈路層涉及過(guò)多硬件內(nèi)容,所以該過(guò)程著重在上三層進(jìn)行應(yīng)用行為數(shù)據(jù)包的混淆。VPN Service在網(wǎng)絡(luò)層實(shí)現(xiàn)應(yīng)用行為數(shù)據(jù)包的混淆功能,在網(wǎng)絡(luò)端口實(shí)現(xiàn)對(duì)實(shí)時(shí)流量數(shù)據(jù)包的嗅探,VPN Service內(nèi)流量混淆模塊的策略制定器實(shí)現(xiàn)用戶混淆策略的配置和管理。
圖1 應(yīng)用行為流量流轉(zhuǎn)
本過(guò)程采用如圖2的流程對(duì)應(yīng)用行為流量進(jìn)行混淆:
步驟1在Android平臺(tái)啟用流量嗅探器截獲用戶行為流量,為混淆引擎提供入口流量。
步驟2將獲取的用戶行為流量作為輸入流量傳輸給混淆引擎,混淆引擎內(nèi)置四種基礎(chǔ)方法有流量分布擬合、時(shí)間間隔混淆、包序混淆和長(zhǎng)度混淆。用戶可以調(diào)節(jié)四種基礎(chǔ)方法的參數(shù)調(diào)節(jié)混淆程度,也可以任意疊加和重復(fù)提升混淆復(fù)雜度;該引擎根據(jù)制定的混淆策略對(duì)行為流量進(jìn)行混淆,引擎輸出的流量作為流量發(fā)生器的輸入流量。
步驟3流量發(fā)生器在輸入流量?jī)?nèi)隨機(jī)插入一些無(wú)關(guān)流量,最終將流量發(fā)生器的輸出流量通過(guò)Android終端的無(wú)線網(wǎng)卡發(fā)送到目的服務(wù)器IP。
圖2 混淆過(guò)程流程
本混淆過(guò)程的結(jié)構(gòu)如圖3所示。
圖3 混淆過(guò)程結(jié)構(gòu)
1) 為了實(shí)現(xiàn)對(duì)Android終端流量的實(shí)時(shí)操作,本混淆過(guò)程自行編寫(xiě)了Android終端的VPN Service。該VPN Service截獲用戶的應(yīng)用行為流量,為混淆引擎提供輸入流量,VPN Service能在該服務(wù)內(nèi)部進(jìn)行用戶流量獲取,調(diào)用混淆引擎和流量發(fā)生器,完成用戶行為流量的混淆。
2) 混淆引擎的設(shè)計(jì),將收集到的流量按照用戶指定的混淆策略進(jìn)行處理。運(yùn)行在設(shè)備網(wǎng)絡(luò)連接端口上的數(shù)據(jù)包嗅探程序,將所有符合混淆規(guī)則的網(wǎng)絡(luò)流量,例如指定協(xié)議和端口的數(shù)據(jù)包,進(jìn)行截取并存入相應(yīng)的緩存隊(duì)列。混淆引擎根據(jù)規(guī)則設(shè)定,調(diào)用相應(yīng)的混淆功能模塊,對(duì)緩存隊(duì)列中的數(shù)據(jù)包進(jìn)行在線處理,將處理結(jié)果即混淆后的新的數(shù)據(jù)包提供給流量發(fā)生器。
本過(guò)程目前共支持四種數(shù)據(jù)包混淆操作,分布擬合功能就是將截取的多組數(shù)據(jù)包分析后按照指定時(shí)序特征發(fā)送出去,是對(duì)于已知樣本數(shù)據(jù)包的分布特征的模擬,需要應(yīng)用層提供作為被模擬對(duì)象的數(shù)據(jù)包流樣本。時(shí)間間隔混淆是在不改變數(shù)據(jù)包個(gè)數(shù)和相鄰順序的前提下,調(diào)整數(shù)據(jù)包之間的發(fā)送時(shí)間間隔,以便符合應(yīng)用程序設(shè)置的間隔時(shí)間分布規(guī)律。順序混淆是指將一段時(shí)間窗口中的相鄰數(shù)據(jù)包的局部發(fā)送順序進(jìn)行調(diào)整亂序。長(zhǎng)度混淆是指對(duì)于相鄰數(shù)據(jù)包進(jìn)行符合混淆規(guī)則的合并和拆分,其效果為數(shù)據(jù)包個(gè)數(shù)的改變。所有混淆模塊對(duì)數(shù)據(jù)包流的混淆操作后,必須保證相應(yīng)的連接不能中斷,并且收到服務(wù)器返回的應(yīng)答信息也不能出錯(cuò),即不能影響應(yīng)用層的正常通信功能。
下面主要介紹四種流量混淆操作的基本思路。
(1) 流量分布擬合 先讀取流量A的信息,調(diào)用流量嗅探模塊的流量分析器,分析包間間隔的時(shí)序特征。再讀取流量B的信息,分析其數(shù)據(jù)包內(nèi)容信息,將流量B的內(nèi)容按照流量A的包間間隔發(fā)送到目的IP。
(2) 時(shí)間間隔混淆 采用隨機(jī)化的辦法,將數(shù)據(jù)包之間的時(shí)間間隔混淆成無(wú)法體現(xiàn)用戶流量特性的多種隨機(jī)分布再發(fā)送出去,支持正態(tài)分布、指數(shù)分布等,根據(jù)以這兩種分布為代表的符合數(shù)理統(tǒng)計(jì)特征的分布函數(shù),無(wú)法分析出用戶的行為特征,大大增強(qiáng)了該過(guò)程的混淆效果。
(3) 包序混淆 本混淆過(guò)程具有差錯(cuò)控制機(jī)制,該機(jī)制可以混亂數(shù)據(jù)包順序,即對(duì)于提前到達(dá)的亂序數(shù)據(jù)包暫不確認(rèn),直到前面的順序數(shù)據(jù)包到達(dá)后再一起進(jìn)行累計(jì)確認(rèn)。根據(jù)這一機(jī)制,將一個(gè)會(huì)話內(nèi)指定時(shí)間窗口的數(shù)據(jù)包順序進(jìn)行混淆。若超時(shí),發(fā)送方仍未收到確認(rèn),發(fā)送方將重發(fā)該數(shù)據(jù)段,造成接收方收到重復(fù)數(shù)據(jù)段,接收方只需要簡(jiǎn)單地丟棄重復(fù)段即可,不影響連接雙方的正常通信。
(4) 長(zhǎng)度混淆 將一個(gè)會(huì)話內(nèi)指定的數(shù)據(jù)包拆分為多個(gè)數(shù)據(jù)包,或者將多個(gè)連續(xù)數(shù)據(jù)包進(jìn)行報(bào)文合并,拆解后的其他數(shù)據(jù)包報(bào)文頭部和原數(shù)據(jù)包保持一致,合并后的數(shù)據(jù)包與合并前的多個(gè)數(shù)據(jù)包報(bào)文頭部也保持一致,僅僅拆分和合并了數(shù)據(jù)包內(nèi)容。拆解數(shù)據(jù)包可以理解為將一個(gè)數(shù)據(jù)包拆解,將運(yùn)輸層內(nèi)一個(gè)間隔的Seq拆分為多個(gè)相鄰間隔的連續(xù)Seq。合并數(shù)據(jù)包相反,將多個(gè)連續(xù)的Seq包合并為一個(gè)間隔的Seq,合并時(shí)若當(dāng)前數(shù)據(jù)包的長(zhǎng)度已達(dá)到最大,則略過(guò)當(dāng)前數(shù)據(jù)包。圖4顯示了該混淆操作的一個(gè)具體的混淆示例。
圖4 長(zhǎng)度混淆示例
3) 流量發(fā)生器,用于產(chǎn)生無(wú)關(guān)應(yīng)用行為流量。為了增強(qiáng)抗分析性能,本過(guò)程引入了無(wú)關(guān)流量發(fā)生器,用于迷惑當(dāng)前一些機(jī)器學(xué)習(xí)分類(lèi)算法。其原理是在經(jīng)過(guò)混淆引擎混淆后的流量?jī)?nèi)再摻雜進(jìn)一些無(wú)關(guān)的流量,例如一些序號(hào)遠(yuǎn)大于當(dāng)前序號(hào)的包和序號(hào)遠(yuǎn)小于當(dāng)前序號(hào)的包等,序號(hào)遠(yuǎn)小于當(dāng)前序號(hào)的數(shù)據(jù)包因重復(fù)接收會(huì)被丟棄,若緩存隊(duì)列空間不足,序號(hào)遠(yuǎn)大于當(dāng)前序號(hào)數(shù)據(jù)包同樣被丟棄。該操作旨在抵抗目前基于特征分類(lèi)的機(jī)器學(xué)習(xí)算法(如BP神經(jīng)網(wǎng)絡(luò)等),使得經(jīng)過(guò)混淆引擎出來(lái)的流量不能輕易被分類(lèi),且不會(huì)影響用戶的正常通信。
為了驗(yàn)證混淆過(guò)程的有效性和抵抗機(jī)器學(xué)習(xí)算法分類(lèi)的能力,對(duì)Android終端主流應(yīng)用程序進(jìn)行擬合和混淆的實(shí)驗(yàn)設(shè)計(jì)和驗(yàn)證。Android內(nèi)置的VPN Service實(shí)現(xiàn)應(yīng)用行為流量的擬合和混淆,該Service是Android內(nèi)置,不需要Root權(quán)限,極大地提升了VPN服務(wù)的能力。該過(guò)程通過(guò)定制VPN Service框架,人為地構(gòu)造一條從本機(jī)終端到VPN Service再到遠(yuǎn)程服務(wù)器的通路,可以將用戶發(fā)送的應(yīng)用數(shù)據(jù)包先截獲,處理后再發(fā)送給遠(yuǎn)程服務(wù)器。
本實(shí)驗(yàn)選擇多臺(tái)華為Honor測(cè)試機(jī),測(cè)試機(jī)的實(shí)驗(yàn)平臺(tái)均為Android4.4且均獲取Root權(quán)限,PC端為配備Xeon E5-2620 CPU、16 GB內(nèi)存的計(jì)算機(jī),混淆過(guò)程環(huán)境為Ubuntu16.04,用于提取和分析混淆后的流量。
本實(shí)驗(yàn)共收集新聞、音樂(lè)、視頻、購(gòu)物、社交五類(lèi)共計(jì)332個(gè)Android應(yīng)用,將所有的應(yīng)用單獨(dú)運(yùn)行于模擬器內(nèi),采用ADT內(nèi)的Monkey工具模擬人機(jī)交互行為,將交互后的模擬行為流量輸入至VPN Service,VPN Service復(fù)制一份流量后,按照混淆策略進(jìn)行實(shí)驗(yàn)。其中,流量分布擬合用于模擬應(yīng)用行為流量的時(shí)間間隔特征,流量混淆由時(shí)間間隔混淆、包序混淆和長(zhǎng)度混淆三種方式疊加而成,用戶根據(jù)需求進(jìn)行混淆。另外,為了達(dá)到明顯的混淆效果,本實(shí)驗(yàn)均采用不同的混淆參數(shù)進(jìn)行三次混淆實(shí)驗(yàn)。
本實(shí)驗(yàn)共設(shè)計(jì)3種實(shí)驗(yàn)及驗(yàn)證方式:
1) 驗(yàn)證流量擬合的效果:將一類(lèi)待擬合應(yīng)用的行為流量輸入至混淆引擎,通過(guò)混淆引擎讀取擬合流量特征,根據(jù)讀取的流量特征擬合待擬合應(yīng)用流量,采用SVM和BP神經(jīng)網(wǎng)絡(luò)算法對(duì)擬合后的流量進(jìn)行分類(lèi),驗(yàn)證兩種分類(lèi)算法對(duì)擬合后流量的識(shí)別準(zhǔn)確率,識(shí)別準(zhǔn)確率越高,說(shuō)明擬合效果越好。
2) 驗(yàn)證流量混淆的效果:將待混淆流量輸入至混淆引擎,混淆引擎根據(jù)用戶指定的混淆規(guī)則(本實(shí)驗(yàn)采用3種混淆規(guī)則疊加方式)對(duì)流量進(jìn)行混淆,采用SVM和BP神經(jīng)網(wǎng)絡(luò)算法對(duì)擬合后的流量進(jìn)行分類(lèi),驗(yàn)證兩種分類(lèi)算法對(duì)混淆后流量的識(shí)別準(zhǔn)確率,識(shí)別為原流量的準(zhǔn)確率越低,說(shuō)明混淆效果越好。
3) 驗(yàn)證混淆過(guò)程的性能:以QoS作為參照指標(biāo),以原始流量的可用性、吞吐量(接收)、時(shí)延和丟包率作為參照標(biāo)準(zhǔn),對(duì)三類(lèi)應(yīng)用(新聞、視頻、社交)進(jìn)行實(shí)驗(yàn),混淆流量的相應(yīng)指標(biāo)作為對(duì)比標(biāo)準(zhǔn)來(lái)驗(yàn)證混淆過(guò)程的性能。
特征提?。和ㄟ^(guò)定量分析應(yīng)用行為流量,提取了總包數(shù)、總連接數(shù)、平均TCP連接時(shí)長(zhǎng)、源地址端口信息熵、目的地址IP信息熵、目的地址端口信息熵。信息熵表示信息的分散與混亂程度,能夠一定程度上量化信息的價(jià)值。信息熵的計(jì)算公式如下:
式中:E[-logpi]表示-logpi的統(tǒng)計(jì)平均值,pi表示每一種信源Ui出現(xiàn)的概率,若某一信息的取值確定且唯一,那么該信息的信息熵為0,即該信息只存在有一種取值。
本實(shí)驗(yàn)采用BP神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)對(duì)擬合或混淆后的應(yīng)用行為流量進(jìn)行分類(lèi),目的在于驗(yàn)證能否有效抵御機(jī)器學(xué)習(xí)算法的分類(lèi)。SVM在機(jī)器學(xué)習(xí)方面有著深厚的數(shù)學(xué)理論,在分類(lèi)問(wèn)題上也有著廣泛的應(yīng)用。BP神經(jīng)網(wǎng)絡(luò)作為應(yīng)用最為廣泛的神經(jīng)網(wǎng)絡(luò)模型之一,優(yōu)點(diǎn)在于網(wǎng)絡(luò)每層的處理單元數(shù)、中間層數(shù)、網(wǎng)絡(luò)的學(xué)習(xí)率等都能夠按照實(shí)際的需要設(shè)定并且是任意的[8],這使得BP網(wǎng)絡(luò)有了極強(qiáng)的靈活性,這也是本實(shí)驗(yàn)采用這種機(jī)器學(xué)習(xí)算法的原因。
SVM支持向量機(jī)通過(guò)找到一個(gè)分類(lèi)平面,將數(shù)據(jù)分隔在平面兩側(cè),從而實(shí)現(xiàn)分類(lèi)。假設(shè)分類(lèi)超平面為f(x)=wTx+b,將這個(gè)問(wèn)題轉(zhuǎn)化為二次凸函數(shù)與約束條件的優(yōu)化問(wèn)題:
式中:w表示權(quán)重矩陣,b表示偏置。
s.t.yi(wTx)+b≥1i=1,2,…,n
使用拉格朗日乘子法求解該問(wèn)題,構(gòu)建拉格朗日方程:
式中:αi是拉格朗日乘子,aj可以用ai和其他參數(shù)表示出來(lái),再使用SMO算法求解,SMO算法每次迭代只對(duì)αi和αj兩個(gè)分量調(diào)整,其他分量保持不變,求解αi和αj后,通過(guò)αi和αj改進(jìn)其他分量。再使用核函數(shù)將樣本從原始空間映射到一個(gè)更高維的特質(zhì)空間中,使得樣本在新的高維空間中可以被線性劃分為兩類(lèi),即在空間內(nèi)線性劃分。
實(shí)驗(yàn)所采用的SVM模型基于scikit-learn機(jī)器學(xué)習(xí)框架實(shí)現(xiàn),核函數(shù)使用高斯核函數(shù):
式中:σ>0為高斯核的帶寬,σ值越小,分類(lèi)界面越連續(xù);σ值越大,分類(lèi)界面越“散”,分類(lèi)效果越好?!瑇i-xj‖2表示xi和xj的歐式距離。
實(shí)驗(yàn)所采用的BP神經(jīng)網(wǎng)絡(luò)模型基于keras深度學(xué)習(xí)框架,損失函數(shù)設(shè)置為均方根誤差函數(shù)(RMSE),優(yōu)化器設(shè)置為梯度下降法。結(jié)構(gòu)為一層輸入層、二層隱藏層、一層輸出層。輸入數(shù)據(jù)是六維數(shù)據(jù),所以,輸入層神經(jīng)節(jié)點(diǎn)數(shù)設(shè)置為6,每層隱藏層神經(jīng)節(jié)點(diǎn)數(shù)設(shè)置為10,由于共有五類(lèi)應(yīng)用,所以設(shè)置輸出層節(jié)點(diǎn)為5。為了防止網(wǎng)絡(luò)的過(guò)擬合,在兩層隱藏層之間加了一層Dropout層,比例參數(shù)設(shè)置為0.7。本實(shí)驗(yàn)選用ReLu函數(shù)作為網(wǎng)絡(luò)的隱藏層的激活函數(shù),輸出層采用softmax函數(shù)作為激活函數(shù),這在收斂速度與收斂精度上都要優(yōu)于BP網(wǎng)絡(luò)常用的激活函數(shù)Sigmoid。
輸入:
net=x1w1+x2w2+…+xnwn
式中:net表示一層隱藏層的輸出,xn表示輸入值,wn表示隱藏層的權(quán)重。
輸出:
均方根誤差函數(shù):
式中:d(k)表示真實(shí)值,yk表示隱藏層輸出值。
BP神經(jīng)網(wǎng)絡(luò)的架構(gòu)如圖5所示。
圖5 BP神經(jīng)網(wǎng)絡(luò)架構(gòu)
首先預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò),訓(xùn)練數(shù)據(jù)采用樣本手機(jī)應(yīng)用的實(shí)際流量信息。由于BP神經(jīng)網(wǎng)絡(luò)的收斂性受學(xué)習(xí)率的影響較大,較大的學(xué)習(xí)率可能會(huì)導(dǎo)致本過(guò)程的不穩(wěn)定,使神經(jīng)網(wǎng)絡(luò)陷入局部最優(yōu)狀態(tài),較小的學(xué)習(xí)率又會(huì)導(dǎo)致訓(xùn)練時(shí)間過(guò)長(zhǎng),使得網(wǎng)絡(luò)的收斂速度過(guò)慢。因此,為了尋找最優(yōu)的學(xué)習(xí)率進(jìn)行數(shù)次實(shí)驗(yàn),如圖6所示。實(shí)驗(yàn)發(fā)現(xiàn)學(xué)習(xí)率設(shè)置為0.1最為合適,模型在該學(xué)習(xí)率下的平均分類(lèi)準(zhǔn)確率可以達(dá)到85%以上。
圖6 誤差曲線
3.2.1 流量擬合
如圖7(a)所示,展示了三種不同類(lèi)型APP的典型網(wǎng)絡(luò)行為。新聞?lì)悜?yīng)用的特點(diǎn)是一次點(diǎn)擊返回大量回復(fù),所以圖中顯示的騰訊新聞在0~0.5秒內(nèi)已經(jīng)返回了80%的數(shù)據(jù)包;視頻類(lèi)應(yīng)用的特點(diǎn)是連續(xù)的連接,所以優(yōu)酷視頻在圖中顯示為較為均勻的分布特征;社交類(lèi)應(yīng)用在無(wú)廣告時(shí)只有發(fā)送消息時(shí)才會(huì)發(fā)送流量,所以陌陌在圖中表現(xiàn)為時(shí)斷時(shí)續(xù)的階梯型特征。圖7(b)是將視頻類(lèi)和社交類(lèi)應(yīng)用擬合成新聞?lì)悜?yīng)用后的分布圖,除了在拐點(diǎn)處有細(xì)小差別外,其余時(shí)間間隔的分布與新聞?lì)惖男袨樘卣鳠o(wú)異。如果不考慮數(shù)據(jù)包的內(nèi)容信息,單從時(shí)序特征分析,愛(ài)奇藝這種視頻類(lèi)和陌陌這種社交類(lèi)的流量特性已經(jīng)非常類(lèi)似于新聞?lì)惖牧髁刻卣?。混淆后的網(wǎng)絡(luò)流量在TCP/IP層完全可以抵御基于類(lèi)別的數(shù)據(jù)流量分析和建模。
(a) 擬合前
(b) 擬合后圖7 流量擬合示例
表1是采用SVM和BP神經(jīng)網(wǎng)絡(luò)算法對(duì)擬合后的流量分類(lèi)的結(jié)果,表2是擬合后BP神經(jīng)網(wǎng)絡(luò)詳細(xì)分類(lèi)結(jié)果,擬合后的分類(lèi)準(zhǔn)確率基本都大于80%,從實(shí)驗(yàn)數(shù)據(jù)可以分析出本實(shí)驗(yàn)流量擬合方法的有效性。比如,視頻類(lèi)應(yīng)用的行為流量數(shù)據(jù)被擬合成新聞?lì)悜?yīng)用的流量數(shù)據(jù)后,BP神經(jīng)網(wǎng)絡(luò)算法將其分類(lèi)成新聞?lì)悜?yīng)用的可能性(準(zhǔn)確率)高達(dá)95.6%。
表1 擬合后BP神經(jīng)網(wǎng)絡(luò)分類(lèi)結(jié)果
表2 擬合后BP神經(jīng)網(wǎng)絡(luò)詳細(xì)分類(lèi)結(jié)果
3.2.2 流量混淆
使用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)來(lái)檢測(cè)經(jīng)過(guò)混淆處理后的樣本數(shù)據(jù),以此驗(yàn)證混淆方法的有效性。為了提高實(shí)驗(yàn)的準(zhǔn)確性,本實(shí)驗(yàn)采用十折交叉驗(yàn)證的方法,將樣本分為10份子樣本,其中9份為訓(xùn)練集,1份為測(cè)試集,交叉重復(fù)驗(yàn)證10次,每個(gè)子樣本驗(yàn)證一次,取10次平均值,得出唯一結(jié)果。本實(shí)驗(yàn)所采用的樣本應(yīng)用均從百度手機(jī)應(yīng)用市場(chǎng)獲得,總計(jì)332個(gè)應(yīng)用。表3和表4展示了單個(gè)應(yīng)用網(wǎng)絡(luò)流量混淆的結(jié)果。最終得出的分類(lèi)結(jié)果如表5所示。
表3 騰訊新聞APP的流量混淆結(jié)果
表4 陌陌APP的流量混淆結(jié)果
表5 混淆后SVM和BP神經(jīng)網(wǎng)絡(luò)分類(lèi)結(jié)果
BP網(wǎng)絡(luò)詳細(xì)分類(lèi)結(jié)果如表6所示,混淆后的應(yīng)用行為流量被分類(lèi)為混淆前應(yīng)用類(lèi)別的準(zhǔn)確率基本都低于25%。根據(jù)以上實(shí)驗(yàn)結(jié)果看出,該過(guò)程所采用的流量混淆方法極大的降低了SVM和BP神經(jīng)網(wǎng)絡(luò)的分類(lèi)準(zhǔn)確性,有效抵御目前流行的機(jī)器學(xué)習(xí)算法。BP神經(jīng)網(wǎng)絡(luò)作為在網(wǎng)絡(luò)流量分析過(guò)程中使用最為廣泛的機(jī)器學(xué)習(xí)方法之一,對(duì)處理后的應(yīng)用網(wǎng)絡(luò)行為流量分類(lèi)成效不高,可見(jiàn),本混淆過(guò)程的方法是非常有效的。
表6 混淆后BP神經(jīng)網(wǎng)絡(luò)詳細(xì)分類(lèi)結(jié)果
為了驗(yàn)證混淆后的流量能收到既定回復(fù)數(shù)據(jù)包,并不是單向發(fā)送數(shù)據(jù)包,本文也做了以下實(shí)驗(yàn):測(cè)試機(jī)連接PC,(1) 不開(kāi)啟混淆過(guò)程,啟動(dòng)優(yōu)酷視頻APP,使用tcpdump命令,將流量重定向到pcap文件1,點(diǎn)擊默認(rèn)推送的第一條視頻。(2) 開(kāi)啟混淆過(guò)程,打開(kāi)優(yōu)酷視頻,將流量重定向到pcap文件2,點(diǎn)擊默認(rèn)推送的第一條視頻。(3) 重復(fù)上述步驟10次,通過(guò)優(yōu)酷視頻的IP地址過(guò)濾兩個(gè)pcap文件的數(shù)據(jù)包。通過(guò)比對(duì)兩個(gè)pcap文件,不難發(fā)現(xiàn),經(jīng)過(guò)本方法混淆后的流量能收到優(yōu)酷視頻APP的既定回復(fù),上述實(shí)驗(yàn)(2)混淆發(fā)送數(shù)據(jù)包后并未影響原定視頻的播放。從表7也可以看出,混淆后的流量并不會(huì)影響數(shù)據(jù)包接收,當(dāng)在原始數(shù)據(jù)包基礎(chǔ)上拆分?jǐn)?shù)據(jù)包時(shí),若超時(shí)未收到相應(yīng)數(shù)據(jù)包,會(huì)進(jìn)行重發(fā)。
表7 混淆后接收流量結(jié)果
如圖8所示,經(jīng)過(guò)混淆后的流量均能正常接收數(shù)據(jù)包。受實(shí)際網(wǎng)絡(luò)擁塞情形的影響,與原流量相比,各個(gè)時(shí)刻的接收數(shù)據(jù)包數(shù)量可能略有出入,但從各時(shí)刻累積接收數(shù)據(jù)包角度來(lái)看,混淆后的接收流量已經(jīng)趨向于原接收流量,對(duì)原先網(wǎng)絡(luò)幾乎不產(chǎn)生影響,不會(huì)影響用戶在APP端的實(shí)際使用體驗(yàn)。
(a) 各時(shí)刻接收數(shù)據(jù)包對(duì)比
(b) 各時(shí)刻累積分布函數(shù)圖8 原流量與混淆流量的接收流量對(duì)比
根據(jù)QoS服務(wù)質(zhì)量的定義,以原始流量的可用性、吞吐量(接收)、時(shí)延和丟包率作為參照標(biāo)準(zhǔn),混淆流量的相應(yīng)指標(biāo)作為對(duì)比標(biāo)準(zhǔn),用三類(lèi)應(yīng)用(新聞、視頻、社交)進(jìn)行實(shí)驗(yàn)。如表8所示,原始應(yīng)用和混淆后應(yīng)用流量都可以在系統(tǒng)上完好運(yùn)行,系統(tǒng)可用性良好。相較于原始流量,三類(lèi)應(yīng)用采用不同的混淆方法,在發(fā)送和接收數(shù)據(jù)包時(shí)吞吐率方面均表現(xiàn)出良好的效果,混淆1將數(shù)據(jù)包合并發(fā)送表現(xiàn)出更低的發(fā)送吞吐量,混淆2拆分?jǐn)?shù)據(jù)包后發(fā)送有更高的發(fā)送吞吐量。由于數(shù)據(jù)包混淆后再接收需要整合過(guò)程,所以吞吐量在接收數(shù)據(jù)包時(shí)較原始數(shù)據(jù)包會(huì)有所增長(zhǎng),但相差不大。在時(shí)延方面,雖然混淆過(guò)程的加入會(huì)增大延時(shí),但混淆流量相比于原始流量也只體現(xiàn)出微弱的差別,有很低的延時(shí),社交混淆流量和原始流量時(shí)延僅差0.005秒。兩種混淆方法基于原始流量在丟包率方面也是表現(xiàn)出很好的性能,社交應(yīng)用混淆后低至0.19%,基本不影響使用。
表8 QoS服務(wù)質(zhì)量指標(biāo)
本實(shí)驗(yàn)過(guò)程專(zhuān)注于Android移動(dòng)設(shè)備應(yīng)用行為流量的隱私保護(hù),并不依賴于第三方插件,可以做到實(shí)時(shí)擬合和混淆應(yīng)用流量數(shù)據(jù)包。經(jīng)過(guò)擬合后的應(yīng)用數(shù)據(jù)包能夠被SVM和BP神經(jīng)網(wǎng)絡(luò)算法識(shí)別為預(yù)擬合應(yīng)用類(lèi)別,經(jīng)過(guò)混淆后的應(yīng)用數(shù)據(jù)包很難再被SVM和BP神經(jīng)網(wǎng)絡(luò)算法識(shí)別為原應(yīng)用類(lèi)別。本過(guò)程以VPN Service部署在Android平臺(tái)上時(shí),每秒能并發(fā)處理數(shù)千個(gè)應(yīng)用流量數(shù)據(jù)包,能夠在排除網(wǎng)絡(luò)時(shí)延的情況下,在0.5秒內(nèi)完成應(yīng)用流量的擬合和混淆,能收到既定回復(fù),用戶在手機(jī)端幾乎沒(méi)有明顯的延遲感,幾乎不會(huì)影響用戶體驗(yàn)。