岳曉萌 楊秋松 李明樹
1(基礎(chǔ)軟件國家工程研究中心(中國科學(xué)院軟件研究所) 北京 100190) 2(中國科學(xué)院大學(xué) 北京 100049)
隨著計(jì)算機(jī)技術(shù)的發(fā)展和數(shù)據(jù)處理需求的增大,處理器廠商一直致力于提升處理器的并行處理能力.早期處理器發(fā)展重點(diǎn)是提升處理器內(nèi)部的指令并行度,當(dāng)處理器指令并行度提升到了一定瓶頸后,處理器廠商開始提升線程并行度來提升處理器的整體性能,這也推動了多核處理器的出現(xiàn).
同時(shí)多線程(simultaneous multi-threading, SMT)技術(shù)是實(shí)現(xiàn)線程級并行的技術(shù)之一,其通過增加少量硬件資源,把1個(gè)物理核映射成2個(gè)邏輯核,同時(shí)運(yùn)行的線程可共享處理器的資源.因?yàn)榫€程執(zhí)行總有空閑或者等待的時(shí)間,SMT環(huán)境下當(dāng)一個(gè)線程進(jìn)入空閑或等待,另一個(gè)線程可以繼續(xù)執(zhí)行,從而更加合理地使用處理器資源,進(jìn)而達(dá)到比單線程超標(biāo)量處理器更好的指令吞吐量和資源利用率.已實(shí)現(xiàn)SMT技術(shù)的處理器廠商包括Intel,AMD,IBM等,其中以Intel最早于2002年的Pentium4處理器上使用的超線程(hyper-threading, HT)技術(shù)最為典型.本文中的SMT技術(shù)均以Intel提出的超線程技術(shù)作為主要參考.
從Intel公司推出的HT技術(shù)商用開始,研究人員就開始針對SMT技術(shù)進(jìn)行安全問題的挖掘和研究,因?yàn)镾MT技術(shù)增加了很多處理器微架構(gòu)安全問題利用的場景和機(jī)會,因此有研究人員評價(jià)SMT技術(shù)是“廉價(jià)的硬件并行意味著廉價(jià)的安全性”.
在SMT技術(shù)設(shè)計(jì)下,處理器執(zhí)行資源是完全被2個(gè)線程共享的,2個(gè)線程間共享一樣的執(zhí)行端口及端口內(nèi)的執(zhí)行單元,很容易構(gòu)造資源的競爭,這種競爭可以被攻擊者檢測和利用.
2006年,Wang等人首次將執(zhí)行單元的競爭應(yīng)用于隱蔽信道.2016年,Covert shotgun項(xiàng)目提出一個(gè)自動化挖掘SMT環(huán)境下執(zhí)行單元隱蔽信道的框架.在執(zhí)行端口及執(zhí)行單元的隱蔽信道攻擊研究過程,逐步出現(xiàn)了基于相同技術(shù)原理的側(cè)信道攻擊技術(shù)研究.2018年,Aldaya等人在Intel Skylake和Kabylake架構(gòu)上利用其SMT技術(shù)開啟后執(zhí)行端口競爭問題提出了PortSmash攻擊.2019年,IBM的研究團(tuán)隊(duì)提出了一種叫SMoTherSpectre的新型“Spectre”類型攻擊,其使用SMT環(huán)境下執(zhí)行端口的競爭構(gòu)建了投機(jī)代碼重用的攻擊場景,可以從受害者線程獲取私密信息.
在針對上述SMT環(huán)境下共享執(zhí)行端口或執(zhí)行單元的時(shí)間側(cè)信道攻擊,研究人員也提出了一些防護(hù)方法.Percival等人在早期提出可以禁用SMT來防范此類攻擊,其可以徹底解決執(zhí)行單元或執(zhí)行端口雙線程共享產(chǎn)生的時(shí)間側(cè)信道問題,但這種方式失去了SMT技術(shù)本身帶來的收益,會導(dǎo)致相應(yīng)的性能損失.Hu在提出通過將噪聲添加到與進(jìn)程相關(guān)的所有時(shí)間信息中,達(dá)到降低時(shí)序信道帶寬的目的進(jìn)行防護(hù),其通過修改RDTSC或RDTSCP指令,將噪聲加入到指令執(zhí)行的返回值中,就可以達(dá)到降低攻擊者獲取時(shí)間信息精度的目的,但這種方式也會直接影響相應(yīng)被修改指令的功能準(zhǔn)確性,影響正常程序的使用.2019年,Zhang等人提出了名為DDM(demand-based dynamic mitigation)的防護(hù)方法,其使用軟件的手段動態(tài)地基于需求關(guān)閉SMT技術(shù),進(jìn)而達(dá)到防護(hù)基于SMT技術(shù)執(zhí)行資源共享的側(cè)信道攻擊的目的.然而DDM是通過軟件手段動態(tài)關(guān)閉SMT技術(shù)來達(dá)到防護(hù)目的,尚未有從處理器微架構(gòu)角度防護(hù)的案例.
本文提出了一種針對現(xiàn)代處理器SMT技術(shù)執(zhí)行端口時(shí)間側(cè)信道攻擊的防護(hù)方法.主要貢獻(xiàn)有2點(diǎn):
1) 提出動態(tài)調(diào)整雙線程共享的執(zhí)行端口資源使用策略,防護(hù)SMT環(huán)境下執(zhí)行端口雙線程共享產(chǎn)生的時(shí)間側(cè)信道攻擊的方法,該方法將SMT技術(shù)對不同數(shù)據(jù)結(jié)構(gòu)的處理方式應(yīng)用到側(cè)信道安全防護(hù)中,通過對數(shù)據(jù)結(jié)構(gòu)共享策略的改變來達(dá)到防護(hù)效果,可以在SMT技術(shù)合理利用共享數(shù)據(jù)結(jié)構(gòu)的同時(shí)達(dá)到安全防護(hù)的目的;
2) 提出并設(shè)計(jì)了一種基于記錄分支預(yù)測錯(cuò)誤刷新及執(zhí)行端口沖突歷史的防護(hù)方法,可以有效防護(hù)以SMotherSpectre為代表的組合使用誘導(dǎo)分支預(yù)測投機(jī)執(zhí)行的Spectre機(jī)制及執(zhí)行端口沖突時(shí)間側(cè)信道攻擊.
在20世紀(jì)初期SMT技術(shù)問世之后,研究人員就開始在SMT技術(shù)上挖掘安全問題和防護(hù)方法.Ko?等人在2009年總結(jié)了當(dāng)時(shí)已有的基于SMT的攻擊技術(shù)和應(yīng)用案例,對SMT技術(shù)導(dǎo)致的安全問題進(jìn)行了系統(tǒng)歸納,也匯總了當(dāng)時(shí)針對SMT技術(shù)安全問題的緩解手段.2018年,Ge等人總結(jié)了2002—2018年期間各個(gè)系統(tǒng)層級由于資源共享導(dǎo)致的時(shí)間信道安全問題及緩解措施,作者提出基于SMT技術(shù)產(chǎn)生的硬件線程級時(shí)間信道安全問題相對于跨核、跨處理器的時(shí)間信道安全問題是更難應(yīng)對和防護(hù)的.SMT環(huán)境下除緩存結(jié)構(gòu)外的其他共享數(shù)據(jù)結(jié)構(gòu)很難有好的防護(hù)效果,其中最突出的是SMT環(huán)境下執(zhí)行端口雙線程共享導(dǎo)致的時(shí)間側(cè)信道安全問題.
SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊路徑核心環(huán)節(jié)是沖突的構(gòu)建和對時(shí)間的度量,這也是時(shí)間信道利用的2個(gè)基本要素(簡稱為沖突和時(shí)間).表1描述了已有針對SMT共享執(zhí)行端口的時(shí)間側(cè)信道防護(hù)方法:
Table 1 Timing Channel Defending Method Under SMT Execution Port Shared表1 SMT環(huán)境下共享執(zhí)行端口的時(shí)間信道防護(hù)策略及方法
從沖突要素的防護(hù)策略角度,針對SMT技術(shù)下執(zhí)行端口雙線程共享產(chǎn)生的時(shí)間側(cè)信道安全問題目前主要有2種防護(hù)手段:將SMT技術(shù)禁用以及動態(tài)關(guān)閉SMT(DDM).
Percival在早期提出數(shù)據(jù)緩存可以在SMT環(huán)境下被利用于構(gòu)造隱蔽信道和側(cè)信道攻擊,建議可以通過禁用SMT來防范此類攻擊.當(dāng)前禁用SMT的方案在實(shí)踐中已經(jīng)得到使用,例如微軟Microsoft Azure的公共云服務(wù)上就禁用SMT技術(shù).除了直接禁用SMT技術(shù),DDM可以基于上層軟件的配合來達(dá)到防護(hù)目的.DDM是一種基于需求的動態(tài)SMT瞬態(tài)攻擊防護(hù)技術(shù),其實(shí)現(xiàn)了進(jìn)程級的防護(hù)粒度,當(dāng)安全進(jìn)程在運(yùn)行時(shí),如果有防護(hù)范圍內(nèi)的惡意進(jìn)程嘗試分配到和安全進(jìn)程一樣的物理核時(shí)會被OS拒絕.當(dāng)安全進(jìn)程在一個(gè)物理核中運(yùn)行時(shí),另一個(gè)相同物理核的進(jìn)程可以通過HLT指令的系統(tǒng)調(diào)用完成SMT狀態(tài)的關(guān)閉,保證安全進(jìn)程能夠在等同于關(guān)閉SMT的狀態(tài)下運(yùn)行,從而達(dá)到防護(hù)SMT技術(shù)下共享執(zhí)行端口側(cè)信道攻擊的目的.DDM的防護(hù)方式本質(zhì)上也是通過關(guān)閉SMT技術(shù)達(dá)到防護(hù)效果,但是其動態(tài)開關(guān)的方式會一定程度上降低徹底關(guān)閉SMT的性能損失.DDM使用SPEC2000進(jìn)行性能評估約產(chǎn)生8%左右的性能損失.
從時(shí)間要素的防護(hù)策略角度,可以通過修改時(shí)間度量指令的方式增加時(shí)間噪聲來防護(hù)針對SMT技術(shù)下執(zhí)行端口共享產(chǎn)生的時(shí)間側(cè)信道攻擊.
增加時(shí)間噪聲是指在時(shí)間度量方式和手段上進(jìn)行噪聲添加.Hu在1991年就提出了模糊時(shí)間(fuzzy time)技術(shù),通過將噪聲添加到與進(jìn)程相關(guān)的所有時(shí)序信息中,最終達(dá)到降低時(shí)間信道帶寬的目的.文章中通過修改RDTSC或RDTSCP指令在時(shí)間信息中添加噪聲,此指令的功能是通過讀取處理器內(nèi)部的時(shí)間戳計(jì)數(shù)器(time stamp counter, TSC)來度量運(yùn)行時(shí)間,通過修改指令的實(shí)現(xiàn)方式,將噪聲加入到指令執(zhí)行的返回值中,就可以達(dá)到降低攻擊者獲取時(shí)間精度的目的.
Vattikonda等人通過修改Xen虛擬機(jī)監(jiān)控器(hypervisor),將噪聲加入到RDTSC指令的返回值中.Martin等人發(fā)現(xiàn)如果處理器內(nèi)部時(shí)間度量變得不精確,可以有效防護(hù)時(shí)間側(cè)信道攻擊.作者修改了x86體系架構(gòu)下的RDTSC指令的硬件實(shí)現(xiàn),使得RDTSC指令會暫停所有執(zhí)行操作直到預(yù)設(shè)的時(shí)間閾值T
滿足,然后通過產(chǎn)生一個(gè)0到時(shí)間閾值T
的隨機(jī)數(shù)返回給指令使用者來達(dá)到模擬時(shí)間的效果.當(dāng)前除了禁用SMT技術(shù)、動態(tài)關(guān)閉SMT以及修改時(shí)間度量指令(RDTSC/RDTSCP)的方法外,還沒有其他可以針對SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊的防護(hù)手段.已有的防護(hù)手段都有其明顯的缺陷,禁用或動態(tài)關(guān)閉SMT技術(shù)會損失SMT技術(shù)帶來的性能收益;修改指令語義會弱化指令功能,從而影響其他使用時(shí)間度量指令應(yīng)用的正常使用.綜合已有的防護(hù)方法,目前針對SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊效果較好的防護(hù)策略是動態(tài)關(guān)閉SMT技術(shù)(DDM),還沒有公開的基于處理器微架構(gòu)的防護(hù)方案.
處理器在開啟SMT技術(shù)后,處理器內(nèi)部微架構(gòu)會使用相關(guān)的SMT功能特性,從而完成微架構(gòu)功能的轉(zhuǎn)變,進(jìn)入到同時(shí)多線程模式,可以在同一時(shí)刻利用不同執(zhí)行端口發(fā)射執(zhí)行不同線程的指令.
如圖1所示,SMT技術(shù)區(qū)別于其他的多線程技術(shù)的核心是可以在同一個(gè)流水級執(zhí)行來自幾個(gè)不同線程的微操作(或稱Uop、微指令).普通的超標(biāo)量單核處理器同時(shí)只能運(yùn)行1個(gè)線程,在局部時(shí)間內(nèi)流水線資源還會處于空閑狀態(tài)(例如取指令階段);對于普通的多核處理器,其會使用多個(gè)物理核來運(yùn)行多個(gè)線程,是普通單核處理器的簡單疊加;粗粒度和細(xì)粒度多線程技術(shù)使用時(shí)間片的方式分配資源使用,資源會在一段時(shí)間內(nèi)分配給獨(dú)立的1個(gè)線程使用,同一時(shí)間資源只會分配給1個(gè)線程使用;SMT技術(shù)區(qū)別于粗/細(xì)粒度的多線程技術(shù),其可以靈活分配處理器內(nèi)部資源,大部分?jǐn)?shù)據(jù)結(jié)構(gòu)資源被多個(gè)線程共享且同一周期可以調(diào)度多個(gè)線程的操作同時(shí)執(zhí)行,最大化得提高資源利用率.
Fig. 1 SMT feature圖1 SMT技術(shù)特征
Fig. 2 Intel SMT front end resource圖2 Intel SMT前端資源的處理方式
SMT技術(shù)原理(以Intel的超線程技術(shù)為例)主要包含3個(gè)部分:
1) 制定資源共享策略.SMT技術(shù)可以使用資源復(fù)制、資源分割和資源共享的方式來實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)資源的分配.以圖2為例,Intel SMT技術(shù)中的ITLB和IP結(jié)構(gòu)采用了資源復(fù)制的處理策略,微操作隊(duì)列結(jié)構(gòu)采用了資源分割的處理策略,追蹤緩存結(jié)構(gòu)采用了資源共享的處理策略.
2) 設(shè)置線程選擇點(diǎn).使用SMT技術(shù)的處理器微架構(gòu)需要在合適的流水線位置增加線程選擇點(diǎn),其作用是在共享資源的使用上進(jìn)行2個(gè)線程的選擇及切換.合理的線程選擇點(diǎn)設(shè)置和選擇算法使用能夠有效提高雙線程共享資源的利用率以及雙線程的公平性.
3) 保證線程公平性.處理器微架構(gòu)在實(shí)現(xiàn)SMT技術(shù)時(shí)需要注重線程間的公平性,線程選擇點(diǎn)需要使用相應(yīng)的公平算法,避免單一線程由于長時(shí)間得不到資源而餓死的情況出現(xiàn).
SMT技術(shù)中資源復(fù)制和資源分割的處理方式使得2個(gè)線程在處理器內(nèi)部會公平地使用自己的私有資源,不會對另外線程的資源產(chǎn)生影響,因此基于共享資源競爭的時(shí)間信道攻擊方式對該類型的微架構(gòu)組件無效.對于資源共享的處理方式,2個(gè)線程在處理器內(nèi)部會產(chǎn)生競爭,容易被攻擊者利用,例如針對SMT環(huán)境下執(zhí)行端口雙線程共享的技術(shù)原理,控制執(zhí)行指令流的類型可以構(gòu)建端口沖突,攻擊者可以通過時(shí)間信道傳遞信息獲取另一線程運(yùn)算邏輯或指令類型的使用狀態(tài).
本節(jié)通過剖析SMT技術(shù)的多端口調(diào)度算法的微架構(gòu)實(shí)現(xiàn),來描述SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊原理,如圖3所示:
Fig. 3 SMT multi-port schedule micro-architecture圖3 SMT技術(shù)的多端口調(diào)度微架構(gòu)
在超標(biāo)量處理器微架構(gòu)設(shè)計(jì)中,指令集架構(gòu)中描述的宏指令會經(jīng)過取指、譯碼的流程形成對應(yīng)的微操作.微操作在進(jìn)行指令執(zhí)行前,會通過指令解析完成對應(yīng)執(zhí)行端口的綁定.在關(guān)閉SMT技術(shù)的情況下,處理器流水線內(nèi)部只有1個(gè)線程,完成端口綁定的微操作會通過對應(yīng)的端口進(jìn)入執(zhí)行單元;在開啟SMT技術(shù)的情況下,處理器解碼系統(tǒng)和亂序執(zhí)行系統(tǒng)交互過程中,因?yàn)樵谥孛头峙湮⒓軜?gòu)設(shè)計(jì)中約束了同一時(shí)刻只能處理來自于同一個(gè)線程的微操作,因此,同一時(shí)刻也只有1個(gè)線程的微操作可以進(jìn)入調(diào)度器.在調(diào)度器微架構(gòu)設(shè)計(jì)中為了更快地調(diào)度和分發(fā)微操作,其并不關(guān)心微操作的線程信息,只考慮其是否就緒(“就緒”指的是某條微操作已滿足被選擇并發(fā)射到執(zhí)行端口的條件),如果有同時(shí)就緒的微操作則年齡更老的優(yōu)先發(fā)射,因此,調(diào)度器可以同時(shí)在不同執(zhí)行端口發(fā)射2個(gè)線程的微操作.
如果2個(gè)線程在調(diào)度器內(nèi)的微操作指向同一個(gè)端口,那么由于分配時(shí)的先后關(guān)系,2個(gè)線程的微操作會自然攜帶不同的年齡信息.調(diào)度器中有2個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu),一個(gè)是年齡矩陣,另一個(gè)是就緒向量,雖然2個(gè)線程的微操作即使都處于就緒狀態(tài),依賴于年齡矩陣的先后關(guān)系,調(diào)度器會先發(fā)射更“老”的線程的微操作進(jìn)入相應(yīng)端口,那么已經(jīng)就緒但由于較“年輕”導(dǎo)致無法發(fā)射到相同端口的另外線程的微操作就產(chǎn)生了延遲,此時(shí)就叫作出現(xiàn)了線程間的端口沖突.
假設(shè)線程T
和T
是1個(gè)物理核上分配的2個(gè)邏輯核,按照SMT微架構(gòu)特征的描述,其按照線程公平性原理進(jìn)行執(zhí)行端口的分配使用,分配策略如算法1所示.算法1.
端口分配策略Alloc
(T
,P
,C
,A
).
輸入:準(zhǔn)備分配線程端口T
,x
={0,1},執(zhí)行端口P
={p
,p
,…,p
-1},i
={0,n
},時(shí)鐘周期C
;輸出:線程分配端口A
.
① 時(shí)鐘周期C
執(zhí)行:② for (0≤i
<n
)③ if (T
==p
&&T
(1-)==p
)④A
=p
;⑤ else
⑥A
=p
;⑦A
(1-)=P
p
;⑧ end if
⑨ end for
⑩ 時(shí)鐘周期C
+1執(zhí)行:上述分配策略會產(chǎn)生2種極端情況,當(dāng)T
和T
都處于完全流水線執(zhí)行的狀態(tài)時(shí),一種極端情況是如果T
和T
一直使用不相關(guān)的執(zhí)行端口,那么T
和T
不會有任何的執(zhí)行端口沖突;另一種極端情況是如果T
和T
一直使用相同的某一個(gè)執(zhí)行端口,那么T
和T
需要輪流使用該執(zhí)行端口,吞吐量是上一種極端情況的一半.
因此,某線程在特定的執(zhí)行端口下執(zhí)行指令并且度量其執(zhí)行程序的時(shí)間就可以推斷同一端口或執(zhí)行單元下另一線程的執(zhí)行情況.
2018年的PortSmash和2019年的SMoTher-Spectre是近期利用SMT技術(shù)執(zhí)行端口雙線程共享產(chǎn)生的時(shí)間側(cè)信道構(gòu)建攻擊的案例.
PortSmash針對Intel Skylake的執(zhí)行微架構(gòu)(如圖4所示)設(shè)計(jì)了3組沖突指令流,分別適用于端口1、端口5、端口0156的沖突構(gòu)建,端口1、端口5的沖突構(gòu)建指令選用了長延遲指令,端口1選用整型乘法(INT MUL)執(zhí)行單元執(zhí)行的crc32指令,端口5選用了向量交織(VEC SHU)執(zhí)行單元執(zhí)行的vpermd指令,端口0156的重構(gòu)構(gòu)建指令選用了單周期指令,使用最常見的算術(shù)邏輯(INT ALU)執(zhí)行單元執(zhí)行的ADD指令.
Fig. 4 Intel Skylake execution port distribution圖4 Intel Skylake執(zhí)行端口分布
SMoTherSpectre除了采用同PortSmash類似的沖突構(gòu)造指令來構(gòu)建用于受害者泄露信息的SMoTher Gadget和用于攻擊者度量時(shí)間信息Time SMoTher Gadget外,其在沖突構(gòu)建階段使用了Spectre分支誘導(dǎo)的方式來加強(qiáng)沖突構(gòu)建的成功率,如圖5所示.受害者的BTI Gadget和攻擊者的Poison BTB組件的作用是構(gòu)建分支誘導(dǎo)場景,攻擊者通過訓(xùn)練處理器分支預(yù)測單元的分支目標(biāo)緩存(branch target buffer, BTB)結(jié)構(gòu)來誘導(dǎo)受害者投機(jī)執(zhí)行SMoTher Gadget的程序,當(dāng)受害者程序被分支誘導(dǎo)后會進(jìn)入SMoTher Gadget中,該組件通過分支跳轉(zhuǎn)的形式構(gòu)建了2組沖突指令,在POC示例中,分支指令后使用了popcnt指令,分支目標(biāo)使用了ror指令,同時(shí)攻擊者程序中的Time SMoTher Gadget使用了大量的ror指令,2個(gè)線程同時(shí)執(zhí)行ror指令在Intel Skylake微架構(gòu)中會造成端口6的沖突,從而達(dá)到構(gòu)建沖突的目的.
Fig. 6 Modification of multi-port scheduling algorithm by protection design圖6 防護(hù)設(shè)計(jì)對多端口調(diào)度算法的改動
Fig. 5 SMoTherSpectre attack gadget圖5 SMoTherSpectre攻擊組件示意圖
PortSmash和SMoTherSpectre均使用了rdtsc/rdtscp指令來作為時(shí)間度量的手段,通過在攻擊者程序沖突指令執(zhí)行前后使用rdtsc/rdtscp指令可以得出沖突指令的執(zhí)行時(shí)間,從而獲取沖突程度或沖突次數(shù)的信息.
本文提出的基于動態(tài)資源使用策略的SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊防護(hù)方法目標(biāo)是通過執(zhí)行端口資源使用策略的動態(tài)調(diào)整,破壞上述2種攻擊方式在端口沖突構(gòu)建環(huán)節(jié)中使用的技術(shù)原理,從而切斷通過改變指令類型來構(gòu)建端口沖突進(jìn)而通過時(shí)間信道傳遞信息的攻擊路徑,達(dá)到防護(hù)上述2種攻擊方式及使用同類技術(shù)原理的其他攻擊的效果.
本文從微架構(gòu)角度針對SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊設(shè)計(jì)了一種軟件不可見的防護(hù)機(jī)制,圖6描述了本文設(shè)計(jì)的防護(hù)設(shè)計(jì)對SMT技術(shù)的多端口調(diào)度算法的改進(jìn).
在SMT技術(shù)的多端口調(diào)度標(biāo)準(zhǔn)算法中,2個(gè)線程通過輪詢算法交替選擇線程內(nèi)的微操作送入分配單元,分配單元完成微操作的端口綁定,單端口執(zhí)行的微操作綁定對應(yīng)執(zhí)行端口,多端口執(zhí)行的微操作采用循環(huán)選擇算法綁定執(zhí)行端口.微操作進(jìn)入調(diào)度器后通過依賴矩陣建立就緒向量,通過年齡矩陣生成最終的選擇向量,調(diào)度器按照當(dāng)前端口上綁定的已就緒的微操作的年齡順序依次選擇微操作發(fā)射到對應(yīng)端口上.
本文的防護(hù)設(shè)計(jì)對SMT技術(shù)的多端口調(diào)度算法進(jìn)行了擴(kuò)充,詳細(xì)的微架構(gòu)示意圖如圖7所示.
Fig. 7 The micro-architecture of protection design圖7 防護(hù)設(shè)計(jì)微架構(gòu)圖
在年齡矩陣訪問生成最終的選擇向量后增加沖突檢測的檢查環(huán)節(jié),本文在原有的依賴矩陣和年齡矩陣之外,新增了端口沖突矩陣的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)提取依賴矩陣的就緒向量信息、年齡矩陣的選擇向量信息以及調(diào)度器的線程向量信息,通過分線程的飽和計(jì)數(shù)器陣列來記錄線程間的端口沖突情況.如果檢測到?jīng)_突,則將沖突信息提供給分支過濾和策略修改器進(jìn)行下一步的防護(hù)算法應(yīng)用;如果沒有檢測到?jīng)_突則不會產(chǎn)生額外動作,不會影響正常的調(diào)度算法.分支過濾器對分支指令產(chǎn)生的端口沖突信息進(jìn)行過濾并記錄分支刷新產(chǎn)生時(shí)的沖突信息,動態(tài)資源使用策略修改器(簡稱:策略修改器)生成策略使能向量和優(yōu)先級向量進(jìn)行防護(hù)算法的應(yīng)用.
防護(hù)算法應(yīng)用會改變標(biāo)準(zhǔn)的SMT技術(shù)的多端口調(diào)度算法,主要分2個(gè)方面:
① 防護(hù)策略類型、策略端口使能向量伴隨指令操作碼會提供給分配單元.分配單元接收到分割的策略類型和策略端口使能向量時(shí),會在原端口綁定算法的基礎(chǔ)上將多端口執(zhí)行的微操作采用的循環(huán)選擇算法改為端口分割算法.當(dāng)匹配到微操作的操作碼一致時(shí),不同線程的微操作固定使用分開的執(zhí)行端口.
② 防護(hù)策略類型、策略端口使能向量、優(yōu)先級向量伴隨指令操作碼會提供給調(diào)度器選擇邏輯.調(diào)度器選擇邏輯接收到分時(shí)策略、策略端口使能向量以及優(yōu)先級向量時(shí),會改變原始完全按照年齡矩陣的選擇算法,而是基于優(yōu)先級向量進(jìn)行優(yōu)先級選擇,即使高優(yōu)先級線程微操作在年齡矩陣中記錄的年齡比另外的線程年輕,其也會被優(yōu)先選擇.當(dāng)匹配到微操作操作碼一致時(shí),選擇邏輯按照優(yōu)先級在對應(yīng)端口中優(yōu)先選擇優(yōu)先級高的線程微操作進(jìn)行分發(fā).
本文的防護(hù)設(shè)計(jì)微架構(gòu)實(shí)現(xiàn)共包含3個(gè)子模塊,分別是端口沖突矩陣、分支過濾器及策略修改器.在整個(gè)防護(hù)設(shè)計(jì)中,通過對端口沖突的連續(xù)檢測形成端口沖突向量;然后通過分支過濾器過濾掉分支類型微操作并且針對SMoTherSpectre此類攻擊特征進(jìn)行分支刷新后的優(yōu)先級調(diào)整;最后通過策略修改器進(jìn)行處理器分配單元及調(diào)度器選擇邏輯的算法策略修改,消除由于執(zhí)行端口沖突產(chǎn)生的時(shí)間信道,進(jìn)而防護(hù)SMT環(huán)境下利用雙線程共享執(zhí)行端口進(jìn)行的時(shí)間側(cè)信道攻擊.
為了記錄SMT技術(shù)2個(gè)線程的端口沖突,本文的防護(hù)方法需要設(shè)計(jì)實(shí)現(xiàn)用于記錄SMT技術(shù)2個(gè)線程的端口沖突矩陣.
端口沖突矩陣由2個(gè)線程獨(dú)立的2維數(shù)組組成,數(shù)組內(nèi)部的每一行代表1個(gè)端口,按照圖7中描述,存在6個(gè)端口,分別是P
到P
,每一個(gè)端口都有一個(gè)2 b的飽和計(jì)數(shù)器,該計(jì)數(shù)器的初始值為0,當(dāng)某線程因?yàn)榻壎ǖ亩丝谕硪粋€(gè)線程相同但由于年齡先后的原因而導(dǎo)致延遲發(fā)射時(shí),計(jì)數(shù)器加1,當(dāng)某線程綁定的端口連續(xù)2次發(fā)射均沒有沖突時(shí),計(jì)數(shù)器減1.判定某線程同另一個(gè)線程由于端口資源沖突導(dǎo)致延遲發(fā)射的算法如下:
算法2.
端口沖突延遲發(fā)射ConflictCounterSet
(T
,S
,P
,C
,Conf
[1:0]).
輸入:就緒線程端口T
,選擇線程端口S
,x
={0,1},執(zhí)行端口P
={p
,p
,…,p
-1},i
∈{0,n
},時(shí)鐘周期C
;輸出:沖突飽和計(jì)數(shù)器Conf
[1:0].
① 時(shí)鐘周期C
執(zhí)行:② for (0≤i
<n
)③ if (T
==p
&&T
(1-)==p
)④ if (S
==p
)⑤Conf
[1-x
]=1;⑥ else if(S
(1-)==p
)⑦Conf
[x
]=1;⑧ end if
⑨ else
⑩S
=p
;判定某線程綁定的端口連續(xù)2次發(fā)射均沒有沖突的算法如下:
算法3.
端口沖突取消ConflictCounterReset
(T
,S
,P
,C
,Conf
[1:0]).
輸入:就緒線程端口T
,選擇線程端口S
,x
={0,1},執(zhí)行端口P
={p
,p
,…,p
-1},i
∈{0,n
},時(shí)鐘周期C
;輸出:沖突飽和計(jì)數(shù)器Conf
[1:0].
① 時(shí)鐘周期C
執(zhí)行:② for (0≤i
<n
)③ if (~(T
==p
&&T
(1-)==p
)&&S
==p
)④Flag
[x
]=1;⑤ else if (~(T
==p
&&T
(1-)==p
) &&S
(1-)==p
)⑥Flag
[1-x
]=1;⑦ else
⑧Flag
[x
]=0;⑨Flag
[1-x
]=0;⑩ end if
&&S
==p
&&Flag
[x
]==1)p
) &&S
(1-)==p
&&Flag
[1-x
]==1)因?yàn)镾MT技術(shù)的公平性設(shè)計(jì),沖突會在2個(gè)線程中間交替出現(xiàn),當(dāng)2個(gè)線程的飽和計(jì)數(shù)器全為1時(shí),則判斷該端口存在雙線程的沖突.沖突端口的信息會以獨(dú)熱碼(one-hot)的形式作為沖突向量給到分支過濾器.
在SMoTherSpectre中,攻擊者通過Spectre分支誘導(dǎo)的方式誘導(dǎo)受害者進(jìn)入SMoTher Gadget,SMoTher Gadget包含受害者投機(jī)執(zhí)行的代碼片段.因?yàn)槭钦T導(dǎo)投機(jī)執(zhí)行代碼,后續(xù)會產(chǎn)生分支刷新刷掉該指令流,該指令流使用了攻擊者構(gòu)造的端口沖突代碼,長時(shí)間執(zhí)行相同端口的微操作,而這些微操作同攻擊者Time SMoTher Gadget中的指令沖突與否則會產(chǎn)生對應(yīng)的時(shí)間信道.
分支過濾器的作用是當(dāng)接收到?jīng)_突向量后進(jìn)行包含分支類型微操作執(zhí)行單元端口的沖突信息進(jìn)行過濾并針對SMoTherSpectre中使用Spectre誘導(dǎo)方式進(jìn)行沖突構(gòu)建和安全信息提取的攻擊方式進(jìn)行專門的防護(hù).
分支過濾器除了接收端口沖突矩陣的沖突向量外,還接收譯碼過后的微操作信息.識別分支指令的目的是對分支指令進(jìn)行沖突過濾,其他信息會解碼后給到后面的策略修改器用于防護(hù)策略的算法應(yīng)用.
對分支指令進(jìn)行過濾的原因是在普通應(yīng)用程序中,分支指令占比較高,且在實(shí)際攻擊應(yīng)用時(shí)因?yàn)榉种е噶顖?zhí)行會產(chǎn)生流水線刷新行為,攻擊者不會使用分支指令作為執(zhí)行端口沖突的構(gòu)建對象.如圖8所示,本文選取了常用的Linux指令(mount,cat,ls,sh,su,hostname,login,password,id,which),其分支指令類型的占比接近23%.以Intel Skylake微架構(gòu)為例,其分支執(zhí)行單元在端口0和端口6,如果一旦端口0和端口6檢測到端口沖突,且分支過濾器獲取微操作類型是分支時(shí),過濾器將過濾掉該沖突信息.
Fig. 8 Linux typical application instruction frequency statistics圖8 Linux典型應(yīng)用指令頻度統(tǒng)計(jì)
除了分支指令過濾的功能外,分支過濾器還可以通過記錄分支刷新的方法來防護(hù)使用Spectre誘導(dǎo)方式進(jìn)行沖突構(gòu)建和安全信息提取的攻擊.具體算法流程如下:
算法4.
分支刷新優(yōu)先級設(shè)置BranchFlush
-PriorSet
(F
,S
,P
,Conf
[1:0]).
輸入:選擇線程端口S
,分支刷新線程F
,x
={0,1},執(zhí)行端口P
={p
,p
,…,p
-1},i
∈{0,n
},沖突飽和計(jì)數(shù)器Conf
[1:0];輸出:線程優(yōu)先級Prior
,x
={0,1}.
① for (0≤i
<n
)② if(S
==p
&&F
==1 && |Conf
)③Prior
--;④ else if(S
(1-)==p
&&F
1-==1&& |Conf
)⑤Prior
1---;⑥ end if
⑦ end for
線程對某端口的分時(shí)調(diào)度優(yōu)先級降低后,僅當(dāng)另一線程不使用該端口時(shí)才調(diào)度本線程綁定該端口的微操作,該優(yōu)先級策略會覆蓋策略修改器的優(yōu)先級策略.
針對SMoTherSpectre攻擊,分支過濾器通過對分支刷新后沖突端口的記錄并降低其優(yōu)先級的方式可以使得受害者投機(jī)執(zhí)行的SMoTher Gadget指令流中的端口沖突指令無法同攻擊者Time SMoTher Gadget的指令沖突,進(jìn)而在攻擊者的時(shí)間度量范圍內(nèi)無法觀測到?jīng)_突出現(xiàn),破壞其在信息提取階段的關(guān)鍵信息,使得SMoTherSpectre此類攻擊方式失效.
經(jīng)過分支過濾器過濾后,最終的端口沖突向量及分支過濾后的刷新沖突記錄向量會進(jìn)入動態(tài)資源使用策略修改器,策略修改器用于生成對SMT技術(shù)的多端口調(diào)度算法的防護(hù)邏輯并完成新防護(hù)算法的應(yīng)用.
策略修改器主要應(yīng)用的策略有2種,端口分割策略和端口分時(shí)策略.為了保證2個(gè)線程之間的公平性,默認(rèn)分時(shí)優(yōu)先級選擇采用Ping-Pong原則,且該默認(rèn)優(yōu)先級受分支過濾器的控制.策略修改器會產(chǎn)生策略類型、策略端口使能向量、優(yōu)先級向量.策略類型、策略端口使能向量、優(yōu)先級向量伴隨微操作的操作碼會同時(shí)提供給分配單元和調(diào)度器選擇邏輯.
策略修改器接收來自于提交單元的刷新信號,當(dāng)出現(xiàn)中斷、事件、異常等單線程事件或SMT下線程喚醒、線程睡眠、線程切換等雙線程事件時(shí),策略修改器重置,恢復(fù)原始的雙線程共享多端口調(diào)度算法.
以Intel Skylake微架構(gòu)的多端口的執(zhí)行單元INT ALU以及單端口的執(zhí)行單元INT MUL為例,給出策略修改器的算法.
算法5.
資源策略修改ResourceModify
(T
,Prior
,P
,S
).
輸入:就緒線程端口T
,線程優(yōu)先級Prior
,x
={0,1},執(zhí)行端口P
={p
,p
,…,p
-1},i
∈{0,n
};輸出:選擇線程S
,x
={0,1}.
① 多端口執(zhí)行單元(INT ALU):
② for (i
∈{0,1,5,6})③ if (T
==p
&&T
(1-)==p
)④S
=p
(m
∈{0,1});⑤S
(1-)=p
(n
∈{5,6});⑥ else
⑦S
=p
;⑧S
(1-)=P
p
;⑨ end if
⑩ end for
Prior
>Prior
1-)&&Prior
<Prior
1-)在分配單元,策略修改器將多端口執(zhí)行的微操作采用的循環(huán)選擇算法改為端口分割算法.在調(diào)度器選擇邏輯,策略修改器將完全按照年齡矩陣的選擇算法改為基于優(yōu)先級的選擇算法.如果分支過濾器的端口優(yōu)先級向量使能,該使能信息會覆蓋分時(shí)優(yōu)先級Ping-Pong選擇器結(jié)果,固定匹配線程的優(yōu)先級低于另一線程.
本文提出的基于動態(tài)資源使用策略的SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊防護(hù)方法,可以將SMT技術(shù)對數(shù)據(jù)結(jié)構(gòu)分割和分時(shí)處理的方式應(yīng)用到SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道安全防護(hù)中,通過對數(shù)據(jù)結(jié)構(gòu)共享策略和算法的改進(jìn)來達(dá)到防護(hù)效果,可以在SMT技術(shù)合理利用共享數(shù)據(jù)結(jié)構(gòu)的同時(shí)達(dá)到安全防護(hù)的目的.
在破壞SMT技術(shù)下執(zhí)行端口時(shí)間側(cè)信道攻擊路徑上,本防護(hù)機(jī)制可以同時(shí)作用于攻擊路徑的沖突構(gòu)建和時(shí)間度量2個(gè)環(huán)節(jié)上.
首先,防護(hù)機(jī)制從沖突要素入手,動態(tài)資源使用策略會作用于SMT技術(shù)的多端口分配和調(diào)度選擇算法上,使得SMT環(huán)境下2個(gè)線程不發(fā)生同樣類型的端口沖突,達(dá)到?jīng)_突要素防護(hù)中不產(chǎn)生沖突防護(hù)策略的硬件隔離效果.
其次,本文提出的防護(hù)機(jī)制在時(shí)間要素上同樣具有作用,其對時(shí)間的干擾主要體現(xiàn)在針對SMoTherSpectre類型攻擊上,區(qū)別于PortSmash攻擊,SMoTherSpectre攻擊者在進(jìn)行時(shí)間信道的度量時(shí),沖突產(chǎn)生的時(shí)間信息及無沖突產(chǎn)生的時(shí)間信息都有作用.PortSmash攻擊對時(shí)間信息的度量完全基于沖突時(shí)間來完成,而SMoTherSpectre通過時(shí)間度量采集的時(shí)間即使沒有沖突也可以用于私密信息的分析.通過本文的防護(hù)算法應(yīng)用,從SMoTherSpectre攻擊者角度,其度量到的時(shí)間信息不再準(zhǔn)確.從時(shí)間要素防護(hù)的角度,這也是破壞時(shí)間度量精度的一種方式.
本文使用Gem5模擬一個(gè)高性能多執(zhí)行端口的超標(biāo)量處理器作為本文防護(hù)方法的防護(hù)有效性、性能開銷的評估平臺,其配置參數(shù)如表2.對標(biāo)的防護(hù)方式是目前針對SMT環(huán)境下執(zhí)行端口雙線程共享的時(shí)間側(cè)信道攻擊最有效的防護(hù)策略—關(guān)閉SMT技術(shù).
Table 2 Gem5 Simulator Configuration Parameters表2 Gem5模擬器配置參數(shù)
對于硬件開銷的評估,本文使用華力HLMC 40 GP工藝進(jìn)行防護(hù)方法的硬件開銷評估,主要包含面積及時(shí)序.
對于防護(hù)有效性評估,本文選用了PortSmash和SMoTherSpectre兩篇文章中的POC(proof of code)代碼作為實(shí)驗(yàn)?zāi)繕?biāo),分析本文提出的防護(hù)設(shè)計(jì)對這2種攻擊方式的防護(hù)效果.
對于性能評估,本文選用SPEC CPU 2006測試集作為性能評估的參考,主要評估防護(hù)方法對性能的影響以及同關(guān)閉SMT技術(shù)產(chǎn)生的性能影響進(jìn)行對比.本文將采用12組SPEC CPU 2006 INT測試集.通過在Gem5上運(yùn)行測試程序,分別統(tǒng)計(jì)關(guān)閉SMT技術(shù)、正常開啟SMT技術(shù)、開啟SMT技術(shù)并且使用本文的防護(hù)方法3個(gè)場景的執(zhí)行周期數(shù)值,然后進(jìn)行SPEC CPU 2006 INT程序的整體性能對比,執(zhí)行周期數(shù)越大,性能越差,周期數(shù)越小,性能越好.
本文SPEC CPU 2006 INT程序在Gem5 ALPHA架構(gòu)下12個(gè)測試程序可成功運(yùn)行7個(gè),錯(cuò)誤原因均為Gem5模擬器對系統(tǒng)調(diào)用支持情況的缺陷導(dǎo)致.表3是SPEC CPU2006整型計(jì)算基準(zhǔn)程序在本實(shí)驗(yàn)下的運(yùn)行情況:
Table 3 Running Condition of SPEC CPU2006 Integer Base Programs
對于硬件開銷評估,本文提出的防護(hù)機(jī)制使用RTL(register-transfer level)進(jìn)行代碼實(shí)現(xiàn).完成設(shè)計(jì)實(shí)現(xiàn)后的防護(hù)設(shè)計(jì)代碼在HLMC 40 GP工藝下使用新思科技的ASIC設(shè)計(jì)流程和工具進(jìn)行面積和時(shí)序的評估.
本節(jié)防護(hù)有效性評估針對PortSmash和SMoTherSpectre兩個(gè)攻擊案例進(jìn)行,在禁用或動態(tài)關(guān)閉SMT技術(shù)后,2個(gè)攻擊案例均無法實(shí)現(xiàn),因此,禁用或關(guān)閉SMT的防護(hù)效果為最佳,本文的防護(hù)設(shè)計(jì)目的是盡量接近禁用或關(guān)閉SMT技術(shù)的防護(hù)效果.
PortSmash參考其針對Intel Skylake微架構(gòu)的POC代碼片段,攻擊者循環(huán)執(zhí)行某端口指令,受害者同樣會使用該端口指令,也會使用其他端口指令.為了使攻擊效果明顯,設(shè)計(jì)受害者循環(huán)進(jìn)行相同操作,攻擊者也循環(huán)進(jìn)行相同操作且攻擊者和受害者同時(shí)在開啟SMT技術(shù)的2個(gè)邏輯核上執(zhí)行.SMo-TherSpectre選用其攻擊模型中使用的POC代碼片段類型,受害者運(yùn)行程序中包含了攻擊者植入的一個(gè)SMOTHER代碼片段,正常運(yùn)行過程中,受害者不會運(yùn)行SMOTHER代碼片段,其在加載完核心參數(shù)后會跳走,但由于攻擊者使用了Spectre的分支預(yù)測誘導(dǎo)機(jī)制將受害者跳轉(zhuǎn)指令的目標(biāo)地址誘導(dǎo)進(jìn)SMOTHER代碼片段中,進(jìn)而實(shí)施執(zhí)行端口沖突的時(shí)間側(cè)信道攻擊,其技術(shù)原理同PortSmash一致.
將攻擊者和受害者的運(yùn)行代碼使用gcc編譯器編譯成可執(zhí)行二進(jìn)制文件,其中攻擊者可以使用同受害者端口一致的指令類型,也可以使用同受害者端口不同的指令類型.首先使用原始Gem5模擬器,開啟SMT選項(xiàng),且同時(shí)加載PortSmash攻擊的攻擊者和受害者POC代碼的二進(jìn)制可執(zhí)行文件,配置不同沖突次數(shù)和頻度,通過原始Gem5模擬攻擊者通過端口沖突獲取受害者信息的攻擊路徑,并統(tǒng)計(jì)運(yùn)行時(shí)間來提取端口沖突時(shí)間信息;然后使用增加防護(hù)設(shè)計(jì)后的Gem5模擬器,進(jìn)行同樣的操作.在本實(shí)驗(yàn)過程中,為了測試不同沖突頻度產(chǎn)生的沖突效果,選取了60~30 720共10組不同量級的指令沖突頻度進(jìn)行測量.
圖9為防護(hù)效果評估對比,SMTwC表示SMT下端口沖突的攻擊者執(zhí)行周期;SMTwoC表示SMT下端口無沖突的攻擊者執(zhí)行周期;SMTwDwC表示SMT下增加防護(hù)設(shè)計(jì)后有端口沖突的攻擊者執(zhí)行周期;SMTwDwoC表示SMT下增加防護(hù)設(shè)計(jì)后端口無沖突的攻擊者執(zhí)行周期.表4詳細(xì)給出了Gem5輸出的時(shí)鐘周期數(shù)據(jù).
Fig. 9 Evaluation of protective effect圖9 防護(hù)效果評估
從圖9中的SMTwC和SMTwoC的對比可以看出,在SMT技術(shù)下PortSmash和SMoTherSpectre攻擊中攻擊者使用的攻擊指令同受害者同端口指令出現(xiàn)沖突時(shí)其沖突造成的時(shí)間延遲和沖突規(guī)模呈線性關(guān)系,而不產(chǎn)生沖突時(shí),其指令延遲信息也呈現(xiàn)明顯的線性關(guān)系,這樣通過時(shí)間延遲的不同可以提取出受害者程序執(zhí)行的指令類型和次數(shù).
Table 4 Effect of Defending Method表4 防護(hù)效果數(shù)據(jù)
從圖9中的SMTwDwC和SMTwDwoC的對比可以看出,增加防護(hù)設(shè)計(jì)后,由于沖突端口隨著沖突指令量級增大會使能分割或分時(shí)的動態(tài)資源使用策略,攻擊者程序即使存在同受害者的指令沖突且沖突造成的時(shí)間延遲和沖突規(guī)模呈明顯的線性關(guān)系,但是使用同受害者不產(chǎn)生沖突的指令類型其造成的時(shí)間延遲和沖突規(guī)模也呈明顯的線性關(guān)系且同有沖突時(shí)趨于一致.通過該實(shí)驗(yàn)數(shù)據(jù)表明,攻擊者使用PortSmash和SMoTherSpectre類型的攻擊方式通過度量沖突時(shí)間來采集時(shí)間信道過程中會有明顯的誤差和干擾存在,無法判斷受害者使用的指令類型和頻度,可以達(dá)到禁用或動態(tài)關(guān)閉SMT技術(shù)的防護(hù)效果,進(jìn)而防止受害者指令執(zhí)行端口、指令執(zhí)行次數(shù)及指令類型信息的泄露.
本文防護(hù)設(shè)計(jì)的性能評估選用SPEC CPU 2006測試集作為性能評估的參考,主要評估防護(hù)方法對性能的影響以及同禁用或動態(tài)關(guān)閉SMT技術(shù)(DDM)產(chǎn)生的性能影響進(jìn)行對比.
1) 評估樣本.7個(gè)SPEC CPU 2006 INT測試程序.
2) 評估方式.使用總執(zhí)行周期數(shù)據(jù)指標(biāo)作為性能優(yōu)劣的核心評估參數(shù).
3) 評估目標(biāo).對比禁用SMT技術(shù)、正常開啟SMT技術(shù)、開啟SMT技術(shù)并且使用本文的防護(hù)方法3個(gè)場景的程序總執(zhí)行周期數(shù)據(jù)(其中401和471的程序規(guī)模較大,其統(tǒng)計(jì)的時(shí)鐘周期數(shù)進(jìn)行等比例縮減,縮減比例100∶1),分析本文的防護(hù)方法對性能的影響程度.
4) 對比數(shù)據(jù)(如圖10所示).
① NOSMT——關(guān)閉SMT技術(shù)后Gem5運(yùn)行7組SPEC CPU 2006 INT測試程序的執(zhí)行周期數(shù);
② SMT——正常開啟SMT技術(shù)后Gem5運(yùn)行7組SPEC CPU 2006 INT測試程序的執(zhí)行周期數(shù);
③ DEFENCE——開啟SMT技術(shù)并且使用本文的防護(hù)方法下Gem5運(yùn)行7組SPEC CPU 2006 INT測試程序的執(zhí)行周期數(shù).
Fig. 10 Performance comparison圖10 性能對比
5) 評估結(jié)論.使用本文的防護(hù)設(shè)計(jì)后SPEC CPU 2006 INT測試集測試出的執(zhí)行性能平均下降2.98%,性能下降最明顯的是471,下降比例為7.77%,也優(yōu)于DDM動態(tài)關(guān)閉SMT的性能表現(xiàn)(SPEC2000評測約8%的性能損失),且以473為代表的測試程序在增加防護(hù)設(shè)計(jì)后性能沒有下降,且有0.5%的性能提升.
綜上可以得出,本文防護(hù)方法對性能的影響整體可控,且相比于禁用或動態(tài)關(guān)閉SMT技術(shù)有明顯的性能優(yōu)勢.
本文描述的防護(hù)機(jī)制使用Verilog語言進(jìn)行RTL實(shí)現(xiàn).然后使用HLMC 40 GP工藝和新思科技的ASIC設(shè)計(jì)流程和工具進(jìn)行面積和時(shí)序的評估.
本文防護(hù)機(jī)制設(shè)計(jì)為1個(gè)獨(dú)立的單元,命名為smt_defend,該單元支持針對6個(gè)執(zhí)行端口,64個(gè)調(diào)度器項(xiàng)的處理器微架構(gòu)設(shè)計(jì).
本文使用新思科技DC-Compiler工具,設(shè)置時(shí)鐘約束為2 GHz,clk_uncertainty參數(shù)值為100 ps.本文防護(hù)設(shè)計(jì)的時(shí)序和面積數(shù)據(jù)如表5所示:
Table 5 Hardware Overhead Evaluation表5 硬件開銷評估
經(jīng)過綜合工具實(shí)現(xiàn),smt_defend單元總面積為4 877 μm,在時(shí)序方面,3類時(shí)序數(shù)據(jù)的最差路徑分別為reg2reg(寄存器到寄存器)時(shí)序最差路徑為357 ps;in2reg(輸入到寄存器)時(shí)序最差路徑為381 ps;reg2out(寄存器到輸出)時(shí)序最差路徑為300 ps.在2 GHz的時(shí)鐘約束下無任何時(shí)序違例.
3個(gè)子模塊conflict_matrix,branch_filter,policy_modifier的面積數(shù)據(jù)分別為4 607 μm,135 μm,132 μm.
為了進(jìn)行面積和時(shí)序的對比,本文使用DC-Compiler工具在相同的設(shè)置和約束下分析了6個(gè)執(zhí)行端口整型執(zhí)行單元的整體面積約為302 979 μm,本防護(hù)設(shè)計(jì)單元的面積為其1.6%,硬件開銷可控.
相比于處理器內(nèi)部的基本單元,本文描述的防護(hù)機(jī)制實(shí)現(xiàn)在硬件開銷上可控,且該防護(hù)機(jī)制在流水線設(shè)計(jì)上,并不影響直接影響SMT技術(shù)的多端口調(diào)度算法時(shí)序,在時(shí)序角度上不存在設(shè)計(jì)負(fù)擔(dān).
本文針對SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊防護(hù)的一些相關(guān)工作進(jìn)行了系統(tǒng)的分析、歸納.同時(shí),本文提出了一種基于動態(tài)資源使用策略的SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道攻擊防護(hù)方法,在SMT技術(shù)對共享數(shù)據(jù)結(jié)構(gòu)的處理算法上進(jìn)行改進(jìn),將不同的資源處理策略應(yīng)用到SMT環(huán)境下執(zhí)行端口時(shí)間側(cè)信道安全防護(hù)中,通過對數(shù)據(jù)結(jié)構(gòu)共享策略和算法的改進(jìn)來達(dá)到防護(hù)效果,可以在SMT技術(shù)合理利用共享數(shù)據(jù)結(jié)構(gòu)的同時(shí)達(dá)到安全防護(hù)的目的.經(jīng)過充分評估,本文方法從防護(hù)有效性上針對已有的攻擊方式有很好的防護(hù)效果,基本和關(guān)閉SMT技術(shù)的防護(hù)方式等效;在性能開銷上遠(yuǎn)遠(yuǎn)好于關(guān)閉SMT技術(shù)的防護(hù)方法;在硬件開銷角度,本文防護(hù)方法的設(shè)計(jì)簡潔,面積和時(shí)序影響小,具有一定的實(shí)用價(jià)值.
作者貢獻(xiàn)聲明
:岳曉萌提出可動態(tài)調(diào)整雙線程共享的執(zhí)行端口資源使用策略的防護(hù)方法,并進(jìn)行了實(shí)驗(yàn);楊秋松指導(dǎo)并優(yōu)化動態(tài)資源使用防護(hù)策略的算法,審閱文章內(nèi)容,提出改進(jìn)建議;李明樹指導(dǎo)研究方向和技術(shù)方法,審閱文章內(nèi)容,提出改進(jìn)建議.