何高峰,魏千峰,肖咸財(cái),朱海婷,徐丙鳳
(1.南京郵電大學(xué)物聯(lián)網(wǎng)學(xué)院,江蘇 南京 210003;2.南京林業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院,江蘇 南京 210042)
在互聯(lián)網(wǎng)、物聯(lián)網(wǎng)以及工業(yè)互聯(lián)網(wǎng)的發(fā)展和演化中,網(wǎng)絡(luò)流量加密日益被廣泛接受和采用,成為一項(xiàng)重要的網(wǎng)絡(luò)通信安全保護(hù)機(jī)制[1-2]。但網(wǎng)絡(luò)流量加密技術(shù)是一把雙刃劍,在保護(hù)正常用戶網(wǎng)絡(luò)通信安全的同時(shí),也可以被攻擊者所利用以隱藏攻擊特征,從而躲避檢測(cè)。為此,現(xiàn)有研究提出多種基于機(jī)器學(xué)習(xí)的惡意加密流量檢測(cè)方法。基于機(jī)器學(xué)習(xí)的檢測(cè)方法可以僅使用報(bào)文方向、報(bào)文長(zhǎng)度和報(bào)文時(shí)間間隔等基本元素特征,不需要查看流量?jī)?nèi)容,因而被視為一種自然的惡意加密流量檢測(cè)手段[3]。Anderson 等[4]分析了18 個(gè)惡意軟件家族產(chǎn)生的上萬條惡意傳輸層安全協(xié)議(TLS,transport layer security)加密流量,并利用邏輯回歸模型進(jìn)行分類。實(shí)驗(yàn)結(jié)果表明,分類的準(zhǔn)確率超過98%。除了使用邏輯回歸等基本機(jī)器學(xué)習(xí)算法外,研究人員還結(jié)合最新的深度學(xué)習(xí)算法進(jìn)行惡意加密流量檢測(cè)。Wang 等[5]首先將網(wǎng)絡(luò)流量字節(jié)轉(zhuǎn)變?yōu)閳D像,然后使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行建模分類,平均準(zhǔn)確率超過99%。
在實(shí)際應(yīng)用中,基于機(jī)器學(xué)習(xí)的惡意加密流量檢測(cè)易產(chǎn)生大量誤報(bào)[6]。以科羅拉多大學(xué)博爾德分校校園網(wǎng)絡(luò)為例[7],該網(wǎng)絡(luò)中共包含33 000 余名學(xué)生和7 000 余名教職工,每小時(shí)產(chǎn)生大約1 000 萬條TLS 流量。若檢測(cè)系統(tǒng)的誤報(bào)率為0.01%(文獻(xiàn)[4]中的典型結(jié)果),則每小時(shí)產(chǎn)生1 000 條誤報(bào),一天則多達(dá)24 000 條誤報(bào)。這些誤報(bào)若均由人工分析排除,將是非常艱難的工作。同時(shí),主流的深度學(xué)習(xí)方法大多為黑箱運(yùn)作模式,難以解釋說明一條加密網(wǎng)絡(luò)流量由于存在何種特征而被判斷為惡意流量,從而無法為網(wǎng)絡(luò)管理人員提供可靠的分析依據(jù)。這進(jìn)一步增大了以人工方式排除誤報(bào)的困難性。
為解決上述難題,一種可能的思路是將特征匹配和機(jī)器學(xué)習(xí)相結(jié)合,從而實(shí)現(xiàn)誤報(bào)的自動(dòng)排除。如文獻(xiàn)[8]中所述,在長(zhǎng)達(dá)16 個(gè)月的實(shí)際測(cè)試中,基于特征匹配的入侵檢測(cè)系統(tǒng)共產(chǎn)生1 800 余條誤報(bào)。其中,85%的誤報(bào)與網(wǎng)絡(luò)管理策略相關(guān),如對(duì)等網(wǎng)絡(luò)(P2P,peer to peer)流量識(shí)別等,僅有270 余條誤報(bào)與實(shí)際網(wǎng)絡(luò)攻擊相關(guān)。因此,可通過設(shè)置合適的入侵檢測(cè)特征對(duì)機(jī)器學(xué)習(xí)算法的判別結(jié)果進(jìn)行確認(rèn),從而減少誤報(bào)數(shù)量,且匹配的特征能夠作為網(wǎng)絡(luò)管理人員的分析依據(jù)。為此,一種直觀的實(shí)現(xiàn)方法可描述為針對(duì)加密網(wǎng)絡(luò)流量,檢測(cè)節(jié)點(diǎn)(如網(wǎng)絡(luò)中部署的入侵檢測(cè)系統(tǒng))首先利用機(jī)器學(xué)習(xí)算法進(jìn)行惡意性判別,若判斷為惡意流量,通知用戶終端如電腦、智能手機(jī)等將本地保存的會(huì)話密鑰發(fā)送至檢測(cè)節(jié)點(diǎn);然后進(jìn)一步利用該密鑰對(duì)流量進(jìn)行解密,獲得明文內(nèi)容;最后在流量明文內(nèi)容上開展入侵檢測(cè)特征匹配,若匹配成功,則確認(rèn)當(dāng)前流量為惡意流量,否則為誤報(bào)。
上述特征匹配和機(jī)器學(xué)習(xí)的簡(jiǎn)單結(jié)合又將引發(fā)新的網(wǎng)絡(luò)安全問題。例如,檢測(cè)節(jié)點(diǎn)可宣稱任意的加密網(wǎng)絡(luò)流量為惡意流量,要求用戶終端提供對(duì)應(yīng)會(huì)話密鑰,進(jìn)而獲得明文通信內(nèi)容,威脅用戶的網(wǎng)絡(luò)通信隱私安全?;蛘哂捎脩艚K端解密網(wǎng)絡(luò)流量,檢測(cè)節(jié)點(diǎn)將入侵檢測(cè)特征發(fā)送至用戶終端處進(jìn)行匹配。但同樣地,該方法無法保護(hù)檢測(cè)節(jié)點(diǎn)的數(shù)據(jù)隱私(商用入侵檢測(cè)特征一般需要付費(fèi)購(gòu)買)。同時(shí),惡意用戶終端可以任意宣稱匹配結(jié)果,進(jìn)而躲避檢測(cè)。
本文提出一種安全的惡意加密流量檢測(cè)確認(rèn)方法,旨在保護(hù)數(shù)據(jù)隱私的前提下,通過對(duì)機(jī)器學(xué)習(xí)方法產(chǎn)生的檢測(cè)結(jié)果進(jìn)行自動(dòng)確認(rèn),減少誤報(bào)并產(chǎn)生具體的檢測(cè)判斷依據(jù)。為保護(hù)數(shù)據(jù)隱私,由用戶終端解密網(wǎng)絡(luò)流量?jī)?nèi)容,用戶終端和檢測(cè)節(jié)點(diǎn)通過運(yùn)行安全兩方計(jì)算協(xié)議[9]完成網(wǎng)絡(luò)流量?jī)?nèi)容和入侵檢測(cè)特征間的精準(zhǔn)匹配。在此過程中,用戶終端和檢測(cè)節(jié)點(diǎn)僅交互加密后的數(shù)據(jù),且數(shù)據(jù)不需要解密處理,實(shí)現(xiàn)了用戶終端和檢測(cè)節(jié)點(diǎn)的雙向隱私保護(hù)。特別是,本文考慮并解決惡意用戶終端任意輸入問題,即惡意用戶終端以任意數(shù)據(jù)作為安全兩方計(jì)算協(xié)議的輸入,從而躲避特征匹配過程。本文的主要貢獻(xiàn)如下。
1) 提出惡意加密流量檢測(cè)確認(rèn)方法?;诎踩珒煞接?jì)算協(xié)議,在不泄露數(shù)據(jù)內(nèi)容的前提下,實(shí)現(xiàn)入侵檢測(cè)字符串關(guān)鍵詞、正則表達(dá)式關(guān)鍵詞以及關(guān)鍵詞位置信息的精準(zhǔn)匹配,并解決了安全兩方計(jì)算協(xié)議在實(shí)際應(yīng)用中存在的任意輸入問題[10]。
2) 對(duì)方法的安全性和運(yùn)行時(shí)所消耗的系統(tǒng)資源進(jìn)行理論分析。給出惡意用戶終端成功躲避檢測(cè)的概率計(jì)算式,并指出影響用戶終端計(jì)算量、所占內(nèi)存大小和網(wǎng)絡(luò)帶寬消耗的關(guān)鍵因素。
3) 原型系統(tǒng)實(shí)現(xiàn)與驗(yàn)證。通過真實(shí)系統(tǒng)部署和仿真實(shí)驗(yàn)相結(jié)合的方式,驗(yàn)證方法功能和性能。實(shí)驗(yàn)結(jié)果表明,所提方法能顯著減少誤報(bào),且對(duì)網(wǎng)絡(luò)和系統(tǒng)性能影響小。
本節(jié)對(duì)惡意加密流量的現(xiàn)有檢測(cè)方法進(jìn)行總結(jié)梳理。整體上,現(xiàn)有檢測(cè)方法可以歸納為基于密文解密、基于密文匹配以及基于機(jī)器學(xué)習(xí)這三類。
1) 基于密文解密的檢測(cè)方法。此方法是現(xiàn)階段一種常用的惡意加密流量檢測(cè)方法,其基本思路簡(jiǎn)潔明了,首先對(duì)加密流量進(jìn)行解密得到明文內(nèi)容,然后利用入侵檢測(cè)特征匹配明文內(nèi)容。若匹配成功,則判斷當(dāng)前加密流量為惡意流量。TLS 透明代理[11]是這類方法的典型實(shí)現(xiàn)。透明代理通常充當(dāng)中間人(MITM,man-in-the-middle)代理,將加密的網(wǎng)絡(luò)連接分為兩部分:客戶端到代理和代理到應(yīng)用服務(wù)器。代理首先將其根證書導(dǎo)入客戶的受信任證書存儲(chǔ)區(qū)。當(dāng)客戶端應(yīng)用程序建立TLS 連接到應(yīng)用服務(wù)器時(shí),代理代替應(yīng)用服務(wù)器完成TLS 握手過程。同時(shí),代理與應(yīng)用服務(wù)器建立第二個(gè)TLS 連接。此后,代理可以任意解密通信內(nèi)容,并判斷2 個(gè)連接之間的消息內(nèi)容是否為惡意。透明代理易于實(shí)施和部署,但也破壞了端到端的加密防護(hù)。研究人員已經(jīng)發(fā)現(xiàn)多起TLS 透明代理有意竊取用戶隱私信息的惡意攻擊事件[12]。
為克服透明代理的弊端(安裝完成后,用戶對(duì)代理的運(yùn)行情況一無所知),研究人員設(shè)計(jì)出非透明代理,如mcTLS[13]、PlainBox[14]等。mcTLS 是第一個(gè)針對(duì)TLS的非透明代理設(shè)計(jì),能提供基于證書的身份認(rèn)證機(jī)制,使用戶和應(yīng)用服務(wù)器能夠?qū)χ虚g人代理進(jìn)行身份確認(rèn)。為實(shí)現(xiàn)此功能,mcTLS需要設(shè)計(jì)新的握手協(xié)議,并需改寫現(xiàn)有用戶端和服務(wù)器端的代碼實(shí)現(xiàn),因而在現(xiàn)階段難以推廣使用。與mcTLS 不同,PlainBox 使用帶外方式進(jìn)行身份認(rèn)證和密鑰共享,不需要對(duì)現(xiàn)有TLS的協(xié)議設(shè)計(jì)和代碼實(shí)現(xiàn)進(jìn)行改動(dòng)。但與透明代理類似,PlainBox 等非透明代理依然可以讀取用戶和應(yīng)用服務(wù)器之間的所有通信內(nèi)容,給用戶的隱私保護(hù)帶來巨大威脅。
2) 基于密文匹配的檢測(cè)方法。為在檢測(cè)惡意加密流量的同時(shí)實(shí)現(xiàn)用戶隱私信息保護(hù),研究人員設(shè)計(jì)了一種新的檢測(cè)思路:對(duì)入侵檢測(cè)特征進(jìn)行加密,再將加密后的檢測(cè)特征與加密流量?jī)?nèi)容進(jìn)行直接匹配。該思路在文獻(xiàn)[15]中首次被提出。文獻(xiàn)[15]實(shí)現(xiàn)了一種BlindBox 系統(tǒng),該系統(tǒng)由用戶終端、應(yīng)用服務(wù)器以及檢測(cè)節(jié)點(diǎn)組成。首先,用戶終端與應(yīng)用服務(wù)器建立正常TLS 連接。在傳輸數(shù)據(jù)時(shí),用戶終端需要對(duì)數(shù)據(jù)進(jìn)行2 次處理。一是通過正常TLS連接,將數(shù)據(jù)發(fā)送至應(yīng)用服務(wù)器端。二是對(duì)數(shù)據(jù)進(jìn)行分割處理,比如將數(shù)據(jù)分割為多個(gè)長(zhǎng)度為5 B的片段,稱之為token。接著,用戶終端利用對(duì)稱加密算法,如AES 和密鑰k對(duì)所有的token 進(jìn)行加密,并將加密后的token 和加密算法對(duì)應(yīng)的混淆電路發(fā)送至檢測(cè)節(jié)點(diǎn)。檢測(cè)節(jié)點(diǎn)對(duì)入侵檢測(cè)特征進(jìn)行同樣的處理,如分割為長(zhǎng)度為5 B的token,然后利用混淆電路形式的AES 算法和密鑰k對(duì)規(guī)則token 進(jìn)行加密。最后,檢測(cè)節(jié)點(diǎn)對(duì)加密后的流量?jī)?nèi)容token和檢測(cè)特征token 進(jìn)行比對(duì)匹配。若匹配成功,則表明對(duì)應(yīng)的加密流量含有惡意內(nèi)容,為惡意流量。在此過程中,用戶的所有數(shù)據(jù)都為密文形式,檢測(cè)節(jié)點(diǎn)無法得知其具體內(nèi)容(同規(guī)則token 匹配的內(nèi)容除外),因而有效保護(hù)了用戶隱私。但其弊端是給用戶終端性能帶來嚴(yán)重影響[15],如分析處理20條網(wǎng)絡(luò)流量,需要消耗1 003.38 GB 網(wǎng)絡(luò)帶寬,其中包括加密token的發(fā)送和攜帶密鑰k的AES 加密算法的不經(jīng)意傳輸。
在文獻(xiàn)[15]的啟發(fā)下,研究人員設(shè)計(jì)出多種改進(jìn)的密文匹配檢測(cè)方法,如PrivDPI[16]、SHVE+[17]等。PrivDPI 對(duì)BlindBox 中的規(guī)則加密進(jìn)行優(yōu)化,使加密后的規(guī)則可以多次重復(fù)使用,減少了系統(tǒng)初始化配置所花費(fèi)的時(shí)間。但PrivDPI 生成密文形式的流量?jī)?nèi)容token 時(shí),速度是BlindBox的,且同樣需要對(duì)數(shù)據(jù)進(jìn)行2 次處理,嚴(yán)重降低了終端的運(yùn)行性能。SHVE+對(duì)隱藏向量加密(HVE,hidden vector encryption)方案[18]進(jìn)行改進(jìn),使其支持特征匹配功能。在使用時(shí),用戶端不需要對(duì)數(shù)據(jù)進(jìn)行多次處理,只需要在傳輸至應(yīng)用服務(wù)器時(shí)進(jìn)行HVE 即可。但HVE 方案目前并不被典型的網(wǎng)絡(luò)安全協(xié)議如TLS 等支持,無法部署于實(shí)際的網(wǎng)絡(luò)應(yīng)用中。
3) 基于機(jī)器學(xué)習(xí)的檢測(cè)方法。機(jī)器學(xué)習(xí)被視為惡意加密流量檢測(cè)的一種自然手段[3,19]。這是由于網(wǎng)絡(luò)流量加密僅改變了報(bào)文內(nèi)容的形式(由明文變?yōu)殡S機(jī)字段),并沒有顯著改變報(bào)文方向、報(bào)文長(zhǎng)度以及報(bào)文時(shí)間間隔等特征,而這些特征將能有效區(qū)分惡意與正常流量。文獻(xiàn)[4]針對(duì)TLS 流量,以報(bào)文長(zhǎng)度序列、報(bào)文長(zhǎng)度間隔序列、報(bào)文字節(jié)分布等為特征值,利用邏輯回歸算法分類識(shí)別惡意TLS流量,識(shí)別準(zhǔn)確率超過98%。文獻(xiàn)[20]針對(duì)加密的安全外殼(SSH,secure shell)協(xié)議流量,以網(wǎng)絡(luò)流中的報(bào)文數(shù)量、訪問記錄數(shù)為特征,實(shí)現(xiàn)SSH 協(xié)議流量的入侵檢測(cè)。文獻(xiàn)[21]針對(duì)數(shù)據(jù)的加密竊取,以網(wǎng)絡(luò)協(xié)議、應(yīng)用層協(xié)議以及時(shí)間等為特征值建立網(wǎng)絡(luò)用戶行為模型,并使用多項(xiàng)式樸素貝葉斯分類算法實(shí)現(xiàn)加密數(shù)據(jù)泄露的檢測(cè)。文獻(xiàn)[22]利用聚類算法,從TLS 流量中提取報(bào)文數(shù)量、流總字節(jié)數(shù)、流時(shí)長(zhǎng)、報(bào)文時(shí)間間隔均值與方差等作為特征值,實(shí)現(xiàn)惡意Android 應(yīng)用的在線檢測(cè)。
為提高檢測(cè)的準(zhǔn)確率以及克服需要人工選擇檢測(cè)特征的難題,文獻(xiàn)[5]將惡意軟件產(chǎn)生的網(wǎng)絡(luò)流量轉(zhuǎn)變?yōu)閳D像,然后使用圖像處理中成熟的深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行建模分類,平均準(zhǔn)確率超過99%。類似地,文獻(xiàn)[23]使用樹形深度神經(jīng)網(wǎng)絡(luò)對(duì)惡意流量進(jìn)行分類檢測(cè),實(shí)驗(yàn)結(jié)果表明,檢測(cè)的準(zhǔn)確率為99.63%,且能較好檢測(cè)未知的惡意流量。文獻(xiàn)[24]給出了基于深度學(xué)習(xí)的惡意加密流量檢測(cè)研究綜述。在上述工作中,均需要事先采集大量標(biāo)注的惡意加密流量樣本作為訓(xùn)練數(shù)據(jù)集,且標(biāo)注正確與否直接影響最終的檢測(cè)準(zhǔn)確性[25]。為此,文獻(xiàn)[26]利用生成對(duì)抗網(wǎng)絡(luò),從少量標(biāo)注的惡意流量樣本中自動(dòng)合成新的樣本,進(jìn)而提高機(jī)器學(xué)習(xí)算法的分類準(zhǔn)確性。
綜上所述,基于密文解密的檢測(cè)方法易于實(shí)現(xiàn)和部署,但其本質(zhì)上破壞了網(wǎng)絡(luò)應(yīng)用端到端的加密防護(hù),嚴(yán)重威脅用戶數(shù)據(jù)隱私安全?;诿芪钠ヅ涞臋z測(cè)方法能較好保護(hù)用戶的通信隱私,但其性能較低,目前仍處于前期理論研究和探索階段?;跈C(jī)器學(xué)習(xí)的檢測(cè)方法具有高檢測(cè)率,且最新的深度學(xué)習(xí)方法能夠從網(wǎng)絡(luò)流量中自動(dòng)提取檢測(cè)特征和自動(dòng)合成訓(xùn)練數(shù)據(jù),無疑增加了此類檢測(cè)方法的實(shí)用性。但基于機(jī)器學(xué)習(xí)的檢測(cè)方法易產(chǎn)生大量誤報(bào),限制了其在實(shí)際網(wǎng)絡(luò)中的部署應(yīng)用。為此,本文提出一種檢測(cè)結(jié)果再確認(rèn)方法。在本文提出的方法中,組合使用機(jī)器學(xué)習(xí)和特征匹配功能來實(shí)現(xiàn)惡意加密流量檢測(cè)的可解釋和低誤報(bào)特性,并通過安全兩方計(jì)算協(xié)議確保雙方數(shù)據(jù)的隱私保護(hù)。本文工作為惡意加密流量檢測(cè)提供了一種新的實(shí)現(xiàn)思路。
方法的典型部署應(yīng)用如圖1 所示。用戶終端位于網(wǎng)絡(luò)內(nèi)側(cè),通過加密網(wǎng)絡(luò)連接訪問遠(yuǎn)程應(yīng)用服務(wù)器。對(duì)于加密網(wǎng)絡(luò)連接,用戶終端記錄網(wǎng)絡(luò)五元組信息<源IP 地址、目的IP 地址、源端口、目的端口、安全協(xié)議>以及對(duì)應(yīng)的會(huì)話安全參數(shù)。其中,安全協(xié)議為具體使用的網(wǎng)絡(luò)通信安全協(xié)議,如TLS、SSH協(xié)議等。會(huì)話安全參數(shù)為當(dāng)前網(wǎng)絡(luò)連接使用的隨機(jī)數(shù)和密鑰,如TLS 中的客戶端隨機(jī)數(shù)和預(yù)備主密鑰。值得注意的是,目前主流的殺毒軟件已具備上述功能,因而可以對(duì)現(xiàn)有殺毒軟件功能進(jìn)行擴(kuò)充以支持方法的運(yùn)行。
為保護(hù)網(wǎng)絡(luò)安全,網(wǎng)絡(luò)管理員部署檢測(cè)節(jié)點(diǎn),對(duì)網(wǎng)絡(luò)發(fā)出或接收的所有加密流量進(jìn)行分析,判斷是否為惡意流量。檢測(cè)節(jié)點(diǎn)可以為獨(dú)立硬件設(shè)備部署于網(wǎng)絡(luò)出口處(圖1(a)),或采用外包形式[27]部署于云平臺(tái)中(圖1(b))。檢測(cè)節(jié)點(diǎn)所采用的分析方法可以為任意機(jī)器學(xué)習(xí)方法,如邏輯回歸[4]、深度學(xué)習(xí)[5]等,同時(shí)配備入侵檢測(cè)特征庫(kù)用于檢測(cè)結(jié)果確認(rèn)。
圖1 方法的典型部署應(yīng)用
為對(duì)檢測(cè)結(jié)果進(jìn)行確認(rèn),檢測(cè)節(jié)點(diǎn)需與用戶終端建立網(wǎng)絡(luò)連接。在圖1(a)中,用戶終端與檢測(cè)節(jié)點(diǎn)位于同一網(wǎng)絡(luò)中,易于滿足該要求。在圖1(b)中,網(wǎng)絡(luò)管理員可將檢測(cè)節(jié)點(diǎn)所在IP 地址統(tǒng)一配置于用戶終端中,用戶終端啟動(dòng)時(shí)便與檢測(cè)節(jié)點(diǎn)建立相應(yīng)網(wǎng)絡(luò)連接。在后文中,均假定用戶終端和檢測(cè)節(jié)點(diǎn)間已存在安全的加密網(wǎng)絡(luò)連接,所有用戶終端構(gòu)成集合U。惡意加密流量檢測(cè)確認(rèn)流程如圖2所示。
在圖2 中,檢測(cè)節(jié)點(diǎn)利用機(jī)器學(xué)習(xí)算法對(duì)加密網(wǎng)絡(luò)流量進(jìn)行惡意性判別。對(duì)于識(shí)別出的惡意加密流量,將流量報(bào)文發(fā)送至對(duì)應(yīng)用戶終端(用戶終端不需要事先保存流量,從而減輕用戶終端處負(fù)載),用戶終端驗(yàn)證該流量的真實(shí)性和隱私性。具體地,用戶終端使用<源IP 地址、目的IP 地址、源端口、目的端口、安全協(xié)議>確定對(duì)應(yīng)的會(huì)話安全參數(shù),并解密流量。解密成功,則驗(yàn)證了流量真實(shí)性。隨后,用戶終端驗(yàn)證流量?jī)?nèi)容中是否含有與自身隱私信息相關(guān)內(nèi)容,如“簡(jiǎn)歷投遞”“疾病”等。若無相關(guān)信息,則驗(yàn)證通過;否則驗(yàn)證失敗。若真實(shí)性或隱私性驗(yàn)證失敗,用戶終端終止確認(rèn)流程,并記錄出錯(cuò)信息便于后續(xù)人工分析。
圖2 惡意加密流量檢測(cè)確認(rèn)流程
驗(yàn)證通過后,用戶終端和檢測(cè)節(jié)點(diǎn)運(yùn)行安全兩方計(jì)算協(xié)議進(jìn)行數(shù)據(jù)安全匹配。具體地,本文采用隱私保護(hù)集合求交(PSI,private set intersection)協(xié)議[9],判斷網(wǎng)絡(luò)流量?jī)?nèi)容和入侵檢測(cè)特征之間是否存在相同字符片段。檢測(cè)節(jié)點(diǎn)依據(jù)求出的交集還原匹配出具體的入侵檢測(cè)特征。若匹配成功,則確認(rèn)當(dāng)前流量為惡意流量;若匹配失敗(如交集為空),則啟動(dòng)用戶終端輸入驗(yàn)證流程,由隨機(jī)選擇的其他用戶終端對(duì)PSI 協(xié)議數(shù)據(jù)和流量?jī)?nèi)容進(jìn)行隨機(jī)比對(duì)驗(yàn)證。若驗(yàn)證結(jié)果正常,表明當(dāng)前流量為正常加密流量,機(jī)器學(xué)習(xí)檢測(cè)算法的判別結(jié)果為誤報(bào);否則,表明用戶終端實(shí)施了輸入替換,存在惡意行為。用戶終端輸入隨機(jī)驗(yàn)證使惡意用戶終端難以使用其他數(shù)據(jù)代替真正的流量?jī)?nèi)容參與PSI 協(xié)議以躲避檢測(cè)確認(rèn)。
如2.1 節(jié)所述,方法執(zhí)行主要涉及用戶終端和檢測(cè)節(jié)點(diǎn)??紤]實(shí)際情形,本文做出如下攻擊者模型假定。
檢測(cè)節(jié)點(diǎn)為半誠(chéng)實(shí)模型[15,28],其嚴(yán)格按照既定流程執(zhí)行,但可能在運(yùn)行過程中試圖獲取用戶隱私信息。如圖1 所示,檢測(cè)節(jié)點(diǎn)為網(wǎng)絡(luò)管理員部署,實(shí)現(xiàn)網(wǎng)絡(luò)安全防護(hù)是其核心目標(biāo),執(zhí)行既定流程有利于其實(shí)現(xiàn)該功能。但與此同時(shí),檢測(cè)節(jié)點(diǎn)可通過方法的執(zhí)行竊取用戶隱私信息,如推斷流量?jī)?nèi)容中是否含有“工作查詢”“簡(jiǎn)歷投遞”“疾病”等信息,進(jìn)而調(diào)查、解雇對(duì)應(yīng)員工[29]。因而在檢測(cè)結(jié)果確認(rèn)過程中,應(yīng)保護(hù)用戶的隱私信息不被泄露。
用戶終端區(qū)分為惡意用戶終端和正常用戶終端。惡意用戶終端為網(wǎng)絡(luò)入侵者所占據(jù)的終端,而正常用戶終端為其他合法終端。合理假定網(wǎng)絡(luò)入侵者已擁有所占據(jù)終端的管理員權(quán)限,在終端中可執(zhí)行一切操作,因而此類用戶終端為惡意模型,即惡意用戶終端能以任意偏離方法的執(zhí)行流程來躲避檢測(cè)確認(rèn)或竊取有用信息。惡意用戶終端之間可以相互合謀以完成特定攻擊目標(biāo)。正常用戶終端為半誠(chéng)實(shí)模型[15],在流程執(zhí)行過程中可以試圖獲取入侵檢測(cè)特征的具體內(nèi)容。用戶終端與檢測(cè)節(jié)點(diǎn)間相互獨(dú)立,檢測(cè)節(jié)點(diǎn)無法控制用戶終端以執(zhí)行惡意行為,如數(shù)據(jù)竊取等。
在本文所提方法中,機(jī)器學(xué)習(xí)判別可以由任意機(jī)器學(xué)習(xí)算法完成,并非本文的研究重點(diǎn)。本節(jié)將詳細(xì)闡述字符段比對(duì)、入侵檢測(cè)特征匹配和用戶終端輸入隨機(jī)驗(yàn)證的具體實(shí)現(xiàn)流程。論文涉及的主要參數(shù)符號(hào)如表1 所示。
表1 參數(shù)符號(hào)
本文提出利用入侵檢測(cè)特征對(duì)機(jī)器學(xué)習(xí)算法的判別結(jié)果進(jìn)行進(jìn)一步確認(rèn)。入侵檢測(cè)特征可以利用現(xiàn)有的ET Pro Ruleset、Snort Talos Rules 等入侵檢測(cè)規(guī)則。這些規(guī)則中包括的字符串關(guān)鍵詞(如“ -J-jar -J ”)、正則表達(dá)式關(guān)鍵詞(如“/(launchx28.+-J-jar -J|-J-jar -J.+launchx28)/i”)以及關(guān)鍵詞在流量?jī)?nèi)容中的位置信息即為入侵檢測(cè)特征。實(shí)用的入侵檢測(cè)系統(tǒng)一般以字符串關(guān)鍵詞為先導(dǎo)[30],即首先匹配字符串關(guān)鍵詞,若匹配成功,再匹配對(duì)應(yīng)的正則表達(dá)式關(guān)鍵詞,從而提高運(yùn)行效率。本文方法遵循同樣思路實(shí)現(xiàn)。
為實(shí)現(xiàn)在特征匹配過程中同時(shí)滿足用戶終端和檢測(cè)節(jié)點(diǎn)的數(shù)據(jù)隱私保護(hù)要求,首先使用PSI 協(xié)議[9]實(shí)現(xiàn)數(shù)據(jù)內(nèi)容的字符段比對(duì)。將網(wǎng)絡(luò)流量?jī)?nèi)容和入侵檢測(cè)關(guān)鍵詞分割為多個(gè)長(zhǎng)度為l的字符片段,分別構(gòu)成集合C和S。針對(duì)集合C和S,用戶終端和檢測(cè)節(jié)點(diǎn)執(zhí)行隱私保護(hù)集合求交協(xié)議得出交集C∩S。在此過程中,除了交集C∩S以外,用戶終端和檢測(cè)節(jié)點(diǎn)并不能獲得對(duì)方的其他任何數(shù)據(jù)內(nèi)容信息,從而實(shí)現(xiàn)了隱私保護(hù)。根據(jù)交集C∩S,檢測(cè)節(jié)點(diǎn)將從多個(gè)字符段中還原出對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,從而完成入侵檢測(cè)特征匹配。本節(jié)主要闡述字符段比對(duì)的具體技術(shù)實(shí)現(xiàn),入侵檢測(cè)特征匹配將在3.2 節(jié)中描述。
1) 用戶終端預(yù)處理。用戶終端利用保存的會(huì)話密鑰對(duì)可疑的加密網(wǎng)絡(luò)流量進(jìn)行解密(會(huì)話密鑰保存以及加密網(wǎng)絡(luò)流量獲取等內(nèi)容見2.1 節(jié)),從而獲得網(wǎng)絡(luò)流量明文內(nèi)容(十六進(jìn)制形式)??紤]到商用的入侵檢測(cè)關(guān)鍵詞中大多含有十六進(jìn)制內(nèi)容,因而在預(yù)處理步驟中,將網(wǎng)絡(luò)流量?jī)?nèi)容和入侵檢測(cè)關(guān)鍵詞統(tǒng)一轉(zhuǎn)變?yōu)槭M(jìn)制形式,以便后續(xù)的集合求交運(yùn)算。對(duì)流量明文內(nèi)容進(jìn)行滑動(dòng)窗口分割,形成集合C。具體步驟如下。
步驟1設(shè)定大小為l(l≥1)的滑動(dòng)窗口。
步驟2從流內(nèi)容的起始處讀取窗口內(nèi)所有內(nèi)容,按序加入集合C。
步驟3將窗口后移一位,讀取窗口內(nèi)所有內(nèi)容,按序加入集合C。
步驟4重復(fù)步驟3,直至窗口內(nèi)容長(zhǎng)度小于l。
2) 檢測(cè)節(jié)點(diǎn)預(yù)處理。檢測(cè)節(jié)點(diǎn)讀取入侵檢測(cè)特征庫(kù)中的所有字符串形式關(guān)鍵詞,將關(guān)鍵詞內(nèi)容轉(zhuǎn)變?yōu)槭M(jìn)制形式并進(jìn)行滑動(dòng)窗口分割,形成集合S。具體步驟如下。
步驟1設(shè)定大小為l的滑動(dòng)窗口。
步驟2讀取當(dāng)前關(guān)鍵詞。
步驟3從關(guān)鍵詞的起始處讀取窗口內(nèi)所有內(nèi)容,加入集合S。
步驟4將窗口后移一個(gè)字符,讀取窗口內(nèi)所有內(nèi)容,加入集合S(重復(fù)內(nèi)容刪除,不需要保持元素順序)。
步驟5重復(fù)步驟4 直至窗口內(nèi)容長(zhǎng)度小于l。
步驟6跳轉(zhuǎn)至步驟2,直至所有字符串形式關(guān)鍵詞讀取完畢。
3) 檢測(cè)節(jié)點(diǎn)加密集合S。完成預(yù)處理后,檢測(cè)節(jié)點(diǎn)加密集合S={s1,s2,…,sS}中每一項(xiàng)元素,并發(fā)送至用戶終端,即針對(duì)sj(1 ≤j≤),進(jìn)行式(1)~式(3)的Hash 和模冪運(yùn)算。
計(jì)算完成后,檢測(cè)節(jié)點(diǎn)將集合{Mj}發(fā)送至用戶終端。
4) 用戶終端加密集合C。用戶終端接收集合{Mj}后,對(duì)Mj和集合C=進(jìn)行密碼學(xué)處理,計(jì)算過程如式(4)~式(8)所示。其中,式(4)產(chǎn)生隨機(jī)數(shù)Rc,式(5)和式(6)利用Rc進(jìn)行對(duì)應(yīng)的模冪運(yùn)算,式(7)利用離散對(duì)數(shù)難題和Hash 計(jì)算生成Rc的零知識(shí)證明,式(8)對(duì)集合C中的每一項(xiàng)元素進(jìn)行模冪運(yùn)算。
5) 檢測(cè)節(jié)點(diǎn)比對(duì)數(shù)據(jù)。檢測(cè)節(jié)點(diǎn)驗(yàn)證零知識(shí)證明π的值,如果驗(yàn)證失敗,流程終止;如果驗(yàn)證通過,進(jìn)行式(9)計(jì)算。式(9)對(duì)集合S中每一項(xiàng)元素進(jìn)行模冪和Hash 處理。
集合C和S的交集元素計(jì)算式為
式(7)中π值的驗(yàn)證參見文獻(xiàn)[9,31]。上述過程為文獻(xiàn)[9]中PSI 協(xié)議的優(yōu)化,主要區(qū)別在于檢測(cè)節(jié)點(diǎn)加密集合S時(shí)不需要提供零知識(shí)證明。這是由于本文假定檢測(cè)節(jié)點(diǎn)為半誠(chéng)實(shí)模型(2.2 節(jié)),其嚴(yán)格執(zhí)行協(xié)議流程,因此不需要額外證明。
檢測(cè)節(jié)點(diǎn)依據(jù)集合{<s j∈C∩S,i>}匹配具體的入侵檢測(cè)特征。若集合{<s j∈C∩S,i>}不為空,字符串形式關(guān)鍵詞匹配算法如算法1 所示。
算法1字符串形式關(guān)鍵詞匹配算法
在算法1 中,若sj匹配成功且對(duì)應(yīng)的入侵檢測(cè)規(guī)則中含有正則表達(dá)式關(guān)鍵詞,則繼續(xù)執(zhí)行算法2。
算法2正則表達(dá)式關(guān)鍵詞匹配算法
入侵檢測(cè)特征中的關(guān)鍵詞位置信息可由更新后的集合{<s j∈C∩S,i>}中i和sj的長(zhǎng)度直接推算出。如ET Pro rules 中的offset字段,表示關(guān)鍵詞在流內(nèi)容的起始位置,因而(i-1)l的值等于offset 字段的值即匹配成功。其余表示位置信息的字段,如distance、within 等均可做類似計(jì)算和匹配。
在算法 1 中,只需要遍歷交集集合{<s j∈C∩S,i>}一次,因而時(shí)間復(fù)雜度為O(n)。在算法2 中,步驟1)~步驟3)可離線完成(如系統(tǒng)啟動(dòng)時(shí)完成),從而加快算法執(zhí)行速度;步驟4)~步驟7)的時(shí)間復(fù)雜度與正則表達(dá)式關(guān)鍵詞中適配符數(shù)量等因素相關(guān)。設(shè)共有x個(gè)正則表達(dá)式關(guān)鍵詞,每個(gè)關(guān)鍵詞中含有a個(gè)適配符,適配符的取值范圍為b,關(guān)鍵詞實(shí)例長(zhǎng)度為L(zhǎng)I,則集合S的大小為=(LI-l+1)xab。在式(10)中,利用Hash 表求解集合交集[32],此時(shí)算法遍歷S集合兩次、C集合一次以及交集C∩S一次,故時(shí)間復(fù)雜度為O(2(LI-l+1)xa b+v+n)。算法2的時(shí)間復(fù)雜度隨適配符數(shù)量呈多項(xiàng)式增長(zhǎng)。
當(dāng)式(10)中的交集C∩S為空,或特征匹配失敗時(shí),檢測(cè)節(jié)點(diǎn)執(zhí)行用戶終端輸入隨機(jī)驗(yàn)證流程。這是由于在式(8)中,惡意用戶終端可以使用任意數(shù)據(jù)代替流量?jī)?nèi)容ci的值進(jìn)行計(jì)算,從而規(guī)避檢測(cè)確認(rèn)。用戶終端輸入隨機(jī)驗(yàn)證流程表述如下。
檢測(cè)節(jié)點(diǎn)從Zq中選擇隨機(jī)數(shù)Rd,計(jì)算參數(shù)Pd為
檢測(cè)節(jié)點(diǎn)將參數(shù)Pd和“輸入驗(yàn)證通知”發(fā)送至目標(biāo)用戶終端。記目標(biāo)用戶終端為ut,即U集合中第t個(gè)用戶。ut接收相關(guān)信息后,從Zq中選擇隨機(jī)數(shù)Rt,計(jì)算參數(shù)Pt為
用戶終端ut將參數(shù)Pt發(fā)送至檢測(cè)節(jié)點(diǎn)。檢測(cè)節(jié)點(diǎn)和用戶終端ut分別進(jìn)行式(14)和式(15)計(jì)算,求出共同參數(shù)k,并計(jì)算式(16),求得參數(shù)z(z應(yīng)不等于t)。式(12)~式(15)本質(zhì)上為DH 密鑰交換[33],H1(k)為隨機(jī)數(shù),因而uz為隨機(jī)選擇的用戶終端。
如式(17)所示,檢測(cè)節(jié)點(diǎn)從[1,v]中隨機(jī)選擇e個(gè)數(shù)字R1,…,Re,并將R1,…,Re和加密流量f發(fā)送至用戶終端uz。用戶終端ut發(fā)送會(huì)話密鑰kf和式(4)中的Rc至uz。用戶終端uz接收R1,…,Re、f、kf和Rc后,利用kf解密流f。接著,對(duì)于解密后的流內(nèi)容,執(zhí)行用戶終端預(yù)處理的步驟1~步驟4,得出集合C。從C中選擇第R1,…,Re個(gè)元素,利用Rc計(jì)算式(18)。最后,uz將(1≤i≤e)發(fā)送至檢測(cè)節(jié)點(diǎn)。
檢測(cè)節(jié)點(diǎn)將?i cT(1≤i≤e)同用戶終端ut發(fā)送的即式(8)的計(jì)算結(jié)果)中的對(duì)應(yīng)數(shù)值進(jìn)行比較。若比較結(jié)果不一致,則表明ut實(shí)施了惡意輸入代替,為惡意用戶終端。在此過程中,惡意用戶終端成功通過驗(yàn)證的概率分析見第4 節(jié)。
本節(jié)對(duì)所提方法進(jìn)行理論分析,包括方法的安全性分析以及性能分析。在安全性分析中,重點(diǎn)分析數(shù)據(jù)隱私保護(hù)特征以及惡意用戶終端成功通過驗(yàn)證的概率。性能分析主要針對(duì)用戶終端進(jìn)行,分析用戶終端需要執(zhí)行的計(jì)算量、使用的內(nèi)存大小以及消耗的網(wǎng)絡(luò)通信帶寬。類似的性能分析方法同樣適用于檢測(cè)節(jié)點(diǎn),且檢測(cè)節(jié)點(diǎn)一般由專用服務(wù)器實(shí)現(xiàn),故本節(jié)省略檢測(cè)節(jié)點(diǎn)的資源消耗分析過程。
1) 數(shù)據(jù)隱私保護(hù)特征分析
本文提出的方法能提供良好的雙向數(shù)據(jù)隱私保護(hù)功能:①用戶終端無法獲得檢測(cè)節(jié)點(diǎn)的入侵檢測(cè)特征內(nèi)容;②除交集C∩S的內(nèi)容外,檢測(cè)節(jié)點(diǎn)無法獲知用戶終端其他數(shù)據(jù)內(nèi)容。方法的隱私保護(hù)功能以離散對(duì)數(shù)問題[34]為理論基礎(chǔ)。在式(3)中,由于離散對(duì)數(shù)的難解性,用戶終端無法在多項(xiàng)式時(shí)間內(nèi)從Mj反推出hsj的值,進(jìn)而無法獲知式(1)中sj的值,從而實(shí)現(xiàn)了檢測(cè)節(jié)點(diǎn)的入侵檢測(cè)特征隱私保護(hù)。類似地,針對(duì)式(8),檢測(cè)節(jié)點(diǎn)無法反推出ci的值,因而除了交集C∩S內(nèi)容以外,檢測(cè)節(jié)點(diǎn)無法獲知流f中其他字段內(nèi)容。上述結(jié)論的嚴(yán)格證明詳見文獻(xiàn)[9]。
在2.2 節(jié)攻擊者模型中,設(shè)定檢測(cè)節(jié)點(diǎn)為半誠(chéng)實(shí)模型,即檢測(cè)節(jié)點(diǎn)嚴(yán)格執(zhí)行協(xié)議步驟,但試圖竊取用戶隱私信息。為此,檢測(cè)節(jié)點(diǎn)可采取一種隱蔽攻擊方式,將試圖獲取的信息作為入侵檢測(cè)特征同加密流量?jī)?nèi)容進(jìn)行比對(duì)。如檢測(cè)節(jié)點(diǎn)可將“簡(jiǎn)歷投遞”“薪酬期望”等作為入侵檢測(cè)特征。若在加密流量中匹配出此類關(guān)鍵詞,檢測(cè)節(jié)點(diǎn)在無法獲知流量其他內(nèi)容的前提下,也能推斷出該流量的主要信息,威脅用戶個(gè)人隱私。為抵御此類攻擊,如2.1 節(jié)中所述,用戶終端在解密流量?jī)?nèi)容后,將判斷流量?jī)?nèi)容中是否涉及用戶敏感信息。通過用戶終端的主動(dòng)檢查,能夠發(fā)現(xiàn)檢測(cè)節(jié)點(diǎn)的上述攻擊行為,從而使此類攻擊失效。
2) 惡意用戶終端成功通過驗(yàn)證的概率分析
為解決惡意用戶終端的任意輸入問題,在3.3 節(jié)中提出隨機(jī)驗(yàn)證策略。隨機(jī)選取e個(gè)流量?jī)?nèi)容片段,計(jì)算對(duì)應(yīng)的值,并同用戶終端ut發(fā)送的值進(jìn)行比較。若存在不一致,則表明用戶終端ut在執(zhí)行PSI協(xié)議時(shí)存在輸入替代,如將可能的惡意特征替換為正常字符,或直接使用隨機(jī)數(shù)據(jù)替代流量?jī)?nèi)容等。由于為隨機(jī)驗(yàn)證,惡意用戶終端能以一定的概率通過輸入驗(yàn)證。具體的概率Pr 計(jì)算如下。
情形1uz為惡意用戶終端。設(shè)集合U中惡意用戶終端總數(shù)為m,m< |C|。如2.2 節(jié)攻擊者模型中所設(shè)定,惡意用戶終端可以相互合謀以完成特定攻擊目標(biāo)。此時(shí),uz不需要計(jì)算?i cT的值,可直接發(fā)送對(duì)應(yīng)的值至檢測(cè)節(jié)點(diǎn)。檢測(cè)節(jié)點(diǎn)通過比對(duì),無法發(fā)現(xiàn)uz實(shí)施了輸入替代,uz成功通過輸入驗(yàn)證。由于uz為隨機(jī)選擇,情形1 發(fā)生的概率為
情形2uz為正常用戶終端。假定惡意用戶終端uz對(duì)流量?jī)?nèi)容中r(r≥1)個(gè)連續(xù)字符進(jìn)行了修改。在3.1 節(jié)用戶終端預(yù)處理步驟中,修改的r個(gè)字符將平均出現(xiàn)r+l-1 次。在隨機(jī)選擇e個(gè)字符段時(shí),選擇的字符段均不包含r個(gè)修改字符的概率為。此時(shí),惡意用戶終端成功通過輸入驗(yàn)證的概率為
當(dāng)e=|C|時(shí),Pr2=0。最終的Pr 為
Pr 值遞減。具體參數(shù)值的選取和驗(yàn)證將于第5 節(jié)中闡述。值得注意的是,式(21)為在隨機(jī)選擇一個(gè)用戶終端作為驗(yàn)證方時(shí),惡意用戶終端通過輸入驗(yàn)證的概率值。若隨機(jī)選擇n(n≥1)個(gè)用戶終端作為驗(yàn)證方,則。因而可通過增加n的值使Pr 快速趨向于0。
由于檢測(cè)節(jié)點(diǎn)一般由專用服務(wù)器實(shí)現(xiàn),且檢測(cè)節(jié)點(diǎn)的性能分析過程與用戶終端類似,本節(jié)重點(diǎn)分析用戶終端的運(yùn)行性能。在方法的運(yùn)行過程中,用戶終端需要進(jìn)行數(shù)據(jù)預(yù)處理以及計(jì)算式(5)~式(8)。其中,數(shù)據(jù)預(yù)處理僅需遍歷加密網(wǎng)絡(luò)流量f的內(nèi)容一次、式(7)中的零知識(shí)證明只需要計(jì)算Hash 一次,產(chǎn)生的性能消耗極低。因此,對(duì)用戶終端性能產(chǎn)生主要影響的是式(6)和式(8)中的模冪運(yùn)算和Hash 計(jì)算。令模冪運(yùn)算的計(jì)算資源開銷(如CPU 執(zhí)行時(shí)間)為λ1,Hash 函數(shù)的計(jì)算資源開銷為λ2,字符串關(guān)鍵詞對(duì)應(yīng)的集合S1的大小為,正則表達(dá)式關(guān)鍵詞對(duì)應(yīng)的集合S2的大小為,則用戶終端所需的計(jì)算資源開銷λc為
由式(22)可知,用戶終端所需的計(jì)算資源開銷與集合C和集合S的大小呈線性相關(guān)。
在計(jì)算過程中,用戶終端需遍歷集合{Mj}和集合C一次,計(jì)算和存儲(chǔ)結(jié)果。集合C的大小為,集合{Mj}的大小為,計(jì)算結(jié)果所占比特?cái)?shù)與模數(shù)p長(zhǎng)度相同(如512 bit)。因此,用戶終端的內(nèi)存消耗λm可表示為
同樣地,存儲(chǔ)資源消耗與集合C和集合S的大小呈線性相關(guān)。
用戶終端的網(wǎng)絡(luò)通信帶寬消耗分析如下。如3.1 節(jié)中所述,檢測(cè)節(jié)點(diǎn)需將集合{Mj}發(fā)送至用戶終端,用戶終端需將集合{}和{}發(fā)送至檢測(cè)節(jié)點(diǎn)。因而消耗的網(wǎng)絡(luò)帶寬正比于集合中元素個(gè)數(shù)和字符段長(zhǎng)度l,如式(24)所示。
設(shè)未分割前的流量?jī)?nèi)容字符串長(zhǎng)度為L(zhǎng)f,入侵檢測(cè)特征關(guān)鍵詞字符串長(zhǎng)度為L(zhǎng)I,字符段的長(zhǎng)度為l,入侵檢測(cè)特征關(guān)鍵詞總數(shù)量為h,則有
將式(25)、式(26)分別代入式(22)~式(24),可得
由式(27)和式(28)知,在總數(shù)據(jù)量(Lf、LI以及h)一定的情形下,隨著l值遞增,用戶終端的計(jì)算和存儲(chǔ)資源開銷遞減。以l為自變量,對(duì)式(29)求一階導(dǎo)數(shù),可得當(dāng)時(shí),所消耗的網(wǎng)絡(luò)帶寬最大。因此,當(dāng)時(shí),隨著l值的遞增,用戶終端的計(jì)算和存儲(chǔ)資源開銷遞減,但消耗的網(wǎng)絡(luò)帶寬遞增;當(dāng)時(shí),隨著l值的遞增,用戶終端的計(jì)算和存儲(chǔ)資源開銷遞減,消耗的網(wǎng)絡(luò)帶寬也遞減??紤]到l≤LI這個(gè)約束條件,在實(shí)際應(yīng)用中,可通過設(shè)置較長(zhǎng)的入侵檢測(cè)關(guān)鍵詞來減少用戶終端的資源消耗。具體實(shí)驗(yàn)驗(yàn)證見5.2 節(jié)。
本節(jié)主要驗(yàn)證方法對(duì)惡意加密流量檢測(cè)確認(rèn)的準(zhǔn)確性和對(duì)用戶終端的性能影響程度。實(shí)驗(yàn)中運(yùn)行Windows XP 虛擬機(jī)作為用戶終端,檢測(cè)節(jié)點(diǎn)為Dell PowerEdge R730 服務(wù)器。虛擬機(jī)配置為運(yùn)行單個(gè)CPU,內(nèi)存為2 GB,模擬較低性能終端設(shè)備。檢測(cè)節(jié)點(diǎn)服務(wù)器與用戶終端位于同一局域網(wǎng),并配備路由轉(zhuǎn)發(fā)功能。檢測(cè)節(jié)點(diǎn)能夠捕獲用戶終端所產(chǎn)生的所有流量。
在用戶終端中,正常應(yīng)用(如瀏覽器的密鑰提?。┩ㄟ^配置SSLKEYLOGFILE 系統(tǒng)變量實(shí)現(xiàn)。對(duì)于惡意軟件,其加密網(wǎng)絡(luò)流量的密鑰提取通過mitmproxy 實(shí)現(xiàn),提取的密鑰存儲(chǔ)同樣存于SSLKEYLOGFILE 文件中。加密流量的解密和十六進(jìn)制內(nèi)容導(dǎo)出由tshark 工具完成。入侵檢測(cè)規(guī)則為開源的ET Suricata 規(guī)則,包括attack_response、malware、shellcode、Web 等規(guī)則文件。入侵檢測(cè)規(guī)則和網(wǎng)絡(luò)流量?jī)?nèi)容的分割由Python 代碼完成。機(jī)器學(xué)習(xí)算法選定為隨機(jī)森林算法,分類特征包括TLS證書、報(bào)文長(zhǎng)度分布等。
PSI 代碼由Python 代碼實(shí)現(xiàn)。其中,在用戶終端處運(yùn)行Flask Python Web 框架,監(jiān)聽5000 端口。用戶終端同檢測(cè)節(jié)點(diǎn)采用HTTP 進(jìn)行數(shù)據(jù)的接收和發(fā)送。在數(shù)據(jù)處理時(shí),流量?jī)?nèi)容和關(guān)鍵詞首先以十六進(jìn)制字符形式存于文件,PSI 代碼從文件中讀取字符段并轉(zhuǎn)換為對(duì)應(yīng)數(shù)字進(jìn)行模冪運(yùn)算和Hash 計(jì)算。Hash 計(jì)算利用SHA256 完成,模冪運(yùn)算則由高精度運(yùn)算庫(kù)gmpy2 實(shí)現(xiàn)。此外,在PSI 代碼中額外增加CPU 執(zhí)行時(shí)間(利用perf_counter 函數(shù)實(shí)現(xiàn))和內(nèi)存消耗(利用psutil 庫(kù)實(shí)現(xiàn))統(tǒng)計(jì)功能,便于計(jì)算方法的系統(tǒng)資源開銷。鑒于TLS 已成為互聯(lián)網(wǎng)安全傳輸?shù)氖聦?shí)標(biāo)準(zhǔn)[35],實(shí)驗(yàn)中主要針對(duì)TLS 加密流量進(jìn)行測(cè)試。
功能驗(yàn)證主要包含3 個(gè)方面的內(nèi)容:1) 驗(yàn)證對(duì)惡意加密流量檢測(cè)的誤報(bào)消除效果,由減少的誤報(bào)數(shù)量衡量;2) 驗(yàn)證對(duì)檢測(cè)召回率(Recall)的影響,由漏報(bào)數(shù)量衡量;3) 惡意用戶終端成功通過輸入驗(yàn)證的可能性,由Pr 衡量。實(shí)際上,惡意加密流量的檢測(cè)召回率主要由機(jī)器學(xué)習(xí)算法決定,但對(duì)檢測(cè)結(jié)果進(jìn)行進(jìn)一步確認(rèn)可能增加漏報(bào),從而降低召回率。實(shí)驗(yàn)中,設(shè)定l的值,即字符段長(zhǎng)度為5。這是由于選用的ET Suricata 規(guī)則中最短的關(guān)鍵詞長(zhǎng)度為5。
為驗(yàn)證對(duì)誤報(bào)的消除效果,在虛擬機(jī)中使用Firefox 瀏覽器訪問Alexa Top 100 網(wǎng)站。依據(jù)文獻(xiàn)[36],可認(rèn)為Alexa Top 100 網(wǎng)站為合法網(wǎng)站,產(chǎn)生的流量為正常流量。實(shí)驗(yàn)中使用Shell 編程和iMacros 插件實(shí)現(xiàn)Firefox 瀏覽器的自動(dòng)訪問和自動(dòng)鏈接點(diǎn)擊,對(duì)每個(gè)網(wǎng)址的訪問時(shí)間設(shè)定為1 min,共捕獲15 887 條TLS 流量。實(shí)驗(yàn)結(jié)果如表2 所示。檢測(cè)端使用隨機(jī)森林算法進(jìn)行判斷,檢測(cè)出13 條TLS 流量為惡意流量。經(jīng)過特征安全匹配后,有12 條TLS流量被確認(rèn)為正常流量,即消除誤報(bào)流量12 條,誤報(bào)數(shù)量減少了92.3%。對(duì)最終的誤報(bào)流量進(jìn)行人工分析發(fā)現(xiàn),流量中含有“/perl”字段,從而觸發(fā)了入侵檢測(cè)規(guī)則。
表2 誤報(bào)消除實(shí)驗(yàn)結(jié)果
為驗(yàn)證對(duì)惡意加密流量檢測(cè)召回率的影響,從互聯(lián)網(wǎng)中下載EXE 類型病毒樣本1 047 例。將下載的病毒樣本逐一運(yùn)行于虛擬機(jī)中,并使用tshark 軟件進(jìn)行網(wǎng)絡(luò)流量捕獲。為避免干擾,完成一例病毒樣本測(cè)試后,將虛擬機(jī)還原至初始狀態(tài),然后運(yùn)行另一例病毒樣本。實(shí)驗(yàn)結(jié)果如表3 所示。由于部分樣本無法正常運(yùn)行,實(shí)驗(yàn)中共捕獲278 條惡意TLS流量。在檢測(cè)端運(yùn)行隨機(jī)森林算法,共檢測(cè)出269 條。但如表3 所示,經(jīng)過特征安全匹配后,有2 條惡意TLS 流量被判斷為正常流量,從而產(chǎn)生了漏報(bào)。對(duì)這2 條惡意TLS 流量進(jìn)行人工分析發(fā)現(xiàn),其數(shù)據(jù)內(nèi)容為壓縮或可執(zhí)行文件,從而導(dǎo)致規(guī)則匹配失效。
表3 檢測(cè)漏報(bào)實(shí)驗(yàn)結(jié)果
綜合表2 和表3的實(shí)驗(yàn)結(jié)果可知,本文提出的方法能夠有效減少誤報(bào),但同時(shí)也增加了一些漏報(bào)數(shù)量。誤報(bào)和漏報(bào)產(chǎn)生的原因是規(guī)則的精確度有限,如將“/perl”字段判斷為惡意攻擊、無法匹配壓縮和可執(zhí)行文件內(nèi)容等。因此,在實(shí)際使用中,可采用或制定更精確的入侵檢測(cè)特征,提升方法的準(zhǔn)確性和實(shí)用性。為驗(yàn)證上述思路,購(gòu)買了商用版Snort Ruleset 對(duì)表2 中判斷為惡意流量的13 條正常TLS 流量和表3中檢測(cè)出的269 條惡意TLS 流量進(jìn)行再次確認(rèn)。實(shí)驗(yàn)結(jié)果表明,最新規(guī)則能夠排除所有誤報(bào),且能確認(rèn)所有惡意TLS 流量。
如4.1 節(jié)中所述,惡意用戶終端能以一定概率通過輸入驗(yàn)證。為驗(yàn)證式(21)的正確性,首先隨機(jī)產(chǎn)生長(zhǎng)度為1 000的隨機(jī)十六進(jìn)制字符串,并隨機(jī)選擇r個(gè)連續(xù)字符進(jìn)行修改。對(duì)修改后的字符串進(jìn)行滑動(dòng)分割,分割長(zhǎng)度為l,形成集合C。接著,產(chǎn)生0~1的隨機(jī)數(shù)R。若的值為設(shè)定的實(shí)驗(yàn)參數(shù)),則直接判定惡意用戶通過輸入驗(yàn)證。否則,從集合C中隨機(jī)選擇e個(gè)字符段,若選出的e個(gè)字符段均不包含修改后的字符,則直接判定惡意用戶通過輸入驗(yàn)證。最后,重復(fù)實(shí)驗(yàn)10 000 次,統(tǒng)計(jì)通過驗(yàn)證的次數(shù)并除以10 000,即實(shí)驗(yàn)求出的Pr的值。不同參數(shù)條件下的實(shí)驗(yàn)結(jié)果如圖3~圖6 所示。
圖3 設(shè)定r=3,l=10,e=300 時(shí),隨惡意用戶終端所占比例不同的取值所對(duì)應(yīng)的Pr 值
圖4 設(shè)定=0.01,l=10,e=300 時(shí),修改的字符數(shù)量不同的取值所對(duì)應(yīng)的Pr 值
圖5 設(shè)定=0.01,r=3,e=300 時(shí),字符段長(zhǎng)度不同的取值所對(duì)應(yīng)的Pr 值
圖6 設(shè)定=0.01,r=3,l=10 時(shí),字符段數(shù)量不同的取值所對(duì)應(yīng)的Pr 值
在圖3~圖6 中,理論值為式(21)的計(jì)算結(jié)果,理論值與實(shí)驗(yàn)值基本一致。實(shí)驗(yàn)結(jié)果表明,隨著惡意用戶終端所占比例的遞增,惡意用戶終端成功通過輸入驗(yàn)證的概率Pr 遞增;隨著修改的字符數(shù)量、字符串長(zhǎng)度以及檢測(cè)節(jié)點(diǎn)隨機(jī)選擇的字符段數(shù)量的遞增,Pr 值遞減。特別地,當(dāng)隨機(jī)選擇的字符段數(shù)量超過總字符段數(shù)量的一半時(shí),Pr 值趨近于0。在實(shí)際應(yīng)用中,可選擇較大的l和e值,減少惡意用戶終端成功通過輸入驗(yàn)證的可能性。實(shí)驗(yàn)中還驗(yàn)證了其他多組參數(shù),如r=4,l=11,e=200 和=0.02,l=10,e=400 等。實(shí)驗(yàn)結(jié)果均與理論計(jì)算結(jié)果一致,因此不再敘述。
本節(jié)給出不同參數(shù)條件下,用戶終端的資源消耗程度。具體地,在總數(shù)據(jù)量一定的前提下,通過設(shè)置不同的字符串長(zhǎng)度,統(tǒng)計(jì)用戶終端的計(jì)算性能開銷、內(nèi)存占用量和網(wǎng)絡(luò)帶寬消耗。在實(shí)驗(yàn)中,計(jì)算性能開銷由CPU 執(zhí)行時(shí)間來衡量,內(nèi)存占用量由使用的內(nèi)存字節(jié)數(shù)表示,網(wǎng)絡(luò)帶寬消耗由發(fā)送和接收的數(shù)據(jù)分組字節(jié)數(shù)表示。
首先,驗(yàn)證式(27)和式(28)的正確性。在式(27)中,區(qū)分模冪運(yùn)算和Hash 計(jì)算的代價(jià)為λ1和λ2。在實(shí)驗(yàn)中,利用CPU 執(zhí)行時(shí)間統(tǒng)一衡量模冪運(yùn)算和Hash 計(jì)算的所需代價(jià)。為此,在隱私保護(hù)集合交集代碼中使用perf_counter 函數(shù)統(tǒng)計(jì)式(4)~式(8)所需的計(jì)算時(shí)間。設(shè)定網(wǎng)絡(luò)流內(nèi)容共有10 000 個(gè)字符,入侵檢測(cè)特征長(zhǎng)度為20,入侵檢測(cè)特征數(shù)量為1 000,字符段長(zhǎng)度為1~9。對(duì)于相同數(shù)據(jù),CPU 執(zhí)行時(shí)間統(tǒng)計(jì)結(jié)果會(huì)略有差別。因此,對(duì)于同一參數(shù)運(yùn)行10 次,取CPU 執(zhí)行時(shí)間的平均值為最后實(shí)驗(yàn)結(jié)果,如圖7 所示。實(shí)驗(yàn)結(jié)果表明,隨著字符段長(zhǎng)度的遞增,CPU 執(zhí)行時(shí)間遞減,同式(27)的分析結(jié)果一致。
圖7 不同字符段長(zhǎng)度所對(duì)應(yīng)的CPU 執(zhí)行時(shí)間
程序所占用的內(nèi)存字節(jié)由psutil 庫(kù)統(tǒng)計(jì)。同樣地,設(shè)定網(wǎng)絡(luò)流內(nèi)容共有10 000 個(gè)字符,入侵檢測(cè)特征長(zhǎng)度為20,入侵檢測(cè)特征數(shù)量為1 000。為反映內(nèi)存占用的變化趨勢(shì),字符段長(zhǎng)度l值設(shè)定為1、4、7、10、13、16 和19。對(duì)于同一參數(shù),運(yùn)行10 次,取內(nèi)存占用的平均值為最后實(shí)驗(yàn)結(jié)果,如圖8 所示。實(shí)驗(yàn)結(jié)果表明,隨著字符段長(zhǎng)度的遞增,所占用的內(nèi)存大小遞減,與式(28)的分析結(jié)果一致。
圖8 不同字符段長(zhǎng)度所對(duì)應(yīng)的內(nèi)存占用量
其次,驗(yàn)證式(29)的正確性。式(29)表明,在總數(shù)量一定的前提下,當(dāng)時(shí),隨著l值的遞增,網(wǎng)絡(luò)帶寬消耗遞增;當(dāng)時(shí),隨著l值的遞增,網(wǎng)絡(luò)帶寬消耗遞減。設(shè)定網(wǎng)絡(luò)流內(nèi)容共有10 000 個(gè)字符,入侵檢測(cè)特征長(zhǎng)度為20,入侵檢測(cè)特征數(shù)量為1 000。依據(jù)上述分析,當(dāng)l=15 時(shí),網(wǎng)絡(luò)帶寬消耗最多。實(shí)驗(yàn)中調(diào)節(jié)l的值從12 遞增至19,在用戶終端處使用tshark 工具捕獲端口5000的網(wǎng)絡(luò)流量,并統(tǒng)計(jì)流中數(shù)據(jù)字節(jié)數(shù)(不包括報(bào)文頭部字段)。不同字符段長(zhǎng)度所對(duì)應(yīng)的網(wǎng)絡(luò)帶寬消耗如圖9 所示。實(shí)驗(yàn)結(jié)果同理論分析相一致。實(shí)驗(yàn)中還測(cè)試了其他不同參數(shù),結(jié)果趨勢(shì)均一致,故不再贅述。
圖9 不同字符段長(zhǎng)度所對(duì)應(yīng)的網(wǎng)絡(luò)帶寬消耗
綜上所述,當(dāng)l≥15 時(shí),隨著l值的增大,CPU執(zhí)行時(shí)間、內(nèi)存占用量、網(wǎng)絡(luò)帶寬消耗以及惡意用戶終端成功通過輸入驗(yàn)證的概率均呈下降趨勢(shì)。因此在實(shí)際應(yīng)用中可設(shè)置較長(zhǎng)的入侵檢測(cè)特征關(guān)鍵詞,并通過增加l的值以提升方法性能。
最后,給出實(shí)際運(yùn)行時(shí)的資源消耗統(tǒng)計(jì)。如5.1 節(jié)中所述,通過訪問Alexa Top 100 網(wǎng)站和實(shí)際運(yùn)行1 047 例惡意樣本,共捕獲16 165 條TLS 流量。其中有282(即13+269)條TLS 流量被隨機(jī)森林算法判別為惡意流量。在對(duì)這282 條TLS 流量進(jìn)行實(shí)際確認(rèn)時(shí),分別統(tǒng)計(jì)用戶終端的CPU 執(zhí)行時(shí)間、CPU 占用率、網(wǎng)絡(luò)帶寬消耗以及內(nèi)存占用量,并對(duì)統(tǒng)計(jì)結(jié)果取均值作為最后數(shù)值,如表4 所示。
表4 實(shí)際確認(rèn)時(shí)用戶終端的性能消耗
實(shí)驗(yàn)結(jié)果表明,在執(zhí)行確認(rèn)過程中,用戶終端需要進(jìn)行1 min 左右的頻繁計(jì)算(約25%的CPU 使用率),平均占用52.1 MB的內(nèi)存,消耗的網(wǎng)絡(luò)帶寬平均為11.6 MB,可適用于普通PC 和智能手機(jī)。需要注意的是,對(duì)于正常用戶終端,其僅在檢測(cè)節(jié)點(diǎn)產(chǎn)生誤報(bào)時(shí)才參與檢測(cè)確認(rèn)過程。若誤報(bào)率為0.01%,正常用戶終端平均產(chǎn)生10 000 條加密流量才參與一次確認(rèn)。在其他情形時(shí),檢測(cè)節(jié)點(diǎn)與用戶終端間無網(wǎng)絡(luò)交互,用戶終端也不需要進(jìn)行模冪和Hash 計(jì)算,本文提出的方法的運(yùn)行僅需極少的系統(tǒng)資源。因此本文提出的惡意加密流量檢測(cè)確認(rèn)方法對(duì)用戶終端系統(tǒng)的實(shí)際運(yùn)行影響較小。
將本文提出的方法同目前實(shí)用的基于密文解密的惡意加密流量檢測(cè)方法[11,13]進(jìn)行對(duì)比。本文提出的方法只需對(duì)可疑的加密網(wǎng)絡(luò)流量進(jìn)行解密,而文獻(xiàn)[11,13]中的方法需對(duì)所有加密網(wǎng)絡(luò)流量進(jìn)行解密。本文提出的方法運(yùn)用PSI 協(xié)議進(jìn)行特征匹配,除求出的交集外,檢測(cè)節(jié)點(diǎn)無法獲知網(wǎng)絡(luò)流量中其他內(nèi)容,而文獻(xiàn)[11,13]中檢測(cè)節(jié)點(diǎn)能夠獲得用戶終端的所有網(wǎng)絡(luò)流量?jī)?nèi)容。因此,本文提出的方法具有更好的隱私保護(hù)特征,且如表4 所示,本文提出的方法運(yùn)行僅需極少的系統(tǒng)資源。本文提出的方法可以與基于機(jī)器學(xué)習(xí)的惡意加密流量檢測(cè)方法相配合,以一種新方式實(shí)現(xiàn)惡意加密流量的安全、有效監(jiān)管。
本文提出并實(shí)現(xiàn)了一種支持隱私保護(hù)的惡意加密流量檢測(cè)確認(rèn)方法。在提出的方法中,可以使用任意機(jī)器學(xué)習(xí)算法進(jìn)行惡意加密流量的檢測(cè)判斷,并支持字符串關(guān)鍵詞、正則表達(dá)式關(guān)鍵詞以及關(guān)鍵詞位置信息判斷,因而具有良好的適用性和可擴(kuò)展性。在確認(rèn)過程中,用戶終端無法獲得檢測(cè)節(jié)點(diǎn)的入侵檢測(cè)特征內(nèi)容,檢測(cè)節(jié)點(diǎn)無法獲知交集以外的用戶終端其他通信內(nèi)容,從而實(shí)現(xiàn)了雙方的數(shù)據(jù)隱私保護(hù)。利用真實(shí)加密網(wǎng)絡(luò)流量進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果表明,本文提出的方法能減少92.3%的誤報(bào)。在進(jìn)行檢測(cè)確認(rèn)時(shí),CPU 占用率接近25%,但此過程持續(xù)時(shí)間短,平均為58.3 s,且發(fā)生的頻率低,因而對(duì)用戶終端的系統(tǒng)性能影響有限。未來工作包括將用戶終端功能同ClamWin 等開源殺毒軟件相結(jié)合,優(yōu)化程序?qū)崿F(xiàn)提升系統(tǒng)性能,并在校園網(wǎng)等實(shí)際網(wǎng)絡(luò)中部署使用。