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