岳曉萌,楊秋松,李明樹
(1.中國科學(xué)院軟件研究所基礎(chǔ)軟件國家工程研究中心,北京 100190;2.中國科學(xué)院大學(xué),北京 100049)
同時多線程通過增加少量硬件資源,把1個物理核映射成多個邏輯核,同時運行的線程可共享處理器的硬件資源.因為線程執(zhí)行總有空閑或者等待的時間,SMT環(huán)境下當(dāng)1個線程進入空閑或等待,另外的線程可以繼續(xù)執(zhí)行,從而更加合理的使用處理器資源.Intel最早于2002 年的Pentium 4 處理器上使用超線程(Hyper-Threading,HT)技術(shù)[1].Intel HT 技術(shù)在1 個物理核內(nèi)實現(xiàn)了2 個邏輯核,本文中的SMT 技術(shù)均以Intel 提出的超線程技術(shù)作為主要參考.
SMT 技術(shù)增加了很多處理器微架構(gòu)安全問題利用的場景和機會,因此有研究人員評價SMT 技術(shù)是“廉價的硬件并行意味著廉價的安全性”[2].2018 年,Ge 等人[3]總結(jié)了2002年到2018年期間各個系統(tǒng)層級由于資源共享導(dǎo)致的時間信道安全問題及緩解措施,提出基于SMT 技術(shù)產(chǎn)生的硬件線程級時間信道安全問題相對于跨核和跨處理器的時間信道安全問題是更難應(yīng)對和防護的,其將利用SMT 技術(shù)的攻擊稱為“簡單攻擊(Easy Attacks)”,而SMT環(huán)境下時間信道安全問題的防護或緩解方法大部分集中在緩存結(jié)構(gòu)上.普林斯頓的He 等人在2017 年發(fā)表了在側(cè)信道攻擊下的緩存是否安全的文章[4],通過分析攻擊成功概率來總結(jié)已有防護型緩存架構(gòu)的安全性.
2006 年,Wang 等人[5]首次使用執(zhí)行單元的資源競爭構(gòu)建了隱蔽信道.2018 年,Aldaya 等人[6]在Intel Skylake 和Kabylake 微架構(gòu)上利用其SMT 技術(shù)開啟后執(zhí)行端口競爭問題提出了PortSmash 攻擊,該攻擊通過構(gòu)建不同執(zhí)行端口的指令沖突場景,經(jīng)過一定規(guī)模的時間信道收集和降噪后獲取受害者信息.2019 年,IBM 的研究團隊提出了一種叫SMoTherSpectre[7]的新型“Spectre”類型攻擊,其在PortSmash 攻擊基礎(chǔ)上同時利用了SMT 環(huán)境下分支預(yù)測器和執(zhí)行端口共享的特征,通過構(gòu)建投機代碼重用的攻擊場景提高執(zhí)行端口沖突產(chǎn)生時間信道的準(zhǔn)確性.
針對上述SMT 環(huán)境下共享執(zhí)行端口或執(zhí)行單元的時間側(cè)信道攻擊,研究人員也提出了一些防護方法.Percival等人[8]在早期提出可以禁用SMT來防范此類攻擊,其可以徹底解決執(zhí)行單元或執(zhí)行端口雙線程共享產(chǎn)生的時間側(cè)信道問題.Hu[9]提出通過將噪聲添加到與進程相關(guān)的所有時間信息中,達到降低時序信道帶寬的目的進行防護.2019 年,Zhang 等人[10]提出了名為DDM(Demand-based Dynamic Mitigation)的防護方法,DDM 通過軟件手段動態(tài)關(guān)閉SMT 技術(shù)來達到防護目的,尚未有從處理器微架構(gòu)角度防護的案例.
SMoTherSpectre[7]在利用沖突指令時,僅僅使用了非常小的沖突窗口,增加了防護難度.本文提出了一種針對現(xiàn)代處理器SMT 環(huán)境下SMoTherSpectre 執(zhí)行端口時間信道攻擊的防護方法.主要貢獻有如下兩點:
(1)首次使用TSG 模型完成SMoTherSpectre 攻擊原理的建模并推導(dǎo)對應(yīng)的防護路徑,針對投機代碼瞬態(tài)執(zhí)行窗口的分支刷新特性基于分支指令執(zhí)行狀態(tài)設(shè)計動態(tài)調(diào)整執(zhí)行端口資源分配策略的防護方案;
(2)提出并設(shè)計了一種基于記錄分支預(yù)測錯誤刷新并動態(tài)調(diào)整執(zhí)行端口資源使用策略的SMT 環(huán)境下執(zhí)行端口時間信道防護方法,可以有效防護以SMother-Spectre 為代表的組合使用誘導(dǎo)分支預(yù)測投機執(zhí)行及執(zhí)行端口沖突的時間信道攻擊.
如圖1(a)所示[1],多核架構(gòu)下2個線程的架構(gòu)狀態(tài)和執(zhí)行資源是分開的,2個線程只通過線程間的總線進行交互.如圖1(b)所示,SMT 技術(shù)開啟后,2 個線程的架構(gòu)狀態(tài)依然是分開的,但是其會共享執(zhí)行資源,SMT技術(shù)的優(yōu)勢是可以靈活分配處理器內(nèi)部資源,使得大部分?jǐn)?shù)據(jù)結(jié)構(gòu)可以被多個線程共享且同一周期可以調(diào)度多個線程的操作同時執(zhí)行,最大化得提高資源利用率.
圖1 SMT技術(shù)特征
在超標(biāo)量處理器微架構(gòu)設(shè)計中,指令集架構(gòu)中描述的宏指令會經(jīng)過取指和譯碼的流程形成對應(yīng)的微操作.微操作在進行指令執(zhí)行前,會通過指令解析完成對應(yīng)執(zhí)行端口的綁定.在關(guān)閉SMT技術(shù)的情況下,處理器流水線內(nèi)部只有1個線程,完成端口綁定的微操作會通過對應(yīng)的端口進入執(zhí)行單元;在開啟SMT 技術(shù)的情況下,處理器解碼系統(tǒng)和亂序執(zhí)行系統(tǒng)交互過程中,因為在重命名和分配微架構(gòu)設(shè)計中約束了同一時刻只能處理來自于同一個線程的微操作,因此,每個周期也只有1個線程的微操作可以進入調(diào)度器.在調(diào)度器微架構(gòu)設(shè)計中為了更快地調(diào)度和分發(fā)微操作,其并不關(guān)心微操作的線程信息,只考慮其是否就緒(“就緒”指的是某條微操作已滿足被選擇并發(fā)射到執(zhí)行端口的條件),如果有同時就緒的微操作則年齡更老的優(yōu)先發(fā)射,因此,調(diào)度器可以同一周期向不同執(zhí)行端口發(fā)射2 個線程的微操作.
如果2 個線程在調(diào)度器內(nèi)的微操作指向同一個端口,那么由于分配時的先后關(guān)系,2 個線程的微操作會自然攜帶不同的年齡信息.調(diào)度器中有2 個關(guān)鍵數(shù)據(jù)結(jié)構(gòu),一個是年齡矩陣,另一個是就緒矩陣,雖然2個線程的微操作即使都處于就緒狀態(tài),依賴于年齡矩陣的先后關(guān)系,調(diào)度器會先發(fā)射更“老”的線程的微操作進入相應(yīng)端口,那么已經(jīng)就緒但由于較“年輕”導(dǎo)致無法發(fā)射到相同端口的另外線程的微操作就產(chǎn)生了延遲,此時就出現(xiàn)了線程間的端口沖突.
因此,某線程在特定的執(zhí)行端口下執(zhí)行指令并且度量其執(zhí)行程序的時間就可以推斷同一端口或執(zhí)行單元下另一線程的執(zhí)行情況.
TSG 模型是2020 年由普林斯頓大學(xué)He 等人[11]針對處理器微架構(gòu)側(cè)信道安全問題提出的一種新的攻擊圖模型,是一種由頂點和頂點之間的邊來形成序列的有向無環(huán)圖,示例如圖2.
圖2 TSG示例
TSG 中的頂點表示操作,例如訪問緩存行、刷新緩存行等,如示例中的頂點A,B,C,…,I;
TSG 中的有向邊(示例中帶方向箭頭的線)表示2個頂點間的依賴,如果2 個頂點u和v之間有u到v的有向邊,表示u在v之前發(fā)生,如示例中頂點A 即在頂點C之前發(fā)生;
TSG中的路徑表示連接頂點間的連續(xù)有向邊,如示例中頂點A 到頂點D 的路徑經(jīng)過2 個有向邊A->C,C->D;
TSG 中頂點的序列可以由一個帶有序列信息的頂點集合表示,示例中的其中一個有效序列S=(A,B,C,D,E,F(xiàn),G,H,I),頂點間的順序需要精確描述頂點間的依賴關(guān)系;
TSG 條件競爭指的是TSG 模型中的頂點u和v之間,如果有2個不同的有效序列S1和S2,在S1中,u在v之前,在S2中u在v之后,TSG 模型中存在條件競爭意味著缺失安全依賴性,示例中頂點D 和E 就存在條件競爭,因為存在S1=(A,B,C,D,E,F(xiàn),G,H,I),也存在S2=(A,B,C,E,D,F(xiàn),G,H,I).
TSG模型遵循如下定理:
對于任意一對頂點u和v,當(dāng)且僅當(dāng)有一條有向路徑連接u和v這2 個頂點時,頂點u和v則沒有條件競爭.
SMoTherSpectre[7]在沖突 構(gòu)建階 段使用 了Spectre[12]分支誘導(dǎo)的方式來加強沖突構(gòu)建的成功率.其使用了分支預(yù)測器投機代碼重用的攻擊場景,即混合了分支預(yù)測器資源沖突和執(zhí)行端口資源沖突這2 個微架構(gòu)組件的SMT 技術(shù)特征,具有更強的適應(yīng)性和攻擊準(zhǔn)確性.基于2.3 節(jié)的TSG 模型建立規(guī)則,利用SMT 環(huán)境下執(zhí)行端口及執(zhí)行單元進行時間信道攻擊的TSG 模型建立如下:
TSG模型頂點包括:
①連續(xù)執(zhí)行端口P/執(zhí)行單元U指令;
②踢出BTB預(yù)測項;
③條件/間接分支指令執(zhí)行;
④執(zhí)行私密操作O;
⑤調(diào)度/執(zhí)行資源沖突;
⑥分支刷新(授權(quán)檢查);
⑦度量連續(xù)執(zhí)行端口P/執(zhí)行單元U 指令執(zhí)行總時間T.
基于TSG 模型定理,要保證沒有條件競爭,需要切斷涉及條件競爭頂點的有效路徑,即上述序列1到序列4中的頂點路徑.
當(dāng)前已有的防護手段分別是采用硬件隔離、時間隔離和增加全局時間噪聲三種方式,對應(yīng)典型的防護方法有SMT 技術(shù)禁用/DDM 及修改時間度量指令,分別應(yīng)用于圖3 的①②③位置.除了已有的防護手段外,可以從頂點-執(zhí)行私密操作O(④)、頂點-調(diào)度/執(zhí)行資源沖突(⑤)和頂點-分支刷新(授權(quán)檢查)(⑥)進行防護機制設(shè)計.
圖3 SMoTherSpectre攻擊TSG模型防護方法推導(dǎo)
基于TSG 模型推導(dǎo),可以利用頂點-調(diào)度/執(zhí)行資源沖突和頂點-分支刷新(授權(quán)檢查)的執(zhí)行路徑,來形成防護方法,涉及頂點及相關(guān)防護策略如下:
④作用于頂點-執(zhí)行私密操作O,目的是當(dāng)帶有私密信息的分支指令執(zhí)行時,相對于該分支指令更年輕的操作無法產(chǎn)生時間信道.
⑤作用于頂點-調(diào)度/執(zhí)行資源沖突,目的是當(dāng)檢測到分支指令時,在調(diào)度算法和端口綁定策略上進行雙線程執(zhí)行端口和執(zhí)行資源的隔離,消除資源沖突.
⑥作用于頂點-分支刷新(授權(quán)檢查),目的是使得SMT 環(huán)境下當(dāng)一個線程調(diào)度分支指令時,首先將分支指令信息記錄下來,然后使能調(diào)度/執(zhí)行資源隔離,當(dāng)觸發(fā)分支刷新時,記錄該分支刷新的線程到對應(yīng)分支指令記錄表中;當(dāng)沒有分支刷新時,刪除該分支指令記錄表,分配對應(yīng)分支指令過濾表,分支指令過濾表維持可過濾掉的分支指令類型,命中分支指令過濾表的操作則無需使能調(diào)度/執(zhí)行資源隔離機制,提升執(zhí)行資源的利用率.
本防護設(shè)計微架構(gòu)實現(xiàn)共包含2個子模塊,分別是分支過濾器及策略修改器.分支過濾器中包含2 個核心數(shù)據(jù)結(jié)構(gòu),分別是分支過濾表和分支刷新表,分別記錄可過濾的分支操作和觸發(fā)刷新的分支操作,分支過濾器會產(chǎn)生隔離使能信號和優(yōu)先級向量傳遞給策略修改器,最后通過策略修改器進行處理器分配單元及調(diào)度器選擇邏輯的算法策略修改,消除由于執(zhí)行端口沖突產(chǎn)生的時間信道.詳細(xì)的微架構(gòu)示意圖如圖4所示.
圖4 防護設(shè)計微架構(gòu)圖
本文使用Gem5[13]模擬一個高性能多執(zhí)行端口的超標(biāo)量處理器作為本文防護方法的防護有效性和性能開銷的評估平臺.
對于防護有效性評估,選用SMoTherSpectre 攻擊中的POC 代碼片段,在不同沖突指令的規(guī)模量級下進行度量時間的比較.
對于性能評估,選用SPEC CPU 2006 INT測試集[14]的7 個測試程序作為性能評估的參考主要評估防護方法對性能的影響以及同關(guān)閉SMT 技術(shù)產(chǎn)生的性能影響進行對比(注:測試集共12 個測試程序,有5 個測試程序在Gem5模擬器中運行異常).
對于硬件開銷的評估,使用華力HLMC 40GP 工藝進行防護方法的硬件開銷評估,主要包含面積及時序.
圖5 中的SMTwC 和SMTwoC 分別代表了SMT 環(huán)境下出現(xiàn)指令端口沖突的執(zhí)行時間和無指令端口沖突的執(zhí)行時間,呈現(xiàn)非常明顯的差別且隨著量級增長呈線性趨勢.圖中的SMTwDwC和SMTwDwoC分別代表了使能防護機制的SMT 環(huán)境下出現(xiàn)指令端口沖突的執(zhí)行時間和無指令端口沖突的執(zhí)行時間,基于動態(tài)分支過濾的SMT 執(zhí)行端口時間信道防護方法可以達到禁用或動態(tài)關(guān)閉SMT技術(shù)的防護效果.
圖5 防護效果評估
由圖6 看出,使用本防護設(shè)計后SPEC CPU 2006 INT 測試集測試出的執(zhí)行性能相比于開啟SMT 技術(shù)平均下降8.6%,僅為關(guān)閉SMT技術(shù)性能下降比例的22%.其中性能下降最明顯的是471,相比開啟SMT技術(shù)性能下降比例為50.86%,不包括471 的其他6 個SPEC CPU 2006 INT 測試程序平均下降比例為1.6%.在471 的程序特征下,開啟防護機制后性能比關(guān)閉SMT 技術(shù)要差,其他程序均優(yōu)于關(guān)閉SMT 技術(shù),且以462 和473 為代表的測試程序在增加防護設(shè)計后性能沒有下降,基本和開啟SMT技術(shù)持平.
圖6 性能對比
本防護機制使用Verilog 語言進行RTL 實現(xiàn).然后使用HLMC 40GP 工藝和ASIC 設(shè)計流程和工具進行面積和時序的評估.
使用DC-Compiler 工具,設(shè)置時鐘約束為2 GHz,clk_uncertainty 參數(shù)為100 ps.本防護設(shè)計的時序和面積數(shù)據(jù)如表1所示.
表1 硬件開銷評估
為了進行面積和時序的對比,使用DC-Compiler 工具在相同的設(shè)置和約束下分析了6 端口整型執(zhí)行單元的整體面積約為302 979 μm2,本防護設(shè)計單元的面積為其24.7%,開銷可控.
本文使用TSG 模型對SMoTherSpectre 攻擊路徑和特征進行描述,通過建模進一步推導(dǎo)SMT 執(zhí)行端口共享時間信道攻擊的微架構(gòu)防護手段可以為防護方案的設(shè)計提供有效的理論依據(jù).
本文提出的基于動態(tài)分支過濾并進行資源調(diào)整的SMT 執(zhí)行端口時間信道安全防護方法通過在處理器微架構(gòu)級別對端口綁定和調(diào)度算法進行防護設(shè)計,記錄分支預(yù)測錯誤刷新以及正常執(zhí)行狀態(tài)實時調(diào)整執(zhí)行端口資源使用策略,達到防護SMoTherSpectre 攻擊的目的.