999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于動態資源使用策略的SMT執行端口側信道安全防護

2022-02-11 14:12:04岳曉萌楊秋松李明樹
計算機研究與發展 2022年2期
關鍵詞:指令策略

岳曉萌 楊秋松 李明樹

1(基礎軟件國家工程研究中心(中國科學院軟件研究所) 北京 100190) 2(中國科學院大學 北京 100049)

隨著計算機技術的發展和數據處理需求的增大,處理器廠商一直致力于提升處理器的并行處理能力.早期處理器發展重點是提升處理器內部的指令并行度,當處理器指令并行度提升到了一定瓶頸后,處理器廠商開始提升線程并行度來提升處理器的整體性能,這也推動了多核處理器的出現.

同時多線程(simultaneous multi-threading, SMT)技術是實現線程級并行的技術之一,其通過增加少量硬件資源,把1個物理核映射成2個邏輯核,同時運行的線程可共享處理器的資源.因為線程執行總有空閑或者等待的時間,SMT環境下當一個線程進入空閑或等待,另一個線程可以繼續執行,從而更加合理地使用處理器資源,進而達到比單線程超標量處理器更好的指令吞吐量和資源利用率.已實現SMT技術的處理器廠商包括Intel,AMD,IBM等,其中以Intel最早于2002年的Pentium4處理器上使用的超線程(hyper-threading, HT)技術最為典型.本文中的SMT技術均以Intel提出的超線程技術作為主要參考.

從Intel公司推出的HT技術商用開始,研究人員就開始針對SMT技術進行安全問題的挖掘和研究,因為SMT技術增加了很多處理器微架構安全問題利用的場景和機會,因此有研究人員評價SMT技術是“廉價的硬件并行意味著廉價的安全性”.

在SMT技術設計下,處理器執行資源是完全被2個線程共享的,2個線程間共享一樣的執行端口及端口內的執行單元,很容易構造資源的競爭,這種競爭可以被攻擊者檢測和利用.

2006年,Wang等人首次將執行單元的競爭應用于隱蔽信道.2016年,Covert shotgun項目提出一個自動化挖掘SMT環境下執行單元隱蔽信道的框架.在執行端口及執行單元的隱蔽信道攻擊研究過程,逐步出現了基于相同技術原理的側信道攻擊技術研究.2018年,Aldaya等人在Intel Skylake和Kabylake架構上利用其SMT技術開啟后執行端口競爭問題提出了PortSmash攻擊.2019年,IBM的研究團隊提出了一種叫SMoTherSpectre的新型“Spectre”類型攻擊,其使用SMT環境下執行端口的競爭構建了投機代碼重用的攻擊場景,可以從受害者線程獲取私密信息.

在針對上述SMT環境下共享執行端口或執行單元的時間側信道攻擊,研究人員也提出了一些防護方法.Percival等人在早期提出可以禁用SMT來防范此類攻擊,其可以徹底解決執行單元或執行端口雙線程共享產生的時間側信道問題,但這種方式失去了SMT技術本身帶來的收益,會導致相應的性能損失.Hu在提出通過將噪聲添加到與進程相關的所有時間信息中,達到降低時序信道帶寬的目的進行防護,其通過修改RDTSC或RDTSCP指令,將噪聲加入到指令執行的返回值中,就可以達到降低攻擊者獲取時間信息精度的目的,但這種方式也會直接影響相應被修改指令的功能準確性,影響正常程序的使用.2019年,Zhang等人提出了名為DDM(demand-based dynamic mitigation)的防護方法,其使用軟件的手段動態地基于需求關閉SMT技術,進而達到防護基于SMT技術執行資源共享的側信道攻擊的目的.然而DDM是通過軟件手段動態關閉SMT技術來達到防護目的,尚未有從處理器微架構角度防護的案例.

本文提出了一種針對現代處理器SMT技術執行端口時間側信道攻擊的防護方法.主要貢獻有2點:

1) 提出動態調整雙線程共享的執行端口資源使用策略,防護SMT環境下執行端口雙線程共享產生的時間側信道攻擊的方法,該方法將SMT技術對不同數據結構的處理方式應用到側信道安全防護中,通過對數據結構共享策略的改變來達到防護效果,可以在SMT技術合理利用共享數據結構的同時達到安全防護的目的;

2) 提出并設計了一種基于記錄分支預測錯誤刷新及執行端口沖突歷史的防護方法,可以有效防護以SMotherSpectre為代表的組合使用誘導分支預測投機執行的Spectre機制及執行端口沖突時間側信道攻擊.

1 相關工作

在20世紀初期SMT技術問世之后,研究人員就開始在SMT技術上挖掘安全問題和防護方法.Ko?等人在2009年總結了當時已有的基于SMT的攻擊技術和應用案例,對SMT技術導致的安全問題進行了系統歸納,也匯總了當時針對SMT技術安全問題的緩解手段.2018年,Ge等人總結了2002—2018年期間各個系統層級由于資源共享導致的時間信道安全問題及緩解措施,作者提出基于SMT技術產生的硬件線程級時間信道安全問題相對于跨核、跨處理器的時間信道安全問題是更難應對和防護的.SMT環境下除緩存結構外的其他共享數據結構很難有好的防護效果,其中最突出的是SMT環境下執行端口雙線程共享導致的時間側信道安全問題.

SMT環境下執行端口時間側信道攻擊路徑核心環節是沖突的構建和對時間的度量,這也是時間信道利用的2個基本要素(簡稱為沖突和時間).表1描述了已有針對SMT共享執行端口的時間側信道防護方法:

Table 1 Timing Channel Defending Method Under SMT Execution Port Shared表1 SMT環境下共享執行端口的時間信道防護策略及方法

1.1 沖突要素防護

從沖突要素的防護策略角度,針對SMT技術下執行端口雙線程共享產生的時間側信道安全問題目前主要有2種防護手段:將SMT技術禁用以及動態關閉SMT(DDM).

Percival在早期提出數據緩存可以在SMT環境下被利用于構造隱蔽信道和側信道攻擊,建議可以通過禁用SMT來防范此類攻擊.當前禁用SMT的方案在實踐中已經得到使用,例如微軟Microsoft Azure的公共云服務上就禁用SMT技術.除了直接禁用SMT技術,DDM可以基于上層軟件的配合來達到防護目的.DDM是一種基于需求的動態SMT瞬態攻擊防護技術,其實現了進程級的防護粒度,當安全進程在運行時,如果有防護范圍內的惡意進程嘗試分配到和安全進程一樣的物理核時會被OS拒絕.當安全進程在一個物理核中運行時,另一個相同物理核的進程可以通過HLT指令的系統調用完成SMT狀態的關閉,保證安全進程能夠在等同于關閉SMT的狀態下運行,從而達到防護SMT技術下共享執行端口側信道攻擊的目的.DDM的防護方式本質上也是通過關閉SMT技術達到防護效果,但是其動態開關的方式會一定程度上降低徹底關閉SMT的性能損失.DDM使用SPEC2000進行性能評估約產生8%左右的性能損失.

1.2 時間要素防護

從時間要素的防護策略角度,可以通過修改時間度量指令的方式增加時間噪聲來防護針對SMT技術下執行端口共享產生的時間側信道攻擊.

增加時間噪聲是指在時間度量方式和手段上進行噪聲添加.Hu在1991年就提出了模糊時間(fuzzy time)技術,通過將噪聲添加到與進程相關的所有時序信息中,最終達到降低時間信道帶寬的目的.文章中通過修改RDTSC或RDTSCP指令在時間信息中添加噪聲,此指令的功能是通過讀取處理器內部的時間戳計數器(time stamp counter, TSC)來度量運行時間,通過修改指令的實現方式,將噪聲加入到指令執行的返回值中,就可以達到降低攻擊者獲取時間精度的目的.

Vattikonda等人通過修改Xen虛擬機監控器(hypervisor),將噪聲加入到RDTSC指令的返回值中.Martin等人發現如果處理器內部時間度量變得不精確,可以有效防護時間側信道攻擊.作者修改了x86體系架構下的RDTSC指令的硬件實現,使得RDTSC指令會暫停所有執行操作直到預設的時間閾值

T

滿足,然后通過產生一個0到時間閾值

T

的隨機數返回給指令使用者來達到模擬時間的效果.

1.3 小 結

當前除了禁用SMT技術、動態關閉SMT以及修改時間度量指令(RDTSC/RDTSCP)的方法外,還沒有其他可以針對SMT環境下執行端口時間側信道攻擊的防護手段.已有的防護手段都有其明顯的缺陷,禁用或動態關閉SMT技術會損失SMT技術帶來的性能收益;修改指令語義會弱化指令功能,從而影響其他使用時間度量指令應用的正常使用.綜合已有的防護方法,目前針對SMT環境下執行端口時間側信道攻擊效果較好的防護策略是動態關閉SMT技術(DDM),還沒有公開的基于處理器微架構的防護方案.

2 背景知識

2.1 SMT微架構特征及安全挑戰

處理器在開啟SMT技術后,處理器內部微架構會使用相關的SMT功能特性,從而完成微架構功能的轉變,進入到同時多線程模式,可以在同一時刻利用不同執行端口發射執行不同線程的指令.

如圖1所示,SMT技術區別于其他的多線程技術的核心是可以在同一個流水級執行來自幾個不同線程的微操作(或稱Uop、微指令).普通的超標量單核處理器同時只能運行1個線程,在局部時間內流水線資源還會處于空閑狀態(例如取指令階段);對于普通的多核處理器,其會使用多個物理核來運行多個線程,是普通單核處理器的簡單疊加;粗粒度和細粒度多線程技術使用時間片的方式分配資源使用,資源會在一段時間內分配給獨立的1個線程使用,同一時間資源只會分配給1個線程使用;SMT技術區別于粗/細粒度的多線程技術,其可以靈活分配處理器內部資源,大部分數據結構資源被多個線程共享且同一周期可以調度多個線程的操作同時執行,最大化得提高資源利用率.

Fig. 1 SMT feature圖1 SMT技術特征

Fig. 2 Intel SMT front end resource圖2 Intel SMT前端資源的處理方式

SMT技術原理(以Intel的超線程技術為例)主要包含3個部分:

1) 制定資源共享策略.SMT技術可以使用資源復制、資源分割和資源共享的方式來實現數據結構資源的分配.以圖2為例,Intel SMT技術中的ITLB和IP結構采用了資源復制的處理策略,微操作隊列結構采用了資源分割的處理策略,追蹤緩存結構采用了資源共享的處理策略.

2) 設置線程選擇點.使用SMT技術的處理器微架構需要在合適的流水線位置增加線程選擇點,其作用是在共享資源的使用上進行2個線程的選擇及切換.合理的線程選擇點設置和選擇算法使用能夠有效提高雙線程共享資源的利用率以及雙線程的公平性.

3) 保證線程公平性.處理器微架構在實現SMT技術時需要注重線程間的公平性,線程選擇點需要使用相應的公平算法,避免單一線程由于長時間得不到資源而餓死的情況出現.

SMT技術中資源復制和資源分割的處理方式使得2個線程在處理器內部會公平地使用自己的私有資源,不會對另外線程的資源產生影響,因此基于共享資源競爭的時間信道攻擊方式對該類型的微架構組件無效.對于資源共享的處理方式,2個線程在處理器內部會產生競爭,容易被攻擊者利用,例如針對SMT環境下執行端口雙線程共享的技術原理,控制執行指令流的類型可以構建端口沖突,攻擊者可以通過時間信道傳遞信息獲取另一線程運算邏輯或指令類型的使用狀態.

2.2 SMT技術的多端口調度算法

本節通過剖析SMT技術的多端口調度算法的微架構實現,來描述SMT環境下執行端口時間側信道攻擊原理,如圖3所示:

Fig. 3 SMT multi-port schedule micro-architecture圖3 SMT技術的多端口調度微架構

在超標量處理器微架構設計中,指令集架構中描述的宏指令會經過取指、譯碼的流程形成對應的微操作.微操作在進行指令執行前,會通過指令解析完成對應執行端口的綁定.在關閉SMT技術的情況下,處理器流水線內部只有1個線程,完成端口綁定的微操作會通過對應的端口進入執行單元;在開啟SMT技術的情況下,處理器解碼系統和亂序執行系統交互過程中,因為在重命名和分配微架構設計中約束了同一時刻只能處理來自于同一個線程的微操作,因此,同一時刻也只有1個線程的微操作可以進入調度器.在調度器微架構設計中為了更快地調度和分發微操作,其并不關心微操作的線程信息,只考慮其是否就緒(“就緒”指的是某條微操作已滿足被選擇并發射到執行端口的條件),如果有同時就緒的微操作則年齡更老的優先發射,因此,調度器可以同時在不同執行端口發射2個線程的微操作.

如果2個線程在調度器內的微操作指向同一個端口,那么由于分配時的先后關系,2個線程的微操作會自然攜帶不同的年齡信息.調度器中有2個關鍵數據結構,一個是年齡矩陣,另一個是就緒向量,雖然2個線程的微操作即使都處于就緒狀態,依賴于年齡矩陣的先后關系,調度器會先發射更“老”的線程的微操作進入相應端口,那么已經就緒但由于較“年輕”導致無法發射到相同端口的另外線程的微操作就產生了延遲,此時就叫作出現了線程間的端口沖突.

假設線程

T

T

是1個物理核上分配的2個邏輯核,按照SMT微架構特征的描述,其按照線程公平性原理進行執行端口的分配使用,分配策略如算法1所示.

算法1.

端口分配策略

Alloc

(

T

,

P

,

C

,

A

)

.

輸入:準備分配線程端口

T

x

={0,1},執行端口

P

={

p

,

p

,…,

p

-1},

i

={0,

n

},時鐘周期

C

;輸出:線程分配端口

A

.

① 時鐘周期

C

執行:② for (0≤

i

<

n

)③ if (

T

==

p

&&

T

(1-)==

p

)④

A

=

p

;

⑤ else

A

=

p

;⑦

A

(1-)=

P

p

;

⑧ end if

⑨ end for

⑩ 時鐘周期

C

+1執行:

上述分配策略會產生2種極端情況,當

T

T

都處于完全流水線執行的狀態時,一種極端情況是如果

T

T

一直使用不相關的執行端口,那么

T

T

不會有任何的執行端口沖突;另一種極端情況是如果

T

T

一直使用相同的某一個執行端口,那么

T

T

需要輪流使用該執行端口,吞吐量是上一種極端情況的一半

.

因此,某線程在特定的執行端口下執行指令并且度量其執行程序的時間就可以推斷同一端口或執行單元下另一線程的執行情況

.

3 防護目標

2018年的PortSmash和2019年的SMoTher-Spectre是近期利用SMT技術執行端口雙線程共享產生的時間側信道構建攻擊的案例.

PortSmash針對Intel Skylake的執行微架構(如圖4所示)設計了3組沖突指令流,分別適用于端口1、端口5、端口0156的沖突構建,端口1、端口5的沖突構建指令選用了長延遲指令,端口1選用整型乘法(INT MUL)執行單元執行的crc32指令,端口5選用了向量交織(VEC SHU)執行單元執行的vpermd指令,端口0156的重構構建指令選用了單周期指令,使用最常見的算術邏輯(INT ALU)執行單元執行的ADD指令.

Fig. 4 Intel Skylake execution port distribution圖4 Intel Skylake執行端口分布

SMoTherSpectre除了采用同PortSmash類似的沖突構造指令來構建用于受害者泄露信息的SMoTher Gadget和用于攻擊者度量時間信息Time SMoTher Gadget外,其在沖突構建階段使用了Spectre分支誘導的方式來加強沖突構建的成功率,如圖5所示.受害者的BTI Gadget和攻擊者的Poison BTB組件的作用是構建分支誘導場景,攻擊者通過訓練處理器分支預測單元的分支目標緩存(branch target buffer, BTB)結構來誘導受害者投機執行SMoTher Gadget的程序,當受害者程序被分支誘導后會進入SMoTher Gadget中,該組件通過分支跳轉的形式構建了2組沖突指令,在POC示例中,分支指令后使用了popcnt指令,分支目標使用了ror指令,同時攻擊者程序中的Time SMoTher Gadget使用了大量的ror指令,2個線程同時執行ror指令在Intel Skylake微架構中會造成端口6的沖突,從而達到構建沖突的目的.

Fig. 6 Modification of multi-port scheduling algorithm by protection design圖6 防護設計對多端口調度算法的改動

Fig. 5 SMoTherSpectre attack gadget圖5 SMoTherSpectre攻擊組件示意圖

PortSmash和SMoTherSpectre均使用了rdtsc/rdtscp指令來作為時間度量的手段,通過在攻擊者程序沖突指令執行前后使用rdtsc/rdtscp指令可以得出沖突指令的執行時間,從而獲取沖突程度或沖突次數的信息.

本文提出的基于動態資源使用策略的SMT環境下執行端口時間側信道攻擊防護方法目標是通過執行端口資源使用策略的動態調整,破壞上述2種攻擊方式在端口沖突構建環節中使用的技術原理,從而切斷通過改變指令類型來構建端口沖突進而通過時間信道傳遞信息的攻擊路徑,達到防護上述2種攻擊方式及使用同類技術原理的其他攻擊的效果.

4 防護設計與實現

4.1 設計概述

本文從微架構角度針對SMT環境下執行端口時間側信道攻擊設計了一種軟件不可見的防護機制,圖6描述了本文設計的防護設計對SMT技術的多端口調度算法的改進.

在SMT技術的多端口調度標準算法中,2個線程通過輪詢算法交替選擇線程內的微操作送入分配單元,分配單元完成微操作的端口綁定,單端口執行的微操作綁定對應執行端口,多端口執行的微操作采用循環選擇算法綁定執行端口.微操作進入調度器后通過依賴矩陣建立就緒向量,通過年齡矩陣生成最終的選擇向量,調度器按照當前端口上綁定的已就緒的微操作的年齡順序依次選擇微操作發射到對應端口上.

本文的防護設計對SMT技術的多端口調度算法進行了擴充,詳細的微架構示意圖如圖7所示.

Fig. 7 The micro-architecture of protection design圖7 防護設計微架構圖

在年齡矩陣訪問生成最終的選擇向量后增加沖突檢測的檢查環節,本文在原有的依賴矩陣和年齡矩陣之外,新增了端口沖突矩陣的數據結構,該數據結構提取依賴矩陣的就緒向量信息、年齡矩陣的選擇向量信息以及調度器的線程向量信息,通過分線程的飽和計數器陣列來記錄線程間的端口沖突情況.如果檢測到沖突,則將沖突信息提供給分支過濾和策略修改器進行下一步的防護算法應用;如果沒有檢測到沖突則不會產生額外動作,不會影響正常的調度算法.分支過濾器對分支指令產生的端口沖突信息進行過濾并記錄分支刷新產生時的沖突信息,動態資源使用策略修改器(簡稱:策略修改器)生成策略使能向量和優先級向量進行防護算法的應用.

防護算法應用會改變標準的SMT技術的多端口調度算法,主要分2個方面:

① 防護策略類型、策略端口使能向量伴隨指令操作碼會提供給分配單元.分配單元接收到分割的策略類型和策略端口使能向量時,會在原端口綁定算法的基礎上將多端口執行的微操作采用的循環選擇算法改為端口分割算法.當匹配到微操作的操作碼一致時,不同線程的微操作固定使用分開的執行端口.

② 防護策略類型、策略端口使能向量、優先級向量伴隨指令操作碼會提供給調度器選擇邏輯.調度器選擇邏輯接收到分時策略、策略端口使能向量以及優先級向量時,會改變原始完全按照年齡矩陣的選擇算法,而是基于優先級向量進行優先級選擇,即使高優先級線程微操作在年齡矩陣中記錄的年齡比另外的線程年輕,其也會被優先選擇.當匹配到微操作操作碼一致時,選擇邏輯按照優先級在對應端口中優先選擇優先級高的線程微操作進行分發.

本文的防護設計微架構實現共包含3個子模塊,分別是端口沖突矩陣、分支過濾器及策略修改器.在整個防護設計中,通過對端口沖突的連續檢測形成端口沖突向量;然后通過分支過濾器過濾掉分支類型微操作并且針對SMoTherSpectre此類攻擊特征進行分支刷新后的優先級調整;最后通過策略修改器進行處理器分配單元及調度器選擇邏輯的算法策略修改,消除由于執行端口沖突產生的時間信道,進而防護SMT環境下利用雙線程共享執行端口進行的時間側信道攻擊.

4.2 端口沖突矩陣

為了記錄SMT技術2個線程的端口沖突,本文的防護方法需要設計實現用于記錄SMT技術2個線程的端口沖突矩陣.

端口沖突矩陣由2個線程獨立的2維數組組成,數組內部的每一行代表1個端口,按照圖7中描述,存在6個端口,分別是

P

P

,每一個端口都有一個2 b的飽和計數器,該計數器的初始值為0,當某線程因為綁定的端口同另一個線程相同但由于年齡先后的原因而導致延遲發射時,計數器加1,當某線程綁定的端口連續2次發射均沒有沖突時,計數器減1.

判定某線程同另一個線程由于端口資源沖突導致延遲發射的算法如下:

算法2.

端口沖突延遲發射

ConflictCounterSet

(

T

,

S

,

P

,

C

Conf

[1:0])

.

輸入:就緒線程端口

T

,選擇線程端口

S

x

={0,1},執行端口

P

={

p

,

p

,…,

p

-1},

i

∈{0,

n

},時鐘周期

C

;輸出:沖突飽和計數器

Conf

[1:0]

.

① 時鐘周期

C

執行:② 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

;

判定某線程綁定的端口連續2次發射均沒有沖突的算法如下:

算法3.

端口沖突取消

ConflictCounterReset

(

T

,

S

,

P

,

C

Conf

[1:0])

.

輸入:就緒線程端口

T

,選擇線程端口

S

x

={0,1},執行端口

P

={

p

,

p

,…,

p

-1},

i

∈{0,

n

},時鐘周期

C

;輸出:沖突飽和計數器

Conf

[1:0]

.

① 時鐘周期

C

執行:② 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)

因為SMT技術的公平性設計,沖突會在2個線程中間交替出現,當2個線程的飽和計數器全為1時,則判斷該端口存在雙線程的沖突.沖突端口的信息會以獨熱碼(one-hot)的形式作為沖突向量給到分支過濾器.

4.3 分支過濾器

在SMoTherSpectre中,攻擊者通過Spectre分支誘導的方式誘導受害者進入SMoTher Gadget,SMoTher Gadget包含受害者投機執行的代碼片段.因為是誘導投機執行代碼,后續會產生分支刷新刷掉該指令流,該指令流使用了攻擊者構造的端口沖突代碼,長時間執行相同端口的微操作,而這些微操作同攻擊者Time SMoTher Gadget中的指令沖突與否則會產生對應的時間信道.

分支過濾器的作用是當接收到沖突向量后進行包含分支類型微操作執行單元端口的沖突信息進行過濾并針對SMoTherSpectre中使用Spectre誘導方式進行沖突構建和安全信息提取的攻擊方式進行專門的防護.

分支過濾器除了接收端口沖突矩陣的沖突向量外,還接收譯碼過后的微操作信息.識別分支指令的目的是對分支指令進行沖突過濾,其他信息會解碼后給到后面的策略修改器用于防護策略的算法應用.

對分支指令進行過濾的原因是在普通應用程序中,分支指令占比較高,且在實際攻擊應用時因為分支指令執行會產生流水線刷新行為,攻擊者不會使用分支指令作為執行端口沖突的構建對象.如圖8所示,本文選取了常用的Linux指令(mount,cat,ls,sh,su,hostname,login,password,id,which),其分支指令類型的占比接近23%.以Intel Skylake微架構為例,其分支執行單元在端口0和端口6,如果一旦端口0和端口6檢測到端口沖突,且分支過濾器獲取微操作類型是分支時,過濾器將過濾掉該沖突信息.

Fig. 8 Linux typical application instruction frequency statistics圖8 Linux典型應用指令頻度統計

除了分支指令過濾的功能外,分支過濾器還可以通過記錄分支刷新的方法來防護使用Spectre誘導方式進行沖突構建和安全信息提取的攻擊.具體算法流程如下:

算法4.

分支刷新優先級設置

BranchFlush

-

PriorSet

(

F

S

P

Conf

[1:0])

.

輸入:選擇線程端口

S

,分支刷新線程

F

x

={0,1},執行端口

P

={

p

,

p

,…,

p

-1},

i

∈{0,

n

},沖突飽和計數器

Conf

[1:0];輸出:線程優先級

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

線程對某端口的分時調度優先級降低后,僅當另一線程不使用該端口時才調度本線程綁定該端口的微操作,該優先級策略會覆蓋策略修改器的優先級策略.

針對SMoTherSpectre攻擊,分支過濾器通過對分支刷新后沖突端口的記錄并降低其優先級的方式可以使得受害者投機執行的SMoTher Gadget指令流中的端口沖突指令無法同攻擊者Time SMoTher Gadget的指令沖突,進而在攻擊者的時間度量范圍內無法觀測到沖突出現,破壞其在信息提取階段的關鍵信息,使得SMoTherSpectre此類攻擊方式失效.

4.4 動態資源使用策略修改器

經過分支過濾器過濾后,最終的端口沖突向量及分支過濾后的刷新沖突記錄向量會進入動態資源使用策略修改器,策略修改器用于生成對SMT技術的多端口調度算法的防護邏輯并完成新防護算法的應用.

策略修改器主要應用的策略有2種,端口分割策略和端口分時策略.為了保證2個線程之間的公平性,默認分時優先級選擇采用Ping-Pong原則,且該默認優先級受分支過濾器的控制.策略修改器會產生策略類型、策略端口使能向量、優先級向量.策略類型、策略端口使能向量、優先級向量伴隨微操作的操作碼會同時提供給分配單元和調度器選擇邏輯.

策略修改器接收來自于提交單元的刷新信號,當出現中斷、事件、異常等單線程事件或SMT下線程喚醒、線程睡眠、線程切換等雙線程事件時,策略修改器重置,恢復原始的雙線程共享多端口調度算法.

以Intel Skylake微架構的多端口的執行單元INT ALU以及單端口的執行單元INT MUL為例,給出策略修改器的算法.

算法5.

資源策略修改

ResourceModify

(

T

,

Prior

,

P

,

S

)

.

輸入:就緒線程端口

T

,線程優先級

Prior

x

={0,1},執行端口

P

={

p

,

p

,…,

p

-1},

i

∈{0,

n

};輸出:選擇線程

S

x

={0,1}

.

① 多端口執行單元(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-)

在分配單元,策略修改器將多端口執行的微操作采用的循環選擇算法改為端口分割算法.在調度器選擇邏輯,策略修改器將完全按照年齡矩陣的選擇算法改為基于優先級的選擇算法.如果分支過濾器的端口優先級向量使能,該使能信息會覆蓋分時優先級Ping-Pong選擇器結果,固定匹配線程的優先級低于另一線程.

4.5 小 結

本文提出的基于動態資源使用策略的SMT環境下執行端口時間側信道攻擊防護方法,可以將SMT技術對數據結構分割和分時處理的方式應用到SMT環境下執行端口時間側信道安全防護中,通過對數據結構共享策略和算法的改進來達到防護效果,可以在SMT技術合理利用共享數據結構的同時達到安全防護的目的.

在破壞SMT技術下執行端口時間側信道攻擊路徑上,本防護機制可以同時作用于攻擊路徑的沖突構建和時間度量2個環節上.

首先,防護機制從沖突要素入手,動態資源使用策略會作用于SMT技術的多端口分配和調度選擇算法上,使得SMT環境下2個線程不發生同樣類型的端口沖突,達到沖突要素防護中不產生沖突防護策略的硬件隔離效果.

其次,本文提出的防護機制在時間要素上同樣具有作用,其對時間的干擾主要體現在針對SMoTherSpectre類型攻擊上,區別于PortSmash攻擊,SMoTherSpectre攻擊者在進行時間信道的度量時,沖突產生的時間信息及無沖突產生的時間信息都有作用.PortSmash攻擊對時間信息的度量完全基于沖突時間來完成,而SMoTherSpectre通過時間度量采集的時間即使沒有沖突也可以用于私密信息的分析.通過本文的防護算法應用,從SMoTherSpectre攻擊者角度,其度量到的時間信息不再準確.從時間要素防護的角度,這也是破壞時間度量精度的一種方式.

5 防護評估

5.1 評估方法概述

本文使用Gem5模擬一個高性能多執行端口的超標量處理器作為本文防護方法的防護有效性、性能開銷的評估平臺,其配置參數如表2.對標的防護方式是目前針對SMT環境下執行端口雙線程共享的時間側信道攻擊最有效的防護策略—關閉SMT技術.

Table 2 Gem5 Simulator Configuration Parameters表2 Gem5模擬器配置參數

對于硬件開銷的評估,本文使用華力HLMC 40 GP工藝進行防護方法的硬件開銷評估,主要包含面積及時序.

對于防護有效性評估,本文選用了PortSmash和SMoTherSpectre兩篇文章中的POC(proof of code)代碼作為實驗目標,分析本文提出的防護設計對這2種攻擊方式的防護效果.

對于性能評估,本文選用SPEC CPU 2006測試集作為性能評估的參考,主要評估防護方法對性能的影響以及同關閉SMT技術產生的性能影響進行對比.本文將采用12組SPEC CPU 2006 INT測試集.通過在Gem5上運行測試程序,分別統計關閉SMT技術、正常開啟SMT技術、開啟SMT技術并且使用本文的防護方法3個場景的執行周期數值,然后進行SPEC CPU 2006 INT程序的整體性能對比,執行周期數越大,性能越差,周期數越小,性能越好.

本文SPEC CPU 2006 INT程序在Gem5 ALPHA架構下12個測試程序可成功運行7個,錯誤原因均為Gem5模擬器對系統調用支持情況的缺陷導致.表3是SPEC CPU2006整型計算基準程序在本實驗下的運行情況:

Table 3 Running Condition of SPEC CPU2006 Integer Base Programs

對于硬件開銷評估,本文提出的防護機制使用RTL(register-transfer level)進行代碼實現.完成設計實現后的防護設計代碼在HLMC 40 GP工藝下使用新思科技的ASIC設計流程和工具進行面積和時序的評估.

5.2 防護有效性評估

本節防護有效性評估針對PortSmash和SMoTherSpectre兩個攻擊案例進行,在禁用或動態關閉SMT技術后,2個攻擊案例均無法實現,因此,禁用或關閉SMT的防護效果為最佳,本文的防護設計目的是盡量接近禁用或關閉SMT技術的防護效果.

PortSmash參考其針對Intel Skylake微架構的POC代碼片段,攻擊者循環執行某端口指令,受害者同樣會使用該端口指令,也會使用其他端口指令.為了使攻擊效果明顯,設計受害者循環進行相同操作,攻擊者也循環進行相同操作且攻擊者和受害者同時在開啟SMT技術的2個邏輯核上執行.SMo-TherSpectre選用其攻擊模型中使用的POC代碼片段類型,受害者運行程序中包含了攻擊者植入的一個SMOTHER代碼片段,正常運行過程中,受害者不會運行SMOTHER代碼片段,其在加載完核心參數后會跳走,但由于攻擊者使用了Spectre的分支預測誘導機制將受害者跳轉指令的目標地址誘導進SMOTHER代碼片段中,進而實施執行端口沖突的時間側信道攻擊,其技術原理同PortSmash一致.

將攻擊者和受害者的運行代碼使用gcc編譯器編譯成可執行二進制文件,其中攻擊者可以使用同受害者端口一致的指令類型,也可以使用同受害者端口不同的指令類型.首先使用原始Gem5模擬器,開啟SMT選項,且同時加載PortSmash攻擊的攻擊者和受害者POC代碼的二進制可執行文件,配置不同沖突次數和頻度,通過原始Gem5模擬攻擊者通過端口沖突獲取受害者信息的攻擊路徑,并統計運行時間來提取端口沖突時間信息;然后使用增加防護設計后的Gem5模擬器,進行同樣的操作.在本實驗過程中,為了測試不同沖突頻度產生的沖突效果,選取了60~30 720共10組不同量級的指令沖突頻度進行測量.

圖9為防護效果評估對比,SMTwC表示SMT下端口沖突的攻擊者執行周期;SMTwoC表示SMT下端口無沖突的攻擊者執行周期;SMTwDwC表示SMT下增加防護設計后有端口沖突的攻擊者執行周期;SMTwDwoC表示SMT下增加防護設計后端口無沖突的攻擊者執行周期.表4詳細給出了Gem5輸出的時鐘周期數據.

Fig. 9 Evaluation of protective effect圖9 防護效果評估

從圖9中的SMTwC和SMTwoC的對比可以看出,在SMT技術下PortSmash和SMoTherSpectre攻擊中攻擊者使用的攻擊指令同受害者同端口指令出現沖突時其沖突造成的時間延遲和沖突規模呈線性關系,而不產生沖突時,其指令延遲信息也呈現明顯的線性關系,這樣通過時間延遲的不同可以提取出受害者程序執行的指令類型和次數.

Table 4 Effect of Defending Method表4 防護效果數據

從圖9中的SMTwDwC和SMTwDwoC的對比可以看出,增加防護設計后,由于沖突端口隨著沖突指令量級增大會使能分割或分時的動態資源使用策略,攻擊者程序即使存在同受害者的指令沖突且沖突造成的時間延遲和沖突規模呈明顯的線性關系,但是使用同受害者不產生沖突的指令類型其造成的時間延遲和沖突規模也呈明顯的線性關系且同有沖突時趨于一致.通過該實驗數據表明,攻擊者使用PortSmash和SMoTherSpectre類型的攻擊方式通過度量沖突時間來采集時間信道過程中會有明顯的誤差和干擾存在,無法判斷受害者使用的指令類型和頻度,可以達到禁用或動態關閉SMT技術的防護效果,進而防止受害者指令執行端口、指令執行次數及指令類型信息的泄露.

5.3 性能開銷評估

本文防護設計的性能評估選用SPEC CPU 2006測試集作為性能評估的參考,主要評估防護方法對性能的影響以及同禁用或動態關閉SMT技術(DDM)產生的性能影響進行對比.

1) 評估樣本.7個SPEC CPU 2006 INT測試程序.

2) 評估方式.使用總執行周期數據指標作為性能優劣的核心評估參數.

3) 評估目標.對比禁用SMT技術、正常開啟SMT技術、開啟SMT技術并且使用本文的防護方法3個場景的程序總執行周期數據(其中401和471的程序規模較大,其統計的時鐘周期數進行等比例縮減,縮減比例100∶1),分析本文的防護方法對性能的影響程度.

4) 對比數據(如圖10所示).

① NOSMT——關閉SMT技術后Gem5運行7組SPEC CPU 2006 INT測試程序的執行周期數;

② SMT——正常開啟SMT技術后Gem5運行7組SPEC CPU 2006 INT測試程序的執行周期數;

③ DEFENCE——開啟SMT技術并且使用本文的防護方法下Gem5運行7組SPEC CPU 2006 INT測試程序的執行周期數.

Fig. 10 Performance comparison圖10 性能對比

5) 評估結論.使用本文的防護設計后SPEC CPU 2006 INT測試集測試出的執行性能平均下降2.98%,性能下降最明顯的是471,下降比例為7.77%,也優于DDM動態關閉SMT的性能表現(SPEC2000評測約8%的性能損失),且以473為代表的測試程序在增加防護設計后性能沒有下降,且有0.5%的性能提升.

綜上可以得出,本文防護方法對性能的影響整體可控,且相比于禁用或動態關閉SMT技術有明顯的性能優勢.

5.4 硬件開銷評估

本文描述的防護機制使用Verilog語言進行RTL實現.然后使用HLMC 40 GP工藝和新思科技的ASIC設計流程和工具進行面積和時序的評估.

本文防護機制設計為1個獨立的單元,命名為smt_defend,該單元支持針對6個執行端口,64個調度器項的處理器微架構設計.

本文使用新思科技DC-Compiler工具,設置時鐘約束為2 GHz,clk_uncertainty參數值為100 ps.本文防護設計的時序和面積數據如表5所示:

Table 5 Hardware Overhead Evaluation表5 硬件開銷評估

經過綜合工具實現,smt_defend單元總面積為4 877 μm,在時序方面,3類時序數據的最差路徑分別為reg2reg(寄存器到寄存器)時序最差路徑為357 ps;in2reg(輸入到寄存器)時序最差路徑為381 ps;reg2out(寄存器到輸出)時序最差路徑為300 ps.在2 GHz的時鐘約束下無任何時序違例.

3個子模塊conflict_matrix,branch_filter,policy_modifier的面積數據分別為4 607 μm,135 μm,132 μm.

為了進行面積和時序的對比,本文使用DC-Compiler工具在相同的設置和約束下分析了6個執行端口整型執行單元的整體面積約為302 979 μm,本防護設計單元的面積為其1.6%,硬件開銷可控.

相比于處理器內部的基本單元,本文描述的防護機制實現在硬件開銷上可控,且該防護機制在流水線設計上,并不影響直接影響SMT技術的多端口調度算法時序,在時序角度上不存在設計負擔.

6 結 論

本文針對SMT環境下執行端口時間側信道攻擊防護的一些相關工作進行了系統的分析、歸納.同時,本文提出了一種基于動態資源使用策略的SMT環境下執行端口時間側信道攻擊防護方法,在SMT技術對共享數據結構的處理算法上進行改進,將不同的資源處理策略應用到SMT環境下執行端口時間側信道安全防護中,通過對數據結構共享策略和算法的改進來達到防護效果,可以在SMT技術合理利用共享數據結構的同時達到安全防護的目的.經過充分評估,本文方法從防護有效性上針對已有的攻擊方式有很好的防護效果,基本和關閉SMT技術的防護方式等效;在性能開銷上遠遠好于關閉SMT技術的防護方法;在硬件開銷角度,本文防護方法的設計簡潔,面積和時序影響小,具有一定的實用價值.

作者貢獻聲明

:岳曉萌提出可動態調整雙線程共享的執行端口資源使用策略的防護方法,并進行了實驗;楊秋松指導并優化動態資源使用防護策略的算法,審閱文章內容,提出改進建議;李明樹指導研究方向和技術方法,審閱文章內容,提出改進建議.

猜你喜歡
指令策略
聽我指令:大催眠術
基于“選—練—評”一體化的二輪復習策略
求初相φ的常見策略
例談未知角三角函數值的求解策略
我說你做講策略
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
高中數學復習的具體策略
數學大世界(2018年1期)2018-04-12 05:39:14
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
Passage Four
主站蜘蛛池模板: 日本色综合网| 尤物亚洲最大AV无码网站| 亚洲欧美国产五月天综合| 波多野结衣中文字幕一区二区| 国产亚洲精品97在线观看| 亚洲一级色| 97精品伊人久久大香线蕉| 午夜成人在线视频| 高清无码不卡视频| 欧美成人免费| 久久久久久久久18禁秘| 久久福利片| 亚洲激情99| 国产亚洲欧美另类一区二区| 亚洲第一中文字幕| 日韩在线观看网站| 天天激情综合| 日本不卡在线播放| 92精品国产自产在线观看| 欧美国产菊爆免费观看| 国产白浆视频| 亚洲一区二区成人| 亚洲欧美成人综合| 乱人伦视频中文字幕在线| 精品人妻一区无码视频| 久久综合伊人77777| 91黄视频在线观看| 日韩AV无码一区| 九色在线视频导航91| 国产91视频观看| 日韩精品一区二区三区swag| 中文成人在线| 乱色熟女综合一区二区| 婷婷五月在线| 曰AV在线无码| a亚洲视频| 欧美v在线| 中文字幕无线码一区| 亚洲最猛黑人xxxx黑人猛交 | 日韩不卡免费视频| 狠狠色婷婷丁香综合久久韩国| 欧美三级视频网站| 中文字幕佐山爱一区二区免费| 在线观看91香蕉国产免费| 在线观看91精品国产剧情免费| 亚洲一区二区三区香蕉| 免费视频在线2021入口| 國產尤物AV尤物在線觀看| 日韩久久精品无码aV| 日韩欧美国产中文| 国产av一码二码三码无码| 1024你懂的国产精品| 色国产视频| 亚洲精品第五页| 专干老肥熟女视频网站| 在线精品自拍| 成人综合在线观看| 国产免费好大好硬视频| 国产成人一区| 中文字幕在线不卡视频| 欧美一级专区免费大片| 99国产精品免费观看视频| 亚洲成在人线av品善网好看| 九色在线视频导航91| 国产精品片在线观看手机版| 欧美成一级| 一级毛片高清| 人妻丝袜无码视频| 日韩成人在线视频| 亚洲精品免费网站| 在线免费亚洲无码视频| 成人精品区| 免费在线看黄网址| 亚洲伊人久久精品影院| 91欧美在线| 久久夜色精品国产嚕嚕亚洲av| 国产真实乱子伦视频播放| 国产区免费精品视频| a级毛片视频免费观看| 99久视频| 亚洲二区视频| 亚洲综合专区|