李 揚,尹大鵬,馬自強,姚梓豪,魏良根
(1.寧夏大學(xué)信息工程學(xué)院,寧夏 銀川 750021;2.寧夏大數(shù)據(jù)與人工智能省部共建協(xié)同創(chuàng)新中心,寧夏 銀川 750021)
側(cè)信道技術(shù)是一種利用密碼設(shè)備的物理信息來竊取密鑰的方法。自1996年Kocher等[1]首先提出側(cè)信道攻擊以來,該技術(shù)已經(jīng)從需要外部設(shè)備輔助完成的接觸式本地攻擊[2-4],發(fā)展到以緩存?zhèn)刃诺拦魹榇淼?通過攻擊進程獲取中央處理器、高速緩存等組件敏感信息的非接觸式遠程攻擊[5-18]。處理器和高速緩存分別作為數(shù)據(jù)的處理核心和常用數(shù)據(jù)存儲核心,不可避免地包含系統(tǒng)與用戶的各項敏感信息。通過緩存?zhèn)刃诺?惡意程序能使敏感信息跨進程[9-11]、跨虛擬機泄漏[8,10],甚至破壞可信執(zhí)行環(huán)境[12,13],且具有不易發(fā)現(xiàn)、極難防御的特點。鑒于上述情況,針對緩存?zhèn)刃诺拦舻姆烙夹g(shù)應(yīng)運而生。攻擊檢測作為防御技術(shù)的重要組成部分,經(jīng)過近二十年的發(fā)展,已有許多研究成果[19-33]。
早期常用的是基于簽名或異常的檢測方法[19-23],但是其靜態(tài)或動態(tài)分析會帶來較大性能開銷,且易受到惡意軟件的反分析或逃逸技術(shù)干擾,導(dǎo)致檢測精度低。后來,使用硬件性能計數(shù)器HPCs(Hardware Performance Counters)的檢測方法[24],通過獲取HPCs記錄的緩存事件信息判斷攻擊是否發(fā)生,但該方法需要人工分析和選擇特征,攻擊變化時還需重新挑選特征。
隨著人工智能技術(shù),如機器學(xué)習(xí)在各領(lǐng)域廣泛應(yīng)用,研究人員開始將其引入緩存?zhèn)刃诺拦舻臋z測中,并提出了多種相關(guān)方法[25-32]。然而,大多數(shù)方法在實時性和應(yīng)用場景方面考慮得較少[25,28,29,31]。緩存?zhèn)刃诺拦艨梢栽谳^短時間內(nèi)完成,因此為避免敏感信息泄露,需及時檢測出攻擊,這對模型的檢測速度和實時性提出了較高要求。同時,還需充分考慮處理器差異和負載變化等環(huán)境部署因素。部分機器學(xué)習(xí)檢測技術(shù)在高負載情況下會出現(xiàn)較低檢測精度[34,35]和較高誤報率[36,37],甚至導(dǎo)致系統(tǒng)整體性能下降[38-41]。因此,在不同負載環(huán)境下實現(xiàn)高準(zhǔn)確率和低系統(tǒng)消耗的攻擊檢測顯得尤為重要。
為解決上述問題,本文以決策樹和AdaBoost為基礎(chǔ)提出一種結(jié)合決策樹和AdaBoost的檢測模型,用于檢測緩存?zhèn)刃诺拦糁芯哂写硇缘?類攻擊:Flush+Reload[16]和Prime+Probe[17]。這2類攻擊分別利用緩存爭用和數(shù)據(jù)重用產(chǎn)生信息泄漏。
本文的主要工作包括以下3個方面:
(1)提出了一種結(jié)合決策樹和AdaBoost的組合模型DA(Decision tree-AdaBoost),用于緩存?zhèn)刃诺拦魴z測。該模型考慮了被檢測系統(tǒng)的特點,能夠滿足多負載情況下的檢測需求,解決了單決策樹模型在高負載下出現(xiàn)的數(shù)據(jù)重疊和檢測精度下降等問題。
(2)最小化監(jiān)測事件集。本文從冗雜的硬件事件信息中選取關(guān)鍵特征進行監(jiān)測,避免了因監(jiān)測大量特征而造成的性能下降。
(3)構(gòu)建了適應(yīng)現(xiàn)實攻擊場景的數(shù)據(jù)集。通過監(jiān)測硬件性能計數(shù)器的事件信息,針對不同負載情況,構(gòu)建相應(yīng)數(shù)據(jù)集用于模型訓(xùn)練和檢測,保證了模型在不同負載下具備高精度、低開銷的攻擊檢測能力。
本文剩余部分的組織結(jié)構(gòu)如下:第2節(jié)介紹檢測方法的整體框架;第3節(jié)闡述數(shù)據(jù)集的構(gòu)建方法和特征選擇策略;第4節(jié)介紹DA模型的設(shè)計思路和構(gòu)建方法;第5節(jié)評估DA模型在不同負載情況下的檢測性能;第6節(jié)總結(jié)全文。
本節(jié)介紹DA檢測模型的整體架構(gòu)。如圖1所示,該模型由3部分組成:數(shù)據(jù)采集模塊、數(shù)據(jù)集構(gòu)建模塊和攻擊檢測模塊。
數(shù)據(jù)采集模塊利用系統(tǒng)調(diào)用perf_event_open讀取并統(tǒng)計HPCs中的事件信息;之后,將其輸入數(shù)據(jù)集構(gòu)建模塊進行數(shù)據(jù)處理;最后,將處理完成的數(shù)據(jù)輸入檢測模塊進行分類,若分類結(jié)果中有攻擊類數(shù)據(jù),則判斷系統(tǒng)受到了緩存?zhèn)刃诺拦簟?/p>
Figure 1 Overall framework of DA detection model圖1 DA檢測模型整體框架
具體工作流程如下:
首先,通過perf_event_open獲取硬件事件數(shù)據(jù),并從中剔除無關(guān)或相關(guān)性較小的特征,最后篩選出與攻擊相關(guān)性較大的重要特征用于模型訓(xùn)練。
篩選出重要特征后,數(shù)據(jù)采集模塊再次使用perf_event_open在HPCs上重點篩選出重要特征。同時,分別統(tǒng)計在無系統(tǒng)負載和系統(tǒng)滿載時攻擊與無攻擊的數(shù)據(jù)樣本,并將這些數(shù)據(jù)樣本傳遞給數(shù)據(jù)集構(gòu)建模塊。該模塊將整合和預(yù)處理采集到的重要特征信息,形成最終的數(shù)據(jù)集。
最后,將構(gòu)建完成的數(shù)據(jù)集輸入檢測模塊。該模塊使用決策樹檢測模塊和AdaBoost檢測模塊進行統(tǒng)一的訓(xùn)練和預(yù)測。同時,根據(jù)系統(tǒng)負載情況實時調(diào)整2個模型的權(quán)重,最終輸出整體分類結(jié)果。若檢測出攻擊,則及時報告安全人員并啟動相應(yīng)緩解措施。
DA模型將HPCs事件作為檢測緩存?zhèn)刃诺拦舻奶卣鳌H欢?現(xiàn)代計算機中HPCs數(shù)量通常達幾百個,若監(jiān)測和統(tǒng)計事件信息過多,會增加系統(tǒng)負載,進而影響系統(tǒng)性能。因此,需要從眾多硬件事件中選取能代表Flush+Reload和Prime+Probe攻擊的特征。本節(jié)將介紹如何通過HPCs采集數(shù)據(jù),并篩選出有利于識別攻擊的重要特征。
調(diào)用perf_event_open運行算法1,采集HPCs的硬件事件。采樣過程中,perf_event_open每次統(tǒng)計一個周期內(nèi)所監(jiān)測事件發(fā)生的次數(shù)。為了準(zhǔn)確獲得攻擊時各事件的數(shù)據(jù)模式,本文在攻擊發(fā)生的時間段內(nèi)完成攻擊時硬件事件數(shù)據(jù)的獲取。
算法1 HPCs事件數(shù)據(jù)采樣算法輸出:進程標(biāo)識符PID,結(jié)構(gòu)體attr,采樣次數(shù)T。輸出:attr對應(yīng)性能事件次數(shù)count。1 i←1;2 initialization(TYPE);//初始化attr結(jié)構(gòu)體3 read(PID);//讀取PID4 fd←syscall(perf_event_open,attr);/*返回文件描述符*/5 whilei≤T do{6 ioctl(fd,PERF_EVENT_IOC_RESET);/*復(fù)位性能計數(shù)器*/7 ioctl(fd,PERF_EVENT_IOC_ENABLE);/*開啟計數(shù)器*/8 等待,采集對應(yīng)進程的性能事件相關(guān)信息;9 ioctl(fd,PERF_EVENT_IOC_DISABLE);/*停止計數(shù)*/10 count←readcount(fd);/*讀取對應(yīng)的性能計數(shù)器值*/}11 return count;12 close(fd);//關(guān)閉計數(shù)器
3.2.1 概述
計算機系統(tǒng)中HPCs的數(shù)量和記錄的事件是有限的,但這并不代表監(jiān)測全部HPCs的所有事件是一個好的檢測方案。這是因為統(tǒng)計過多的事件信息會增加系統(tǒng)負載、影響檢測精度;統(tǒng)計過少的事件信息無法準(zhǔn)確刻畫攻擊特征,導(dǎo)致漏檢增多、錯檢率上升。最小化監(jiān)測事件集,使模型能在有限的統(tǒng)計資源中提升檢測精度,降低系統(tǒng)性能開銷,是本文需要解決的一個重要問題。
Wang等[25]提出應(yīng)選取與攻擊行為密切相關(guān)的事件來提高檢測精度。Sabbagh等[38]認為應(yīng)選取精確且獨特的信息以增加攻擊行為的辨識度。Chiappetta等[33]的研究發(fā)現(xiàn),系統(tǒng)高負載時緩存替換頻率和緩存未命中率上升,并且會產(chǎn)生對攻擊檢測不利的噪聲,影響模型檢測精度。因此,應(yīng)該選擇不同負載下對攻擊特征影響較小的事件。機器學(xué)習(xí)實踐表明,訓(xùn)練樣本應(yīng)盡量避免單一類型數(shù)據(jù),可以減少模型偏向。
結(jié)合上述研究及本文的實驗觀察,本文認為可以從以下5個方面來選取事件集并從中選取分辨能力較強的特征來最小化監(jiān)測事件集:
(1)事件對攻擊行為的相關(guān)性。如緩存爭用會使“緩存未命中”事件次數(shù)顯著增加。
(2)事件的多樣性。事件多樣性有助于分類,缺少多樣性的訓(xùn)練數(shù)據(jù)會造成模型的偏向。
(3)事件的魯棒性。在系統(tǒng)負載增加的情況下,對特征影響小的事件。
(4)事件的獨特性和精確性。盡可能提供精確、獨特的信息,正常狀態(tài)的信息和異常狀態(tài)的信息不會與其他事件重疊。
(5)事件集的輕量性。少而精的事件集,采樣時不會造成巨大的性能開銷。
3.2.2 初步選擇
從3.2.1節(jié)的5方面事件選取標(biāo)準(zhǔn)及攻擊原理和具體實現(xiàn)出發(fā),分析可能發(fā)生的硬件事件,有利于初步縮小監(jiān)測事件集。本節(jié)從2種攻擊實現(xiàn)代碼及其原理出發(fā),分析可能需要監(jiān)測的硬件事件,并重點關(guān)注多層級的緩存事件信息。
Cache是為減小CPU運算速度與主存讀寫速度之間的差距而設(shè)計的高速存儲器。當(dāng)CPU訪問的數(shù)據(jù)位于Cache中時,稱為“緩存命中”(CacheHit),相應(yīng)地在HPCs中,該事件發(fā)生被“CacheReferences”記錄。為便于后文敘述,本文將事件A與HPCs中性能事件B的對應(yīng)關(guān)系記為〈A,B〉。即〈CacheHit,CacheReferences〉。反之,則從主存讀取數(shù)據(jù)并更新緩存,稱為“緩存未命中”(〈CacheMiss,CacheMisses〉)。緩存命中與否會導(dǎo)致數(shù)據(jù)讀取時間的顯著差異,這種差異是Flush+Reload和Prime+Probe攻擊的基礎(chǔ)。
從事件對攻擊行為的相關(guān)性與事件的多樣性出發(fā),在Flush+Reload攻擊中,攻擊進程會頻繁調(diào)用clflush指令清空指定緩存行;在Prime+Probe攻擊中,攻擊者利用驅(qū)逐集將受害者的緩存行逐出緩存。這些行為都會導(dǎo)致本應(yīng)在緩存中的數(shù)據(jù)需要從主存中讀取。因此,理論上在這2種攻擊發(fā)生時,被攻擊系統(tǒng)的緩存未命中次數(shù)會高于正常系統(tǒng)的,監(jiān)測HPCs上的Cache References和Cache Misses 2項指標(biāo)對判斷是否發(fā)生了攻擊是非常必要的。
Figure 2 Changes of eight events information during Prime+Probe attack圖2 Prime+Probe攻擊時8類事件信息的變化情況
從事件的魯棒性出發(fā),除了關(guān)注Cache整體,本文還需要關(guān)注各層次緩存之間可能存在的差異。作為與處理器核心直接進行數(shù)據(jù)交互的L1 Cache,數(shù)據(jù)緩存命中(〈L1 Data Cache Hit,L1 dCache Loads〉)與數(shù)據(jù)緩存未命中(〈L1 Data Cache Miss,L1 dCache Load Misses〉)事件能直接反映攻擊行為。指令緩存的緩存命中情況(〈L1 Instruction Cache,Cache Instruction〉)以及未命中導(dǎo)致的程序執(zhí)行時間(〈Program Execution Time,CPU Cycles〉)變長也是需要重點關(guān)注的信息,他們能在一定程度上刻畫攻擊行為。
L1 Cache未命中時,會逐級檢索下一級緩存,直至最后一級緩存LLC(Last Level Cache)。Flush+Reload和Prime+Probe是利用LLC的包容性進行信息竊取的側(cè)信道攻擊,因此,LLC的命中(〈LLC Hit,L3 Total Accesses〉)與未命中(〈LLC Miss,L3 Total Cache Misses〉)也是本文重點監(jiān)測的信息。
按所述步驟初步篩選出的硬件事件信息如表1所示,其中用事件名稱首字母縮寫表示事件發(fā)生的次數(shù)。
Table 1 Information of hardware events 表1 相關(guān)硬件事件信息表
從事件的獨特性和精確性出發(fā),為進一步縮小事件集,選出與攻擊相關(guān)性較大的若干事件作為攻擊特征。本文記錄表1中的事件信息在攻擊和無攻擊場景下的相應(yīng)值,并以折線圖形式來可視化展現(xiàn)這些數(shù)值的變化情況,如圖2和圖3所示。圖中橫坐標(biāo)表示采樣次數(shù),每次采樣的時間間隔為0.1 ms;縱坐標(biāo)表示每次采樣下各類事件發(fā)生的次數(shù)。
Prime+Probe攻擊發(fā)生時,表1所示的8個事件信息的變化情況如圖2所示。從圖2a、圖2f、圖2g和圖2h可以看出,CM、L1d-CLM、L3-TA、L3-TCM4個特征的值均有了明顯的上升。從圖2b和圖2e可以看出,CR、L1d-CL有明顯的下降。從圖2c和圖2d可以看出,CC在前55次的采樣有一定程度的上升,但在后續(xù)的采樣中數(shù)據(jù)基本無變化;CI的數(shù)據(jù)重疊度很高,在攻擊前后基本無變化。
Flush+Reload攻擊發(fā)生時,表1所示的8個事件信息的變化情況如圖3所示。從圖3a、圖3f、圖3g和圖3h可以看出,CM、L1d-CLM出現(xiàn)了非常明顯的增長;L3-TA和L3-TCM有了一定程度的增加,但增長幅度非常小,與Flush+Reload攻擊相關(guān)性較低,幾乎可以視為噪聲。從圖3b和圖3e可以看出,CR、L1d-CL在Flush+Reload攻擊下有了明顯的降低。從圖3c和圖3d可以看出,CI、CC與在Prime+Probe攻擊下的表現(xiàn)近似,圖形重疊程度高,變化差異小,相關(guān)性低。
綜上所述,在2種攻擊下,各類事件信息都有不同程度的變化。其中相應(yīng)值變化較大的有CM、L1d-CLM、CR,L1d-CL,此4類特征在2種攻擊下,變化程度大、重疊程度低,具有較大的差異性。根據(jù)這4類特征可以有效判別攻擊是否發(fā)生。L3-TA和L3-TCM這2類特征在Prime+Probe攻擊下均出現(xiàn)了明顯的增長,但在Flush+Reload攻擊下這2類特征增長幅度小、相關(guān)性較低,所以不選擇這2類事件信息作為主要特征。最后CI和CC特征在2類攻擊下均表現(xiàn)出了較低的相關(guān)性。因此,針對Prime+Probe與 Flush+Reload 2種攻擊下的檢測,本文選取CM、CR、L1d-CLM和L1d-CL4個特征進一步構(gòu)建數(shù)據(jù)集。
Figure 3 Changes of eight events information during Flush+Reload attack圖3 Flush+Reload攻擊時8類事件信息的變化情況
本節(jié)分析和探究不同負載情況對4類特征信息的影響程度。對于檢測模型部署的系統(tǒng)環(huán)境,系統(tǒng)高負載時相較于低負載時會出現(xiàn)更為頻繁的緩存命中與未命中、換入與換出等事件,進而對以該事件及相關(guān)其他事件為特征的檢測模型的檢測精度造成一定影響。從事件集的輕量性出發(fā),探究不同系統(tǒng)負載對特征信息的影響程度十分必要。3.3節(jié)選出了在Prime+Probe 和Flush+Reload攻擊下表現(xiàn)出高相關(guān)性的4類特征?;谶@4類特征,本文引入CMR(Cache Misses Rates)和L1d-CMR(L1 data Cache Miss Rates)這2個可以反映出攻擊行為與不同特征信息之間相關(guān)性的指標(biāo),并將其作為后續(xù)評估的衡量指標(biāo),具體計算分別如式(1)和式(2)所示:
(1)
(2)
3.4.1 Flush+Reload
為了更好地對比不同負載情況下CMR和L1d-CMR變化情況,圖4和圖5分別給出了無系統(tǒng)負載和系統(tǒng)滿載情況下Flush+Reload攻擊發(fā)生時2個指標(biāo)的變化情況。
Figure 4 Changes of event information without system load (Flush+Reload)圖4 無系統(tǒng)負載下事件信息的變化(Flush+Reload)
Figure 5 Changes of event information with fully system load (Flush+Reload)圖5 系統(tǒng)滿載下事件信息的變化(Flush+Reload)
從如圖4可以看出,Flush+Reload攻擊使得CMR和L1d-CMR在各采樣批次中有了不同程度的增長,CMR平均提升了25%左右,L1d-CMR平均提升了35%左右,對總體采樣批次而言,在Flush+Reload攻擊下2個指標(biāo)提升約37%。
從圖5可以看出,無攻擊發(fā)生時,CMR的區(qū)間明顯較大,且在個別采樣批次中CMR甚至超過了90%;Flush+Reload攻擊發(fā)生時,CMR整體大于70%,有部分重疊區(qū)域;L1d-CMR在攻擊和無攻擊情況下所處的區(qū)間范圍均較大,整體處于43%~80%,且有大部分重疊區(qū)域。
3.4.2 Prime+Probe
圖6和圖7分別是無系統(tǒng)負載和系統(tǒng)滿載情況下,Prime+Probe攻擊發(fā)生時CMR和L1d-CMR變化情況。
Figure 6 Changes of event information without system load (Prime+Probe)圖6 無系統(tǒng)負載下事件信息的變化(Prime+Probe)
Figure 7 Changes of event information with fully system load (Prime+Probe)圖7 系統(tǒng)滿載下事件信息的變化(Prime+Probe)
從圖6可以看出,Prime+Probe攻擊造成了大量的緩存丟失,CMR整體在70%以上,L1d-CMR整體在40%~80%;在無攻擊情況下,CMR整體小于31%,L1d-CMR在10%~30%。
從圖7可以看出,未受攻擊時,CMR基本處于40%左右,相較于無負載情況提升了近10%;在Prime+Probe攻擊下,CMR所處的區(qū)間范圍有所增大,處于40%以上,對比無系統(tǒng)負載情況時區(qū)間范圍增大了約30%;L1d-CMR在攻擊和無攻擊下均集中在40%左右,出現(xiàn)了部分重疊情況。
3.4.3 小結(jié)
從3.4.1節(jié)和3.4.2節(jié)的分析可知,攻擊發(fā)生時,無系統(tǒng)負載情況下CMR和L1d-CMR2個指標(biāo)值均有不同程度的增長,圖4和圖6中2個指標(biāo)基本無重疊區(qū)域,區(qū)分度明顯;但系統(tǒng)滿載時,2個指標(biāo)值都受到了不同程度的影響,數(shù)據(jù)所處的區(qū)間范圍變大了,如圖5和圖7中2個指標(biāo)出現(xiàn)了部分重疊。其中,L1d-CMR受到的影響相對較大,重疊區(qū)域數(shù)據(jù)區(qū)分不明顯,但還是有部分區(qū)域特征可以用來判別攻擊行為,直接忽視這部分數(shù)據(jù)會導(dǎo)致部分數(shù)據(jù)樣本發(fā)生數(shù)值偏移或丟失。因此,在數(shù)據(jù)最終輸入模型之前,還需要進行數(shù)據(jù)處理工作,將這一類遠離了正常數(shù)據(jù)樣本的離群點去除,通過特征放大和數(shù)據(jù)清洗等操作,使數(shù)據(jù)樣本變得更加平滑,解決了數(shù)據(jù)的不一致性問題。圖8展示了部分數(shù)據(jù)處理后的圖形變化情況。
Figure 8 Example of samples changing before and after data processing圖8 數(shù)據(jù)處理前后樣本變化示例
數(shù)據(jù)處理完成后,數(shù)據(jù)集以用4個特征定義的2個指標(biāo)為主要攻擊特征,分別在有攻擊和無攻擊時,通過調(diào)用perf_event_open獲取并統(tǒng)計無負載和系統(tǒng)滿載時的特征數(shù)據(jù),將不同系統(tǒng)環(huán)境下采集到的數(shù)據(jù)樣本整合成最終所使用的數(shù)據(jù)集。最后將數(shù)據(jù)集劃分成3個部分:訓(xùn)練集(占比80%)、驗證集(占比10%)和測試集(占比10%),分別用于模型訓(xùn)練、驗證和測試。
傳統(tǒng)檢測模型在系統(tǒng)無負載時表現(xiàn)良好,特征區(qū)分較為明顯,檢測精度較高,響應(yīng)速度較快。但是,在系統(tǒng)高負載時,各指標(biāo)值均開始下降,難以滿足實際檢測需求。本節(jié)將闡述DA檢測模型如何在高負載環(huán)境下保持高效的檢測狀態(tài)。
根據(jù)3.4節(jié)的分析,系統(tǒng)無負載時,有攻擊和無攻擊的CMR和L1d-CMR有明顯差異,可以用閾值方法進行區(qū)分。但是,在系統(tǒng)高負載時(如圖5b和圖7b),緩存干擾導(dǎo)致部分數(shù)據(jù)重疊,閾值方法失效,只有少數(shù)特征數(shù)據(jù)能判別攻擊。因此,需要構(gòu)建能識別復(fù)雜模式的機器學(xué)習(xí)模型,用于探尋數(shù)據(jù)與攻擊之間的規(guī)律,進行更有效的攻擊識別。本節(jié)從檢測精度和性能開銷2方面評價不同的機器學(xué)習(xí)模型。
圖9展示了不同系統(tǒng)負載下各類機器學(xué)習(xí)模型的檢測精度和性能開銷。檢測精度如圖9a所示,可以看到,隨著系統(tǒng)負載增加,各機器模型的檢測精度都有所下降,其中隨機森林RF(Random Forest)、K近鄰KNN(K-Nearest Neighbors)、決策樹DT(Decision Tree)、神經(jīng)網(wǎng)絡(luò)NNs(Neural Networks)和AdaBoost模型均表現(xiàn)出了不錯的檢測精度,并且在系統(tǒng)高負載的情況下RF、NNs和AdaBoost模型的檢測精度均大于90%。
Figure 9 Detection accuracy and performance overhead of each machine learning model圖9 各機器學(xué)習(xí)模型檢測精度和性能開銷
性能開銷方面如圖9b所示,可以看到,不同的檢測模型性能開銷也有所差異。其中邏輯回歸LR(Logistic Regression)和DT性能開銷均小于2%;支持向量機SVM(Support Vector Machine)、RF和AdaBoost 模型的性能開銷大約在2%~5%;KNN 和NNs模型的性能開銷在系統(tǒng)滿載的情況下均超過了5%。
通過綜合對比分析可知,LR和SVM的檢測精度相對較低,不適合選用;KNN模型檢測精度較高,但它使用運行時的所有數(shù)據(jù)點來進行決策,性能開銷和存儲開銷過大,實現(xiàn)復(fù)雜;NNs模型檢測精度也較高,但容易過擬合,性能開銷較大;AdaBoost模型在系統(tǒng)滿載時的檢測精度優(yōu)于RF模型的;DT不僅具有較低的性能開銷,在系統(tǒng)無負載時也能保持不錯的檢測精度。綜上,本文選取DT和AdaBoost構(gòu)建新模型。
4.2.1 DA檢測模型簡介
(1)DA檢測模型的設(shè)計思想?;贒T和AdaBoost 2種模型各自在低負載和高負載情況下優(yōu)異的檢測性能,提出將2種檢測模型組合使用的方法。該檢測方法分為D-A-C 3個步驟。D步驟選取決策樹作為第1個分類器。為了更有效地劃分數(shù)據(jù)集,在決策樹分支節(jié)點中構(gòu)造線性分類器來確定屬性所屬分類區(qū)間,通過遞歸生成決策樹檢測模型,用于完成低負載時的檢測攻擊。A步驟選取AdaBoost作為第2個分類器。初始化數(shù)據(jù)樣本權(quán)重,根據(jù)訓(xùn)練集中每個樣本的分類正確性(即準(zhǔn)確率),更新每個樣本的權(quán)值和分布,通過反復(fù)迭代得到最終的強分類器,用于完成高負載時的檢測攻擊。C(Combination)步驟根據(jù)系統(tǒng)負載情況,動態(tài)調(diào)整上述2個模型的權(quán)重,然后輸出最終的檢測結(jié)果。
(2)訓(xùn)練策略。訓(xùn)練集中的數(shù)據(jù)樣本均勻地分布在不同使用場景下,包含攻擊和無攻擊場景下的數(shù)據(jù)樣本,以及無系統(tǒng)負載和系統(tǒng)滿載情況下收集的數(shù)據(jù)樣本。系統(tǒng)滿載情況下,選取的特征數(shù)據(jù)會受到不同程度的影響,而這一類數(shù)據(jù)往往是造成檢測精度降低和誤報率升高的關(guān)鍵因素。因此,為了使得檢測模型具有更好的檢測效果,本文在數(shù)據(jù)集中將無系統(tǒng)負載和系統(tǒng)滿載的數(shù)據(jù)樣本分開,先使用無系統(tǒng)負載下的數(shù)據(jù)樣本進行預(yù)訓(xùn)練,并保留預(yù)訓(xùn)練的參數(shù);然后加入系統(tǒng)滿載數(shù)據(jù)樣本,根據(jù)參數(shù)對比調(diào)整,使得訓(xùn)練模型達到一個好的檢測效果。
4.2.2 決策樹檢測模塊的構(gòu)建
數(shù)據(jù)集中每個樣本對應(yīng)于坐標(biāo)空間中的一個數(shù)據(jù)點。這種情況下,樣本的分類可以被視為在坐標(biāo)空間中尋找分類邊界。然而,決策樹的一個顯著特點是決策節(jié)點常使用屬性的某一閾值作為分類依據(jù),這一特點在坐標(biāo)空間中表現(xiàn)為分類邊界與坐標(biāo)軸平行。盡管這種劃分方式具有很好的解釋性,但在處理復(fù)雜分類樣本時,通常需要逐個經(jīng)過多個決策節(jié)點才能獲得較好的決策效果,這會導(dǎo)致決策樹變得相當(dāng)復(fù)雜。本文通過一條斜線來劃分邊界,解決了決策樹這方面的問題。此時,決策樹的每個非葉子節(jié)點都可以看作是一個線性分類器,通過調(diào)整線性分類器的參數(shù),可以獲得更好的檢測效果。具體而言,主要步驟如下:
(1)導(dǎo)入訓(xùn)練集和屬性集:選取CMR和L1d-CMR為構(gòu)建數(shù)據(jù)集的主要特征,由此確定了訓(xùn)練決策樹的數(shù)據(jù)樣本和屬性樣本。其中,數(shù)據(jù)樣本為攻擊和無攻擊時采樣的數(shù)據(jù)集合,屬性樣本為數(shù)據(jù)集特征集合。
(2)構(gòu)建分支節(jié)點:對決策樹的每個分支節(jié)點構(gòu)造線性分類器,以CMR和L1d-CMR分別作為X軸和Y軸構(gòu)建坐標(biāo)系。如圖10所示,坐標(biāo)系中標(biāo)記了訓(xùn)練集中的部分數(shù)據(jù)點,三角形點為攻擊下的數(shù)據(jù)點,方形點為無攻擊下的數(shù)據(jù)點。在訓(xùn)練樣本的每個屬性數(shù)據(jù)樣本均表示為坐標(biāo)平面上的點后,通過最小二乘法在平面中找到一條直線,使得所有樣本到該直線的距離之和最小,且該斜線能區(qū)分正常數(shù)據(jù)和攻擊數(shù)據(jù)。
Figure 10 Linear classification model圖10 線性分類模型
(3)遞歸構(gòu)建決策樹:將選取好的特征用相同的方式進行屬性劃分,同時定義決策樹節(jié)點。此時,決策樹中每個非葉節(jié)點都是一個線性分類器,用于表示已經(jīng)對屬性進行了劃分,葉節(jié)點則代表了最終的決策結(jié)果。每一次屬性劃分后,數(shù)據(jù)被傳遞到下一個節(jié)點,并通過遞歸的方式來構(gòu)建整棵決策樹。當(dāng)遍歷完所有的屬性樣本時遞歸過程結(jié)束,產(chǎn)生了完整的決策樹。如圖11所示為最終遞歸完成的多變量決策樹。
4.2.3 AdaBoost檢測模塊的構(gòu)建
為保證高負載時檢測模型的可靠性和精度,引入AdaBoost檢測模塊。如圖12所示為AdaBoost訓(xùn)練流程,通過更新樣本權(quán)重和分布以及調(diào)整迭代次數(shù),構(gòu)建強分類器。
Figure 12 Training process of AdaBoost圖12 AdaBoost訓(xùn)練流程
主要步驟如下:
(1)導(dǎo)入訓(xùn)練樣本并選擇弱分類器:如表3所示,在數(shù)據(jù)集中隨機抽取1 000條數(shù)據(jù)作為初始訓(xùn)練樣本,并為每個數(shù)據(jù)樣本分配0.001的初始權(quán)重。使用線性分類器作為弱分類器。
(2)更新權(quán)重和樣本分布:利用線性分類器對訓(xùn)練集進行劃分,并調(diào)整線性分類器的閾值,以使不同標(biāo)簽的數(shù)據(jù)點能夠被線性分類器分開。然后,統(tǒng)計分類錯誤的數(shù)據(jù)樣本。表2后3行顯示了1次訓(xùn)練的分類結(jié)果以及相應(yīng)的樣本權(quán)重變化。正確樣本的權(quán)重從0.001減少到0.000 67,錯誤樣本的權(quán)重從0.001提升到 0.001 8。本文計算了線性模型的初始誤差率,即分類錯誤的數(shù)據(jù)點個數(shù)占數(shù)據(jù)集中所有數(shù)據(jù)點的比例。根據(jù)誤差率,更新每個樣本的權(quán)重和樣本分布,以進行下一輪迭代。
Table 2 Samples, classification results and weight updating表2 樣本、分類結(jié)果及更新權(quán)重
(3)迭代構(gòu)成強分類器:第1輪對樣本數(shù)據(jù)加權(quán)更新后,AdaBoost 檢測模型已初步具備了檢測能力。為進一步降低誤差率,本文重復(fù)上述過程進行多輪迭代,不斷生成新的弱分類器,并更新樣本權(quán)重和分布。AdaBoost檢測模型的迭代次數(shù)由預(yù)先設(shè)定的訓(xùn)練輪數(shù)n決定。通過調(diào)整訓(xùn)練輪數(shù),可以使得 AdaBoost 檢測模型獲得較高的檢測精度。需要指出的是,這并不代表迭代次數(shù)與模型性能成正相關(guān)。若迭代次數(shù)太少,模型訓(xùn)練不充分,導(dǎo)致檢測精度低;迭代次數(shù)過多,易導(dǎo)致模型訓(xùn)練耗時長,甚至出現(xiàn)過擬合問題。如圖13所示,本文AdaBoost迭代到 100 次時檢測精度最高。因此,本文將迭代次數(shù)設(shè)置為100,用于后續(xù)訓(xùn)練和測試。圖14是根據(jù)AdaBoost 檢測模型迭代原理做出的一種圖形化解釋,每次權(quán)重更新都可以從樣本中劃分出更多的有效數(shù)據(jù)點,最終通過迭代獲得數(shù)據(jù)的有效劃分。
Figure 13 Relationship between the number of iterations and detection accuracy of AdaBoost圖13 AdaBoost迭代次數(shù)與檢測精度關(guān)系
Figure 14 Training process of AdaBoost圖14 AdaBoost訓(xùn)練流程
4.2.4 模型的組合
(3)
(4)
本文在Intel i7-4770 CPU上運行Linux Ubuntu16.04.1進行實驗。本節(jié)將采用多種機器學(xué)習(xí)模型和不同負載條件下DA檢測模型的性能進行對比。5.1節(jié)比較各種機器學(xué)習(xí)模型在針對緩存?zhèn)刃诺拦魴z測的二分類問題中的效果,并從中選取出最優(yōu)模型作為DA檢測模型的基礎(chǔ)。5.2節(jié)分析DA檢測模型在無負載和滿載情況下與其他機器學(xué)習(xí)模型在各項性能指標(biāo)上的差異。
本文選取了決策樹和 AdaBoost 2種機器學(xué)習(xí)模型構(gòu)建檢測模型,并測試了其相關(guān)性能指標(biāo),同時還選擇了SVM和RF作為對比模型。本節(jié)從檢測精度、檢測時間、誤報率和性能開銷4個方面評價模型的檢測效果。檢測精度是指檢測模型預(yù)測結(jié)果與實際結(jié)果的一致性。檢測速度是指當(dāng)攻擊發(fā)生到被檢測出的時間間隔。誤報率在檢測中主要分為假陽性率和假陰性率,其中假陽性是指系統(tǒng)在正常狀態(tài)下被預(yù)測為攻擊;假陰性是指系統(tǒng)在攻擊狀態(tài)下被檢測為正常。誤報率可以通過統(tǒng)計錯誤結(jié)果在總結(jié)果中的占比來計算。性能開銷是指運行檢測模型時的CPU占用率。
表3展示了4種針對側(cè)信道攻擊檢測的機器學(xué)習(xí)模型在二分類問題中的實驗結(jié)果,分別考慮了Prime+Probe和Flush+Reload 2種攻擊在無系統(tǒng)負載和系統(tǒng)滿載的情況下的檢測效果。
從圖5可以看出,無系統(tǒng)負載時,決策樹和AdaBoost相較于SVM與RF具有更高的檢測精度和更低的誤報率,但是相比于其他3種模型,AdaBoost的性能開銷明顯較高,此時選用決策樹作為檢測模型是兼顧精度和開銷的最優(yōu)選擇;系統(tǒng)滿載時,AdaBoost在檢測精度和誤報率方面的優(yōu)勢更加突出;RF在無負載和滿載情況下響應(yīng)時間都較長,不符合模型的響應(yīng)時間要求; SVM在無負載和滿載情況下的誤報率都較高,不符合模型的準(zhǔn)確率要求;DT檢測精度較低。因此,選用AdaBoost作為檢測模型是兼顧精度和開銷的最優(yōu)選擇。
本節(jié)將對DA檢測模型的各項指標(biāo)進行評估。表4為無系統(tǒng)負載和系統(tǒng)滿載情況下DA檢測模型各項指標(biāo)對比情況。
(1)檢測精度:從表4可以看出,DA檢測模型在Prime+Probe攻擊下的檢測精度在98.85%~99.95%;在Flush+Reload攻擊下的檢測精度在98.78%~99.98%。無系統(tǒng)負載情況下,DA檢測模型的檢測精度最高達到了99.98%,系統(tǒng)滿載情況下,檢測精度有所降低,在98.80%左右。
對比Prime+Probe攻擊下的單個檢測模型:無負載情況下,DA檢測模型的檢測精度比DT、SVM、RF的均提升了0.4%左右;滿載情況下,單個模型與DA檢測模型的檢測精度均有了一定的提升,與AdaBoost模型的相當(dāng)。
對比Flush+Reload攻擊下的單個檢測模型:無負載情況下,DA檢測模型檢測精度相比DT、SVM、RF的有小幅度提升,但略小于AdaBoost模型的;滿載情況下,DA檢測模型的檢測精度略小于AdaBoost 模型的,相比DT、SVM、RF的檢測精度提升約3%。
Table 3 Experimental results of single model under Prime+Probe (PP) and Flush+Reload (FR) attacks表3 Prime+Probe與Flush+Reload攻擊下單個模型實驗結(jié)果
Table 4 Experimental results of DA detection model under different load conditions表4 不同負載情況下DA檢測模型實驗結(jié)果
(2)檢測速度:DA檢測模型在Prime+Probe攻擊和Flush+Reload攻擊下的響應(yīng)時間為15~22 ms。其中,無負載情況下,DA檢測模型的檢測時間最小,只有15 ms;滿負載情況下,DA檢測模型的最高,有22 ms。
對比DT和SVM,系統(tǒng)無負載情況下,DA檢測模型的檢測速度相當(dāng)。但在系統(tǒng)滿載情況下,DA檢測模型的響應(yīng)時間明顯長于DT和SVM的,略短于AdaBoost模型的,相比RF的檢測速度要快約7 ms。
(3)誤報率:DA檢測模型在Prime+Probe和Flush+Reload攻擊中表現(xiàn)出了較好的檢測效果,其誤報率相對較低,均小于0.1%。但是,在系統(tǒng)滿載的情況下,仍有1.3%左右的誤報率。對比DT、SVM和RF這3個檢測模型,DA檢測模型的誤報率均小于這3個模型的。DA檢測模型的誤報率與AdaBoost的相當(dāng)。
(4)系統(tǒng)性能開銷:無負載情況下,DA檢測模型在Prime+Probe和Flush+Reload攻擊時的CPU占比為3.5%,且隨著系統(tǒng)負載的增加,DA檢測模型的性能開銷也略微增長了0.2%。與4個單個檢測模型相比,DA檢測模型檢測的性能開銷與AdaBoost的相當(dāng),也可以看出 DA檢測模型的性能開銷更趨向于AdaBoost模型的。
實驗結(jié)果表明,在系統(tǒng)無負載與滿載情況下,DA檢測模型相較于4種模型具有更高的檢測精度、更快的檢測速度和更低的誤報率。性能開銷略高于其他3種模型的,相較于AdaBoost的高約0.2%,相較于其他方面的改進,性能開銷在可接受范圍內(nèi)。
針對計算機系統(tǒng)面臨緩存?zhèn)刃诺拦舻囊髾z測具備實時性、檢測精度高,且檢測情況更復(fù)雜等問題,本文提出了一種基于決策樹和AdaBoost的DA檢測模型。同時,本文研究了硬件事件特征在不同負載和不同攻擊情況下的變化規(guī)律。DA檢測模型綜合考慮了檢測速度、檢測精度和系統(tǒng)性能開銷等因素,有效地提高了計算機系統(tǒng)對緩存?zhèn)刃诺拦舻臋z測能力。實驗結(jié)果表明,在不同負載和攻擊情況下,DA檢測模型的性能優(yōu)于傳統(tǒng)的單個檢測模型的,具有更高的檢測精度和更低的誤報率,能夠在不高于3.7%的系統(tǒng)開銷下達到98.8%的平均檢測精度,滿足了不同負載情況下攻擊檢測的實時性、準(zhǔn)確性要求,為緩存?zhèn)刃诺拦舻膶崟r檢測提供了有效的解決方案。