• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      緩存?zhèn)刃诺拦襞c防御

      2023-01-30 10:23:56張偉娟凌雨卿賈曉啟
      關(guān)鍵詞:攻擊者進(jìn)程內(nèi)存

      張偉娟 白 璐 凌雨卿 蘭 曉 賈曉啟

      1 (中國(guó)科學(xué)院信息工程研究所 北京 100093)

      2 (中國(guó)科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 北京 100049)

      3 (四川大學(xué)網(wǎng)絡(luò)空間安全研究院 成都 610207)(zhangweijuan@iie.ac.cn)

      近年來(lái),信息安全越來(lái)越引起人們的重視.傳統(tǒng)的信息竊取技術(shù)通常從軟件系統(tǒng)實(shí)現(xiàn)漏洞入手,結(jié)合特定攻擊手段,對(duì)目標(biāo)用戶敏感信息(如密鑰、口令等)進(jìn)行竊取.然而,這類攻擊方式隨著軟件系統(tǒng)的更新有著時(shí)效性差、易防御等特性.相比之下,從物理信道中提取信息的側(cè)信道攻擊(side-channel attack,SCA)技術(shù)[1]通常基于設(shè)備物理架構(gòu)特點(diǎn)實(shí)現(xiàn),具有攻擊信道多樣、難以防御等特點(diǎn),逐漸成為信息安全領(lǐng)域的研究熱點(diǎn).

      側(cè)信道攻擊技術(shù)最初針對(duì)加密設(shè)備提出,利用設(shè)備不同加密操作產(chǎn)生的時(shí)間差異、功率消耗差異或電磁輻射差異構(gòu)造側(cè)信道,對(duì)加密設(shè)備進(jìn)行攻擊,推測(cè)密鑰信息.之后,研究者將這種基于加密操作執(zhí)行差異構(gòu)造側(cè)信道,獲取密鑰信息的思想應(yīng)用在處理器緩存,提出了緩存?zhèn)刃诺拦艏夹g(shù).緩存作為處理器微結(jié)構(gòu)的硬件組件,為不同進(jìn)程所共享,給攻擊創(chuàng)造了條件.利用緩存構(gòu)造的側(cè)信道攻擊巧妙且難以防御,其安全風(fēng)險(xiǎn)廣泛存在于普通用戶個(gè)人電腦及運(yùn)營(yíng)商服務(wù)器,被工業(yè)界和學(xué)術(shù)界廣泛關(guān)注和研究.

      緩存?zhèn)刃诺拦艏夹g(shù)一般分為時(shí)序驅(qū)動(dòng)(timedriven)緩存攻擊、蹤跡驅(qū)動(dòng)(trace-driven)緩存攻擊和訪問(wèn)驅(qū)動(dòng)(access-driven)緩存攻擊[2].時(shí)序驅(qū)動(dòng)緩存攻擊[1,3-5]依據(jù)執(zhí)行加解密操作所消耗的時(shí)間差異來(lái)獲取用戶信息,實(shí)現(xiàn)密鑰恢復(fù).蹤跡驅(qū)動(dòng)緩存攻擊[6]依據(jù)用戶執(zhí)行某個(gè)操作的能量消耗來(lái)推斷用戶信息,如攻擊者通過(guò)度量電量獲取用戶進(jìn)程的緩存命中與未命中的訪問(wèn)序列,從而獲取用戶敏感數(shù)據(jù).訪問(wèn)驅(qū)動(dòng)緩存攻擊[7-11]依靠用戶訪問(wèn)緩存時(shí)留下的訪問(wèn)位置痕跡獲取用戶信息,攻擊者通過(guò)訪問(wèn)與用戶共享的緩存來(lái)構(gòu)造信道,通常為借助一個(gè)攻擊進(jìn)程探測(cè)用戶進(jìn)程在加解密操作執(zhí)行前后對(duì)緩存特定位置訪問(wèn)情況,進(jìn)而恢復(fù)密鑰.在這3類攻擊中,時(shí)序驅(qū)動(dòng)緩存攻擊的研究主要針對(duì)早期加密硬件;蹤跡驅(qū)動(dòng)緩存攻擊通常需要一些物理接觸來(lái)獲取電量等數(shù)據(jù),攻擊條件嚴(yán)格受限,難以進(jìn)行遠(yuǎn)程攻擊;訪問(wèn)驅(qū)動(dòng)緩存攻擊基于用戶進(jìn)程對(duì)緩存的訪問(wèn)蹤跡實(shí)現(xiàn),攻擊粒度較細(xì),攻擊條件較靈活,且近年來(lái)出現(xiàn)了很多新型攻擊,是緩存?zhèn)刃诺拦粞芯康闹髁骱蜔狳c(diǎn).

      隨著緩存?zhèn)刃诺拦舻陌l(fā)展,其逐漸呈現(xiàn)攻擊場(chǎng)景復(fù)雜化、攻擊層次細(xì)致化、攻擊目標(biāo)多樣化和攻擊原理精巧化的趨勢(shì).在攻擊場(chǎng)景方面,從最初的處理器單核心攻擊發(fā)展到跨核心,從單機(jī)環(huán)境延伸到云環(huán)境,從單純針對(duì)緩存硬件的攻擊到利用新的硬件特性及安全機(jī)制進(jìn)行攻擊;在攻擊實(shí)現(xiàn)層次上,隨著CPU的更新?lián)Q代從開(kāi)始的基于L1緩存的攻擊發(fā)展到針對(duì)L1、L2、最后一級(jí)緩存(last level cache,LLC),甚至基于轉(zhuǎn)址旁路緩存(translation lookaside buffer, TLB)等的攻擊;在攻擊目標(biāo)上,從單純的密鑰提取擴(kuò)展到對(duì)關(guān)鍵內(nèi)存、鏈接、口令甚至隨機(jī)數(shù)的提??;在攻擊原理方面更是多種多樣,目前出現(xiàn)的典型攻擊及其變種多達(dá)數(shù)十種.本文對(duì)緩存?zhèn)刃诺拦粞芯窟M(jìn)展進(jìn)行追蹤,并在攻擊場(chǎng)景、攻擊層次、攻擊目標(biāo)和攻擊原理方面做了系統(tǒng)分析.

      在緩存?zhèn)刃诺拦舴烙矫?,本文從攻擊防御的不同階段出發(fā),分析了攻擊檢測(cè)和防御實(shí)施2部分研究工作.在防御實(shí)施階段,按照不同防御技術(shù)原理,分別從緩存隔離、緩存訪問(wèn)隨機(jī)化、緩存計(jì)時(shí)破壞、漏洞分析與修復(fù)等方面進(jìn)行了防御技術(shù)的歸納總結(jié).

      本文接下來(lái)首先對(duì)攻擊中利用的CPU緩存等組件工作原理予以介紹,并對(duì)信息系統(tǒng)中的緩存?zhèn)刃诺拦麸L(fēng)險(xiǎn)進(jìn)行分析;其次對(duì)緩存?zhèn)刃诺拦暨M(jìn)行分類,從攻擊場(chǎng)景、攻擊層次、攻擊目標(biāo)和攻擊原理方面對(duì)緩存?zhèn)刃诺拦暨M(jìn)行系統(tǒng)分析;再次根據(jù)防御原理對(duì)緩存?zhèn)刃诺拦舻姆烙椒ㄟM(jìn)行介紹;最后提出緩存?zhèn)刃诺拦襞c防御技術(shù)未來(lái)可能的研究方向,并對(duì)全文進(jìn)行總結(jié).

      1 緩存?zhèn)刃诺拦舻那爸脝?wèn)題分析

      1.1 緩存的組成及特性分析

      為充分理解緩存?zhèn)刃诺拦粼?,本部分首先?duì)緩存的組成、特性及工作機(jī)制進(jìn)行介紹.以x86架構(gòu)為例[12],最早的緩存只有L1緩存,L1緩存的訪問(wèn)速度與寄存器接近.隨著CPU性能的進(jìn)一步提升,在L1緩存與主存間逐漸引入了更大的L2和L3緩存,其中L3緩存又稱為L(zhǎng)LC.L1緩存根據(jù)緩存內(nèi)容又分為數(shù)據(jù)緩存和指令緩存,數(shù)據(jù)和指令都具有的緩存則稱為聯(lián)合緩存.在現(xiàn)代計(jì)算機(jī)系統(tǒng)中緩存結(jié)構(gòu)如圖1 所示.

      緩存的映射方式為3種:直接映射緩存、全相聯(lián)映射緩存和多路組相聯(lián)映射緩存,這3種方式各有優(yōu)勢(shì).現(xiàn)代系統(tǒng)出于功性能的綜合考慮,一般采取多路組相聯(lián)映射緩存設(shè)計(jì).如圖2 所示,多路組相聯(lián)映射緩存首先被分為s個(gè)組,每組包含n路緩存,也稱作n個(gè)緩存行.內(nèi)存數(shù)據(jù)以地址為索引分別映射到不同緩存組中,系統(tǒng)根據(jù)緩存組的使用情況選擇具體映射在哪個(gè)緩存行.由圖2可以看出,不同內(nèi)存數(shù)據(jù)可能會(huì)映射在相同的緩存組中,當(dāng)該緩存組所有緩存行都被占用時(shí),下次CPU訪問(wèn)的數(shù)據(jù)要映射在此緩存組時(shí),就會(huì)發(fā)生緩存行的換出.

      Fig.1 Cache architectures圖1 緩存架構(gòu)

      此外,還有一類較為特殊的緩存—TLB,它用來(lái)緩存虛擬地址到物理地址的轉(zhuǎn)換,由硬件內(nèi)存管理單元(memory management unit, MMU)所管理.在Intel架構(gòu)處理器中,TLB也分為2級(jí)緩存.當(dāng)攻擊者與用戶共享TLB時(shí),攻擊者同樣可進(jìn)行側(cè)信道攻擊[1,13].

      Fig.2 Multi-way set-associative mapping cache structure圖2 多路組相聯(lián)映射緩存結(jié)構(gòu)

      1.2 緩存?zhèn)刃诺拦麸L(fēng)險(xiǎn)分析

      信息系統(tǒng)中存在的緩存?zhèn)刃诺拦麸L(fēng)險(xiǎn)主要體現(xiàn)在3個(gè)方面:

      1)緩存狀態(tài)可探測(cè)

      信息系統(tǒng)中攻擊進(jìn)程可以通過(guò)特定方式對(duì)緩存狀態(tài)進(jìn)行探測(cè).首先,由于硬件設(shè)計(jì)上的特性,緩存在不同進(jìn)程之間共享,且緩存的分配和映射有一定規(guī)律,攻擊者可以利用這些規(guī)律設(shè)計(jì)實(shí)現(xiàn)有效的緩存監(jiān)測(cè)方案.其次,程序在訪問(wèn)各級(jí)緩存及內(nèi)存時(shí)訪問(wèn)時(shí)間存在一定差異,通過(guò)訪問(wèn)時(shí)間差異可推斷緩存命中與否,從而監(jiān)控緩存的使用情況.最后,還可以基于其他硬件特性,如事務(wù)同步擴(kuò)展(transactional synchronization extensions, TSX)對(duì)緩存進(jìn)行監(jiān)測(cè).TSX事務(wù)性內(nèi)存的原子特性決定了當(dāng)TSX事務(wù)中讀取的緩存行被從緩存中驅(qū)逐時(shí),會(huì)引發(fā)事務(wù)中止.一旦中止發(fā)生,就意味著有其他進(jìn)程訪問(wèn)該緩存行[14].攻擊者可以利用這一特性監(jiān)控目標(biāo)進(jìn)程對(duì)特定緩存的使用狀況,進(jìn)而進(jìn)一步提取信息.緩存狀態(tài)可探測(cè)是構(gòu)建緩存?zhèn)刃诺赖母?

      2)可利用的硬件結(jié)構(gòu)特性

      緩存?zhèn)刃诺拦舻膶?shí)施通常會(huì)借助硬件或軟件設(shè)計(jì)的特性,結(jié)合構(gòu)造的緩存?zhèn)刃诺纴?lái)進(jìn)行信息提取.在硬件特性方面最典型的為微體系結(jié)構(gòu)特性中的CPU亂序執(zhí)行和CPU分支預(yù)測(cè)執(zhí)行,這2個(gè)執(zhí)行的代表性攻擊為Meltdown[15]和Spectre[16].CPU亂序執(zhí)行時(shí)允許在錯(cuò)誤指令的未授權(quán)結(jié)果上進(jìn)行計(jì)算,Meltdown攻擊利用這點(diǎn)來(lái)暫時(shí)繞過(guò)硬件安全策略,從而泄露敏感數(shù)據(jù).Spectre攻擊則利用CPU分支預(yù)測(cè)執(zhí)行的特性,通過(guò)反復(fù)訓(xùn)練引導(dǎo)目標(biāo)進(jìn)程執(zhí)行特定的路徑,暫時(shí)繞過(guò)軟件定義的安全策略(邊界檢查、內(nèi)存存儲(chǔ)等),進(jìn)而泄露機(jī)密信息.這2類攻擊后續(xù)衍生出大量的變種[17-21],均基于微體系結(jié)構(gòu)特性構(gòu)建.

      3)可利用的程序設(shè)計(jì)特點(diǎn)

      在信息系統(tǒng)軟件特性利用方面,攻擊者通常需要對(duì)密碼算法、敏感程序在設(shè)計(jì)實(shí)現(xiàn)上具有的緩存訪問(wèn)特征進(jìn)行分析,進(jìn)而設(shè)計(jì)和構(gòu)造側(cè)信道攻擊方法.以密碼算法實(shí)現(xiàn)為例,針對(duì)非對(duì)稱密碼算法RSA的攻擊可基于緩存狀態(tài)對(duì)其函數(shù)調(diào)用序列進(jìn)行監(jiān)控.RSA算法的實(shí)現(xiàn)主要為模冪運(yùn)算,加解密進(jìn)程在執(zhí)行時(shí)會(huì)基于密鑰的比特位將模冪運(yùn)算分解為“平方—乘”或“平方—乘—?!恕辈僮?Yarom等人[22]提出的攻擊中通過(guò)逆向OpenSSL二進(jìn)制文件,找到了其平方/平方乘操作代碼分別對(duì)應(yīng)的內(nèi)存地址,利用Flush-Reload[11]方法對(duì)加密算法的操作地址進(jìn)行緩存探測(cè),結(jié)合緩存命中與未命中的時(shí)間分析推斷目標(biāo)的具體操作.

      綜上,在緩存共享的前提下,攻擊者可以結(jié)合軟硬件特性進(jìn)行巧妙地構(gòu)思,實(shí)現(xiàn)多種場(chǎng)景下的緩存?zhèn)刃诺拦?隨著信息系統(tǒng)的不斷發(fā)展,其引入的緩存?zhèn)刃诺拦麸L(fēng)險(xiǎn)也在不斷變化.

      2 緩存?zhèn)刃诺拦粞芯楷F(xiàn)狀與分類

      本節(jié)從緩存?zhèn)刃诺拦舻膱?chǎng)景變化、實(shí)現(xiàn)層次、攻擊目標(biāo)和攻擊原理4個(gè)方面對(duì)近年來(lái)的研究工作進(jìn)行分類介紹.

      2.1 緩存?zhèn)刃诺拦舻膱?chǎng)景變化

      緩存?zhèn)刃诺拦羰荘age[23]在2002年提出,這一研究是對(duì)Kelsey等人[24]在1998年提出的利用加密算法實(shí)現(xiàn)特點(diǎn)構(gòu)造側(cè)信道獲取用戶密鑰這一想法的擴(kuò)展.在此之前,利用側(cè)信道攻擊獲取密鑰的想法被認(rèn)為理論性強(qiáng)于可操作性,并且難以實(shí)際應(yīng)用,可以說(shuō)是處于萌芽階段.

      緩存攻擊的早期研究工作主要集中于單機(jī)環(huán)境.在CPU單核心時(shí)代,同步多線程技術(shù)的出現(xiàn)使得緩存攻擊具有了較強(qiáng)的可操作性[9].后續(xù)隨著CPU架構(gòu)的發(fā)展,CPU開(kāi)始出現(xiàn)多核心和多級(jí)緩存,緩存?zhèn)刃诺拦粢矎囊婚_(kāi)始的L1逐漸擴(kuò)展到L2,L3,并出現(xiàn)跨核心的緩存攻擊.隨著計(jì)算機(jī)硬件架構(gòu)的復(fù)雜化,基于TLB,MMU等模塊的緩存攻擊也逐漸出現(xiàn).此外,緩存?zhèn)刃诺拦暨€呈現(xiàn)多平臺(tái)化,如針對(duì)AMD,ARM架構(gòu)[4]的攻擊.2016年,Irazoqui等人[25]提出了跨CPU的細(xì)粒度緩存攻擊,在AMD Opteron處理器和ARM架構(gòu)處理器上實(shí)現(xiàn)緩存?zhèn)刃诺拦?同年,Lipp等人[26]提出針對(duì)移動(dòng)端設(shè)備的緩存攻擊ARMageddon.

      隨著虛擬化技術(shù)的發(fā)展,云計(jì)算應(yīng)用領(lǐng)域的興起,出現(xiàn)了針對(duì)虛擬化和云環(huán)境的緩存?zhèn)刃诺拦粞芯?2009年,Ristenpart等人[10]提出了在云環(huán)境下跨虛擬機(jī)的側(cè)信道攻擊方法,并以Amazon EC2云平臺(tái)為研究對(duì)象進(jìn)行了實(shí)驗(yàn).Ristenpart提出的跨虛擬機(jī)緩存?zhèn)刃诺拦衾肞rime-Probe攻擊方法來(lái)探測(cè)EC2實(shí)例的緩存使用情況.在這項(xiàng)工作中,攻擊者獲取信息的粒度較粗,只能獲取到目標(biāo)虛擬機(jī)的緩存使用概況,推測(cè)出鍵盤(pán)按鍵信息,攻擊效果還不足以從中獲取密鑰等信息.2012年Zhang等人[7]對(duì)跨虛擬機(jī)訪問(wèn)驅(qū)動(dòng)型緩存?zhèn)刃诺拦舻臉?gòu)成及實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析,且在攻擊者與目標(biāo)同駐條件下能夠達(dá)到細(xì)粒度的信息獲取,分析出目標(biāo)的完整私鑰.

      此外,還有一些緩存?zhèn)刃诺拦翎槍?duì)可信環(huán)境,如軟件保護(hù)擴(kuò)展(software guard extensions, SGX)[27]展開(kāi).SGX的攻擊面較小,這種攻擊通常需要很強(qiáng)的攻擊模型,如具有操作系統(tǒng)特權(quán)級(jí)的控制.一些傳統(tǒng)緩存?zhèn)刃诺拦舴椒ㄔ赟GX環(huán)境同樣有效[28-31],這些攻擊需要的攻擊條件非??量?,其假設(shè)為攻擊者可以控制整個(gè)系統(tǒng)資源進(jìn)行攻擊.有研究者將Prime-Probe緩存攻擊方法應(yīng)用于SGX環(huán)境,在CPU配置開(kāi)啟超線程使攻擊者與目標(biāo)Enclave①SGX允許應(yīng)用程序初始化一個(gè)Enclave,Enclave是一塊硬件隔離的可信內(nèi)存區(qū)域,可以為應(yīng)用程序的敏感部分提供硬件增強(qiáng)的機(jī)密性和完整性保護(hù),實(shí)現(xiàn)不同程序間的隔離運(yùn)行。進(jìn)程運(yùn)行在同一核心并共享緩存,在此基礎(chǔ)上結(jié)合操作系統(tǒng)提供的中斷服務(wù)實(shí)現(xiàn)與目標(biāo)進(jìn)程的同步,攻擊者結(jié)合以上攻擊條件獲取加密程序的密鑰.另外還有利用Pagefault[32]中斷構(gòu)造側(cè)信道,對(duì)運(yùn)行在不可信操作系統(tǒng)但認(rèn)為硬件及虛擬化層可信的內(nèi)存隔離環(huán)境進(jìn)行攻擊,攻擊可以獲取目標(biāo)環(huán)境的文本及圖片信息.之后,Bulck等人[33]在此基礎(chǔ)上又提出一種更加隱蔽的方法,能夠不依賴于Page-fault獲得Enclave所訪問(wèn)的頁(yè)面信息.Lee等人[34]提出一個(gè)利用CPU分支預(yù)測(cè)單元構(gòu)造側(cè)信道攻擊的方法Branch Shadowing.Schwarz等人[29]則從另一個(gè)角度出發(fā),認(rèn)為若惡意軟件利用SGX為Enclave提供的安全隔離機(jī)制,將攻擊行為隱藏在惡意Enclave中,則可以構(gòu)造更加隱蔽的Enclave-Enclave之間的攻擊.多項(xiàng)研究工作表明,在TLB到動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dynamic RAM,DRAM)范圍都存在對(duì)SGX的側(cè)信道攻擊的潛在攻擊向量[35-40].攻擊者可以利用 TLB、行填充緩沖區(qū)(line fill buffer, LFB)、頁(yè)表項(xiàng)(page table entry,PTE)、page屬性位等機(jī)制構(gòu)建側(cè)信道,實(shí)現(xiàn)較為隱蔽的攻擊.

      研究者在SGX環(huán)境下對(duì)CPU指令特性也進(jìn)行了深入的挖掘與利用,F(xiàn)oreshadow[41]和SgxPectre[42]分別是在SGX環(huán)境下利用Meltdown和Spectre漏洞的攻擊變種.這些研究工作從另一方面也說(shuō)明,即使是在具有很強(qiáng)安全隔離的可信環(huán)境中依然無(wú)法避免緩存?zhèn)刃诺拦?

      2.2 緩存?zhèn)刃诺拦舻膶?shí)現(xiàn)層次

      對(duì)于CPU核心內(nèi)部的L1和L2級(jí)緩存攻擊而言,攻擊者與目標(biāo)運(yùn)行于同一核心,這類攻擊主要利用Intel在2002年提出的超線程技術(shù)(hyper threading)實(shí)現(xiàn).超線程技術(shù)使得單核心處理器允許同時(shí)執(zhí)行2個(gè)線程,提高了處理器的效率.2個(gè)線程若共享某計(jì)算或存儲(chǔ)資源時(shí)會(huì)產(chǎn)生資源爭(zhēng)用,攻擊者通過(guò)與目標(biāo)進(jìn)程爭(zhēng)用L1,L2緩存而實(shí)現(xiàn)攻擊.在能夠利用L3緩存實(shí)現(xiàn)攻擊之前,緩存?zhèn)刃诺拦舻难芯恐饕杏诶肔1緩存(I-cache和D-cache),而L2緩存與L1緩存在容量和速度上差異不大,研究相對(duì)較少[10].

      I-cache是L1緩存中負(fù)責(zé)存儲(chǔ)處理器最近所執(zhí)行指令的組件,Acii?mez[43]表明其可利用I-cache恢復(fù)RSA算法的1 024 b密鑰, 實(shí)現(xiàn)對(duì)OpenSSL (version 0.9.8d)的攻擊.Acii?mez使用的緩存探測(cè)方法是Prime-Probe,先用空指令占滿指令緩存繼而探測(cè)緩存使用情況恢復(fù)密鑰.此后,又相繼出現(xiàn)了對(duì)OpenSSL 不同實(shí)現(xiàn)方法的I-cache層面緩存攻擊[44-45].

      D-cache在L1緩存中負(fù)責(zé)存儲(chǔ)最近處理的數(shù)據(jù),因而也常被攻擊者利用進(jìn)行敏感信息的恢復(fù).如利用D-cache恢復(fù)同駐于同一核心的進(jìn)程信息[9].2006年,Osvik等人[8]提出利用L1 D-cache的Prime-Probe和Evict-Time攻擊方法,實(shí)現(xiàn)了針對(duì)AES的密鑰恢復(fù).同年,Neve等人[46]通過(guò)操作系統(tǒng)調(diào)度在單線程處理器上實(shí)現(xiàn)L1 D-cache側(cè)信道攻擊.2011年,Cache games[11]針對(duì)L1緩存,利用中斷在同核心實(shí)現(xiàn)攻擊者與OpenSSL AES加密線程同步恢復(fù)密鑰的緩存?zhèn)刃诺拦?2012年,Zhang等人[7]使用L1數(shù)據(jù)緩存實(shí)現(xiàn)了跨虛擬機(jī)的攻擊,在實(shí)驗(yàn)環(huán)境跨虛擬機(jī)獲取ElGamal解密密鑰.

      由于L1 I-cache或D-cache為單核心所有,攻擊者與目標(biāo)同駐于同一核心比較困難,一定程度上限制了攻擊的實(shí)際應(yīng)用效果.隨著基于L3的緩存?zhèn)刃诺拦舻某霈F(xiàn),攻擊逐漸具有實(shí)際效果.2014年,Yarom等人[22]提出Flush-Reload攻擊方法,該方法利用了LLC和內(nèi)存頁(yè)的共享,攻擊可跨進(jìn)程、CPU核心和虛擬機(jī)獲取泄露的信息,且攻擊粒度細(xì),可以監(jiān)控到單個(gè)內(nèi)存行.隨后,F(xiàn)lush-Reload攻擊方法被擴(kuò)展應(yīng)用到對(duì)其他加密算法的攻擊[47-48]和在云環(huán)境中跨虛擬機(jī)(VM)的攻擊[49-51],更進(jìn)一步還有研究者將該攻擊方法擴(kuò)展到ARM處理器[26,52]和瀏覽器[53]中.2015年,Liu等人[54]提出了一種針對(duì)L3緩存的Prime-Probe側(cè)信道攻擊方法,這一方法能夠獲取較高的攻擊分辨率,且能夠在跨核及跨虛擬機(jī)環(huán)境下進(jìn)行攻擊.Gruss等人[55]提出緩存模板攻擊,可自動(dòng)分析和利用任何程序中基于緩存的信息泄露.2016年,Kayaalp等人[56]提出一種高分辨率的LLC側(cè)信道攻擊,與Flush+Reload相比,使用限制條件較少.

      2017年,Gras等人[57]針對(duì)MMU執(zhí)行的虛擬地址轉(zhuǎn)換進(jìn)行攻擊,提出一個(gè)新的Evict-Time緩存攻擊AnC.這種攻擊方法利用在虛擬地址翻譯中會(huì)查找頁(yè)表并將其緩存在共享緩存中的實(shí)現(xiàn)特點(diǎn),在目標(biāo)MMU查找頁(yè)表后推斷目標(biāo)所訪問(wèn)的緩存組從而獲取信息.AnC是首個(gè)針對(duì)硬件組件MMU的攻擊方法,其攻擊場(chǎng)景是構(gòu)造惡意JavaScript代碼獲取瀏覽器的地址空間.與之類似,Schaik等人[58]在2018年提出了一種基于MMU進(jìn)行間接緩存攻擊的方法,攻擊者利用MMU在進(jìn)行地址轉(zhuǎn)換操作時(shí)會(huì)將頁(yè)表的部分信息緩存在固定緩存組中的特性,結(jié)合Evict-Time、Prime-Probe攻擊原理設(shè)計(jì)了新型攻擊,這種間接攻擊方法可以繞過(guò)基于緩存隔離的防御方法.

      2018年,Gras等人[13]提出了基于TLBs的攻擊方法TLBleed.這一方法通過(guò)逆向Intel處理器地址映射函數(shù),并結(jié)合機(jī)器學(xué)習(xí)的方法實(shí)現(xiàn).該方法表明即使用戶采用一些防御緩存?zhèn)刃诺拦舻姆椒?,如CAT(cache allocation technology),但攻擊者仍可以通過(guò)TLB-leed攻擊探測(cè)細(xì)粒度的目標(biāo)信息.因?yàn)門(mén)LB緩存為每個(gè)核心所獨(dú)有,攻擊需攻擊者與目標(biāo)同駐于1個(gè)核心,當(dāng)攻擊者與目標(biāo)共享1個(gè)核心時(shí)可利用共享的TLB構(gòu)建側(cè)信道進(jìn)行攻擊.2019年,Canella等人[59]發(fā)現(xiàn)了新的TLB側(cè)信道——Store-to-Leak ,并提出利用該側(cè)信道的Fallout攻擊.實(shí)驗(yàn)證明,F(xiàn)allout可破壞內(nèi)核地址空間布局隨機(jī)化,泄露由操作系統(tǒng)內(nèi)核寫(xiě)入內(nèi)存的敏感數(shù)據(jù).2020年,Schaik等人提出CacheOut[39]攻擊,并針對(duì)SGX環(huán)境進(jìn)行改進(jìn)提出SGAxe[40]攻擊.CacheOut攻擊利用TLB與L1數(shù)據(jù)緩存之間的隱藏交互行為,克服了以往微體系結(jié)構(gòu)數(shù)據(jù)采樣(microarchitectural data sampling, MDS)攻擊在控制和可用性上的限制.攻擊者可利用此新漏洞來(lái)選擇要泄露的數(shù)據(jù),而不必等待數(shù)據(jù)可用,同時(shí)還可控制泄露地址.

      隨著計(jì)算機(jī)技術(shù)的發(fā)展,現(xiàn)代計(jì)算機(jī)系統(tǒng)單個(gè)處理器擁有核心的數(shù)量在增加,單個(gè)系統(tǒng)擁有的處理器數(shù)量也在增加,即使是移動(dòng)平臺(tái)也常常擁有至少2個(gè)單獨(dú)的處理器.2016年,Irazoqui[25]提出了跨CPU的細(xì)粒度緩存攻擊,該方法基于現(xiàn)代處理器和多處理器系統(tǒng)緩存一致性協(xié)議來(lái)實(shí)現(xiàn)側(cè)信道攻擊,不依靠特定的緩存結(jié)構(gòu),可以達(dá)到恢復(fù)AES和ElGamal密鑰的攻擊效果.

      綜上,隨著CPU和攻擊場(chǎng)景的變化,緩存?zhèn)刃诺拦舻膶?shí)現(xiàn)近年來(lái)有從基于傳統(tǒng)的L1/L2,L3級(jí)緩存向TLB,MMU等更小的緩存單元甚至跨CPU發(fā)展的趨勢(shì),攻擊層次逐漸多樣化,圖3對(duì)緩存?zhèn)刃诺拦魣?chǎng)景和攻擊實(shí)現(xiàn)層次變化進(jìn)行了總結(jié).

      民族唱法美聲化,美聲唱法民族化,是中西文化相互融合、互相影響的結(jié)果,也是我國(guó)聲樂(lè)教育發(fā)展取得的一大成果。這種“洋為中用”的做法使得我國(guó)聲樂(lè)更加成熟化、科學(xué)化、國(guó)際化。這樣在保留自己本民族特點(diǎn)的基礎(chǔ)上進(jìn)行學(xué)習(xí)、借鑒、改革對(duì)于我國(guó)民族聲樂(lè)的發(fā)展,具有很重要的意義。

      Fig.3 The development of scenarios and levels of cache side-channel attacks圖3 緩存?zhèn)刃诺拦魣?chǎng)景和層次的發(fā)展

      2.3 緩存?zhèn)刃诺拦舻哪繕?biāo)

      緩存攻擊的目的通常為探測(cè)和信息竊取,攻擊的目標(biāo)多為包含敏感信息的程序或系統(tǒng)模塊,如含密碼算法的程序或加密庫(kù)、用戶名/口令文件、關(guān)鍵內(nèi)存、目標(biāo)系統(tǒng)運(yùn)行情況等.本節(jié)對(duì)緩存?zhèn)刃诺拦絷P(guān)注的攻擊目標(biāo)做歸納總結(jié),為針對(duì)緩存攻擊的系統(tǒng)安全性提升提供參考.

      1)含密碼算法的程序或加密庫(kù)

      緩存?zhèn)刃诺拦舻淖畹湫偷墓裟康氖翘崛〖咏饷苓^(guò)程中的密鑰,因此最常見(jiàn)的攻擊目標(biāo)為包含密碼算法的程序或加密庫(kù),如OpenSSL,GnuPG,GnuTLS,Libcrypt,CyaSSL,MatrixSSL,PolarSSL 等.密碼算法通常可分為2類,即對(duì)稱密碼和非對(duì)稱密碼.對(duì)稱密碼算法的加密過(guò)程和解密過(guò)程均采用同一密鑰,且加解密過(guò)程是“對(duì)稱”的,典型的算法有AES,DES等.研究人員實(shí)現(xiàn)了針對(duì)AES的緩存?zhèn)刃诺拦舻萚61]、針對(duì)OpenSSL中AES密鑰的提取[8,62-63]攻擊等.非對(duì)稱密碼算法又稱公鑰密碼算法,采用公私鑰對(duì)將加密和解密功能分開(kāi),主要用途為加密和簽名,典型的算法有RSA、橢圓曲線等.研究人員實(shí)現(xiàn)了對(duì)GnuPG中RSA密鑰的提取[22,64]、Libcrypt中ElGamal解密密鑰提取[4]、OpenSSL中ECDSA簽名破解[48]等.

      2)用戶名/口令文件

      文獻(xiàn)[49]中提到借助Flush-Reload緩存?zhèn)刃诺拦舴椒?,?shí)現(xiàn)基于密碼重置方式的用戶賬號(hào)竊取、購(gòu)物車(chē)信息竊取等.RIDL[37]是一類新的預(yù)測(cè)執(zhí)行攻擊,可以跨地址空間和特權(quán)邊界泄露任意數(shù)據(jù),其中包括跨虛擬機(jī)邊界.攻擊者通過(guò)反復(fù)嘗試用SSH進(jìn)行身份驗(yàn)證,結(jié)合Flush-Reload攻擊方法提取目標(biāo)虛擬機(jī)/etc/shadow文件,進(jìn)而提取用戶口令.

      3)關(guān)鍵內(nèi)存數(shù)據(jù)

      Meltdown[15]攻擊利用現(xiàn)代處理器亂序執(zhí)行漏洞,結(jié)合Flush-Reload緩存?zhèn)刃诺拦舴椒▽?shí)現(xiàn)任意內(nèi)核內(nèi)存的讀取.Spectre[16]攻擊基于分支預(yù)測(cè)執(zhí)行技術(shù)實(shí)現(xiàn)對(duì)應(yīng)用程序間隔離性的破壞,使攻擊程序有機(jī)會(huì)訪問(wèn)到其他應(yīng)用程序所使用的內(nèi)存空間.研究人員還實(shí)現(xiàn)了繞過(guò)地址空間布局隨機(jī)化機(jī)制對(duì)內(nèi)存地址空間布局進(jìn)行推測(cè)[59,65].如文獻(xiàn)[66]設(shè)計(jì)的攻擊方法,可以在攻擊者進(jìn)程或是用戶級(jí)目標(biāo)進(jìn)程的分支指令間利用分支目標(biāo)緩沖區(qū)(branch target buffer,BTB)沖突來(lái)影響攻擊者代碼執(zhí)行時(shí)間,進(jìn)而推斷目標(biāo)進(jìn)程或內(nèi)核地址空間分支指令的位置,獲取內(nèi)核和用戶級(jí)應(yīng)用程序的內(nèi)存地址分布.

      4)目標(biāo)系統(tǒng)運(yùn)行情況

      部分緩存?zhèn)刃诺拦舻哪康氖翘綔y(cè)目標(biāo)系統(tǒng)運(yùn)行情況,例如目標(biāo)系統(tǒng)運(yùn)行的操作系統(tǒng)、關(guān)鍵軟件、瀏覽器頁(yè)面等.目標(biāo)系統(tǒng)可以是與攻擊進(jìn)程同駐的虛擬機(jī),也可以是遠(yuǎn)程連接的操作系統(tǒng).Irazoqui等人[67]給出基于Flush-Reload攻擊方法對(duì)同駐虛擬機(jī)的加密庫(kù)進(jìn)行探測(cè)的攻擊,該攻擊可以檢測(cè)并區(qū)分多種加密庫(kù),包括 MatrixSSL,PolarSSL,GnuTLS等,還可以對(duì)加密庫(kù)的版本進(jìn)行區(qū)分.Shusterman等人[68]提出對(duì)瀏覽器頁(yè)面的攻擊,該攻擊探測(cè)同駐虛擬機(jī)內(nèi)部瀏覽器頁(yè)面信息,瀏覽器類型包括Chrome (Win,Linux),F(xiàn)irefox (Win,Linux),Safari MacOS,Tor Linux.

      本文對(duì)2002—2020年共66篇緩存?zhèn)刃诺拦粑墨I(xiàn)①文獻(xiàn)主要來(lái)自dblp數(shù)據(jù)庫(kù),此外還有部分其他在線資源。中攻擊目標(biāo)進(jìn)行統(tǒng)計(jì)分類,4類攻擊目標(biāo)所占比例如圖4所示,可見(jiàn)含密碼算法的程序或加密庫(kù)為攻擊者的首要攻擊目標(biāo).

      Fig.4 Statistical analysis of targets of cache side-channel attacks圖4 緩存?zhèn)刃诺拦裟繕?biāo)統(tǒng)計(jì)分析

      2.4 緩存?zhèn)刃诺拦粼?/h3>

      目前從攻擊原理來(lái)分,現(xiàn)有的緩存?zhèn)刃诺拦糁?要有 Evict-Time,Prime-Probe,F(xiàn)lush-Reload,F(xiàn)lush-Flush,Evict-Reload,Prime-Abort,Reload-Refresh 這7 種.表1對(duì)各類型緩存攻擊的探測(cè)方法進(jìn)行了對(duì)比總結(jié).

      2.4.1 Evict-Time

      Evict-Time[8]攻擊方法在2006年被提出,是比較早期的Cache計(jì)時(shí)攻擊.該攻擊在單機(jī)單核心環(huán)境下恢復(fù)出了完整的AES密鑰,其攻擊步驟有3個(gè):

      1)目標(biāo)進(jìn)程執(zhí)行加密操作并測(cè)量所需時(shí)間.

      2)Evict.攻擊者通過(guò)訪問(wèn)自身內(nèi)存空間,驅(qū)逐部分目標(biāo)進(jìn)程執(zhí)行加密操作時(shí)占用的緩存.

      3)Time.攻擊者再次觸發(fā)目標(biāo)進(jìn)程進(jìn)行加密運(yùn)算,測(cè)量完成加密所需要的時(shí)間.

      該攻擊基于AES算法的查表操作實(shí)現(xiàn).在執(zhí)行步驟1)之后,目標(biāo)進(jìn)程在加密時(shí)所用到的全部T表②在實(shí)踐中,T表通常是提前算出然后作為一個(gè)常量數(shù)組編碼在密碼算法軟件的實(shí)現(xiàn)代碼中。這樣,就可將繁瑣的運(yùn)算過(guò)程變成對(duì)于計(jì)算機(jī)而言簡(jiǎn)單高效的查表和按位運(yùn)算。內(nèi)存塊被加載入內(nèi)存;步驟2)中攻擊進(jìn)程通過(guò)訪問(wèn)特定內(nèi)存塊,驅(qū)逐目標(biāo)進(jìn)程部分緩存,例如驅(qū)逐的恰好是T表某元素p映射到的緩存組,則p將被換出緩存;步驟3)對(duì)同樣的明文以預(yù)測(cè)的密鑰key′再次執(zhí)行加密操作,若執(zhí)行時(shí)間變長(zhǎng)說(shuō)明在此密鑰下查找了此前被換出的T表元素p,以此推斷密鑰key′為密鑰key的可能性,并通過(guò)進(jìn)一步分析推斷完整密鑰.該攻擊對(duì)目標(biāo)進(jìn)程的T表加載空間做了大量先驗(yàn)測(cè)試,并在明文已知的前提下通過(guò)多次測(cè)試來(lái)實(shí)現(xiàn)密鑰恢復(fù).

      Table 1 Comprehensive Comparison of Cache Side-Channel Attacks表1 不同緩存?zhèn)刃诺拦艏夹g(shù)的綜合比較

      2.4.2 Prime-Probe

      Prime-Probe[8-9]同樣是在2006年提出的Cache計(jì)時(shí)攻擊,它與Evict-Time方法的區(qū)別在于它度量的是攻擊者訪問(wèn)自身內(nèi)存塊所需的時(shí)間,這一特點(diǎn)也使得Prime-Probe攻擊方法更容易應(yīng)用于實(shí)際場(chǎng)景中.具體攻擊步驟有3個(gè):

      1)Prime.攻擊者通過(guò)訪問(wèn)內(nèi)存塊填充緩存.

      2)等待.攻擊者等待一段時(shí)間,在這期間目標(biāo)進(jìn)程將執(zhí)行自身代碼,訪問(wèn)內(nèi)存數(shù)據(jù).

      3)Probe.攻擊者再次訪問(wèn)在步驟1)用來(lái)Prime緩存的內(nèi)存塊,測(cè)試訪問(wèn)時(shí)間.

      攻擊者需要確定一個(gè)區(qū)分內(nèi)存訪問(wèn)和緩存訪問(wèn)的時(shí)間閾值,還需設(shè)計(jì)一個(gè)驅(qū)逐集(映射到同一緩存組,同時(shí)分別駐留在不同緩存行的一組地址).攻擊者在步驟1)中首先利用準(zhǔn)備好的數(shù)據(jù)填充緩存集,等待目標(biāo)進(jìn)程運(yùn)行之后,再次對(duì)先前準(zhǔn)備的數(shù)據(jù)集進(jìn)行訪問(wèn),根據(jù)訪問(wèn)的時(shí)間差異判斷目標(biāo)進(jìn)程對(duì)于緩存的訪問(wèn).如果目標(biāo)進(jìn)程沒(méi)有訪問(wèn)目標(biāo)緩存集中的數(shù)據(jù),則攻擊者對(duì)該緩存集的訪問(wèn)會(huì)緩存命中,則訪問(wèn)時(shí)間短;反之,則訪問(wèn)時(shí)間長(zhǎng).通過(guò)監(jiān)控目標(biāo)進(jìn)程對(duì)緩存的使用狀況,攻擊者可以推斷目標(biāo)進(jìn)程的敏感信息,如密鑰等.Prime-Probe攻擊以單個(gè)緩存集為目標(biāo),可以檢測(cè)目標(biāo)進(jìn)程對(duì)指令或數(shù)據(jù)的訪問(wèn),還可以跨虛擬機(jī)實(shí)現(xiàn)[7,10].Prime-Probe攻擊最開(kāi)始基于L1緩存實(shí)現(xiàn),之后擴(kuò)展到L3緩存.Liu等人[54]的研究提出了新的算法使Prime-Probe緩存探測(cè)方法在L3緩存上的應(yīng)用得以實(shí)現(xiàn),在跨虛擬機(jī)的側(cè)信道攻擊中成功獲取密鑰.

      2.4.3 Flush-Reload

      Flush-Reload攻擊方法在2011年提出[11],隨后又發(fā)展出了跨核的攻擊[22,67].Flush-Reload方法是較為細(xì)粒度的攻擊,攻擊者可以比較準(zhǔn)確地獲取特定內(nèi)存位置是否被緩存的情況,F(xiàn)lush-Reload攻擊方法條件比較苛刻,要求攻擊者與目標(biāo)共享某塊使用到的物理內(nèi)存,例如共享庫(kù)文件.假設(shè)攻擊者與目標(biāo)共享內(nèi)存塊b,具體攻擊步驟有3個(gè):

      1)Flush.攻擊者使用 clflush 指令清空內(nèi)存塊b所映射的緩存內(nèi)容.

      2)等待.攻擊者等待目標(biāo)運(yùn)行一段時(shí)間.

      3)Reload.重新加載指定內(nèi)存塊b,測(cè)量并記錄數(shù)據(jù)塊的重載時(shí)間.

      步驟1)保證了下一次訪問(wèn)b時(shí)需要再次讀取內(nèi)存,同時(shí)clflush指令會(huì)將各級(jí)緩存中的b都清空.在步驟2)中,攻擊者等待目標(biāo)執(zhí)行代碼片,期間目標(biāo)可能會(huì)訪問(wèn)到在步驟1)時(shí)換出緩存的數(shù)據(jù)塊b.步驟3)攻擊者利用rdtsc指令度量再次訪問(wèn)數(shù)據(jù)塊b所需的時(shí)間,若所需時(shí)間超過(guò)某個(gè)閾值則認(rèn)為在步驟2)中目標(biāo)并沒(méi)有訪問(wèn)到這塊數(shù)據(jù),否則表示目標(biāo)在運(yùn)行時(shí)訪問(wèn)了數(shù)據(jù)塊b.同樣地,攻擊者通過(guò)這種方式監(jiān)控目標(biāo)進(jìn)程對(duì)緩存的使用狀況,從而推斷目標(biāo)進(jìn)程的敏感信息.

      Flush-Reload攻擊方法將訪問(wèn)驅(qū)動(dòng)型緩存?zhèn)刃诺拦艏夹g(shù)繼續(xù)向前推進(jìn)了一步,它不僅將攻擊從單一核心擴(kuò)展到了跨核心,同時(shí)還提高了信息獲取粒度,將探測(cè)緩存的粒度從緩存組(在x86架構(gòu)中一般為4路256 B或8路512 B)層面提升到了緩存行(在x86架構(gòu)中一般為64 B).因?yàn)榫邆淇绾诵暮图?xì)粒度這2點(diǎn)優(yōu)勢(shì),F(xiàn)lush-Reload方法與之前的側(cè)信道攻擊研究相比其攻擊性更強(qiáng)也更加危險(xiǎn).

      2.4.4 Flush-Flush

      Flush-Flush[69]攻擊方法是Flush-Reload方法的變種,它的實(shí)現(xiàn)同樣需要滿足與目標(biāo)共享內(nèi)存的條件.它利用clflush指令在清空緩存時(shí)所用時(shí)間的差異探測(cè)信息,當(dāng)緩存位置有緩存數(shù)據(jù)時(shí)執(zhí)行時(shí)間長(zhǎng),反之則短.具體的利用方式為:

      1)Flush.攻擊者執(zhí)行clflush指令清空與目標(biāo)共享的內(nèi)存塊所映射的緩存行.

      2)等待.攻擊者等待目標(biāo)運(yùn)行一段時(shí)間間隔.

      3)Flush.攻擊者循環(huán)執(zhí)行clflush指令,并使用rdtsc指令度量clflush指令的執(zhí)行時(shí)間.

      當(dāng)被清除的數(shù)據(jù)為緩存命中時(shí),clflush指令的執(zhí)行時(shí)間長(zhǎng),反之若為緩存未命中則執(zhí)行時(shí)間短.攻擊者通過(guò)測(cè)量clflush指令的執(zhí)行時(shí)間推測(cè)內(nèi)存數(shù)據(jù)是否被換入緩存,即目標(biāo)進(jìn)程是否訪問(wèn)了該內(nèi)存塊數(shù)據(jù).Flush-Flush攻擊測(cè)量緩存是否命中的時(shí)間差異較小,因而準(zhǔn)確率比Flush-Reload低,但其攻擊相對(duì)隱蔽,且可以繞過(guò)部分基于硬件性能計(jì)數(shù)器的緩存?zhèn)刃诺拦魴z測(cè)方法.

      2.4.5 Evict-Reload

      Evict-Reload[26,55,60]攻擊同樣是Flush-Reload方法的變種,它將clflush指令用緩存驅(qū)逐(cache eviction)的方式代替,使得在無(wú)法執(zhí)行clflush指令的環(huán)境或架構(gòu)下仍然可以利用Evict-Reload方法進(jìn)行緩存信息探測(cè).具體攻擊方式為:

      1)Evict.通過(guò)訪問(wèn)大塊內(nèi)存,如較大的數(shù)組,將目標(biāo)緩存組換出.

      2)等待.等待受害者進(jìn)程的運(yùn)行.

      3)Reload.重新訪問(wèn)目標(biāo)地址,測(cè)量訪問(wèn)時(shí)間,做出判斷.

      這種攻擊方式下要從緩存中驅(qū)逐特定的緩存組,需要結(jié)合緩存映射方式和替換策略進(jìn)行設(shè)計(jì),通過(guò)訪問(wèn)特定內(nèi)存地址來(lái)填充緩存,驅(qū)逐目標(biāo)地址.根據(jù)不同CPU緩存替換策略、所需的地址數(shù)量和訪問(wèn)模式,實(shí)現(xiàn)緩存驅(qū)逐的方式可能會(huì)有所不同.

      2.4.6 Prime-Abort

      Prime-Abort[14]是一個(gè)不依賴于時(shí)間計(jì)數(shù)的緩存信息探測(cè)方法,它利用了Intel TSX[70]中事務(wù)性內(nèi)存特性.當(dāng)目標(biāo)進(jìn)程訪問(wèn)特定地址時(shí)會(huì)引起行為中止(Abort),因此可以依靠TSX這一特點(diǎn)監(jiān)測(cè)對(duì)某些共享內(nèi)存塊的寫(xiě)操作,監(jiān)測(cè)同一核心上的進(jìn)程讀寫(xiě)操作,或是監(jiān)測(cè)同一處理器上的進(jìn)程讀寫(xiě)操作.具體的利用方式為:

      1)Prime.攻擊者開(kāi)啟TSX事務(wù),用自己的內(nèi)存塊將緩存填滿,即Prime.

      2)等待.攻擊者等待一段時(shí)間,這個(gè)間歇目標(biāo)進(jìn)程將執(zhí)行自身代碼,訪問(wèn)內(nèi)存數(shù)據(jù)等,目標(biāo)進(jìn)程的執(zhí)行將會(huì)引起數(shù)據(jù)在緩存的換入/換出,由于TSX原子操作的緣故會(huì)導(dǎo)致事務(wù)Abort的發(fā)生.

      3)Abort.攻擊者檢測(cè)事務(wù)Abort的發(fā)生,以此推斷目標(biāo)進(jìn)程訪問(wèn)了特定緩存組.

      與傳統(tǒng)緩存攻擊相比,它具有不依賴時(shí)間計(jì)數(shù)的優(yōu)勢(shì),可以繞過(guò)基于計(jì)時(shí)干擾的攻擊防御方法.另外,基于TSX機(jī)制,目標(biāo)進(jìn)程對(duì)特定緩存的訪問(wèn)行為會(huì)實(shí)時(shí)觸發(fā)攻擊者的監(jiān)測(cè),解決了攻擊者在探測(cè)目標(biāo)行為時(shí)與目標(biāo)進(jìn)程難以同步的問(wèn)題.

      2.4.7 Reload-Refresh

      Reload-Refresh攻擊[71]在2020年被提出,該攻擊巧妙地利用緩存替換策略,在不強(qiáng)制驅(qū)逐目標(biāo)進(jìn)程數(shù)據(jù)的情況下,跟蹤目標(biāo)進(jìn)程的緩存訪問(wèn).這一攻擊同樣需要攻擊進(jìn)程和目標(biāo)進(jìn)程共享目標(biāo)內(nèi)存(即攻擊的目標(biāo)內(nèi)存空間),攻擊進(jìn)程還要事先準(zhǔn)備好一組替換目標(biāo)內(nèi)存的內(nèi)存條目,稱為驅(qū)逐集,并執(zhí)行4個(gè)攻擊步驟:

      1)準(zhǔn)備.攻擊進(jìn)程首先將目標(biāo)內(nèi)存讀入緩存,然后逐條加載驅(qū)逐集,保留一個(gè)監(jiān)控條目(目標(biāo)地址),作為緩存策略的驅(qū)逐候選者.

      2)等待.等待目標(biāo)進(jìn)程執(zhí)行,若目標(biāo)進(jìn)程訪問(wèn)了目標(biāo)地址,則目標(biāo)地址不再是驅(qū)逐候選者;若沒(méi)有訪問(wèn),則目標(biāo)地址仍然是驅(qū)逐候選者.

      3)Reload.攻擊進(jìn)程加載之前保留的監(jiān)控條目,使得緩存集中發(fā)生沖突,緩存要依據(jù)替換策略驅(qū)逐緩存條目.攻擊進(jìn)程重新讀取目標(biāo)地址,可根據(jù)讀取時(shí)間判斷該地址是否被替換,從而推斷在上一階段中是否被目標(biāo)進(jìn)程訪問(wèn).

      4)Refresh.將緩存的狀態(tài)恢復(fù)到步驟1)的狀態(tài),進(jìn)行下一次迭代.

      攻擊成功實(shí)施的前提是要知道當(dāng)前運(yùn)行環(huán)境中緩存的替換策略.所以在攻擊開(kāi)始之前,需要對(duì)目標(biāo)進(jìn)程運(yùn)行的處理器進(jìn)行測(cè)試,以確定該處理器使用的是哪一種緩存替換策略,并根據(jù)策略構(gòu)建目標(biāo)地址的驅(qū)逐集.

      3 緩存?zhèn)刃诺拦舴烙芯楷F(xiàn)狀與分類

      隨著緩存攻擊的不斷出現(xiàn),針對(duì)緩存攻擊的防御方法也在同步發(fā)展.本節(jié)將針對(duì)緩存攻擊的防御分為2個(gè)階段:1)針對(duì)緩存?zhèn)刃诺拦舻臋z測(cè);2)防御技術(shù)的實(shí)施.針對(duì)緩存攻擊的檢測(cè)可在攻擊發(fā)生之前或攻擊的初始階段發(fā)現(xiàn)攻擊,及時(shí)告警或終止緩存攻擊;針對(duì)緩存攻擊的防御技術(shù)從攻擊實(shí)現(xiàn)原理、攻擊目標(biāo)等方面入手,考慮通過(guò)緩存隔離、緩存訪問(wèn)隨機(jī)化、緩存計(jì)時(shí)破壞、漏洞分析與修復(fù)等技術(shù)對(duì)緩存?zhèn)刃诺拦暨M(jìn)行主動(dòng)防御.本節(jié)從攻擊檢測(cè)和攻擊防御2個(gè)方面出發(fā),對(duì)近年來(lái)緩存?zhèn)刃诺拦舴烙夹g(shù)的發(fā)展進(jìn)行了系統(tǒng)分析.

      3.1 攻擊檢測(cè)

      在前期針對(duì)緩存?zhèn)刃诺拦魴z測(cè)技術(shù)的研究中,研究人員基于緩存攻擊原理做了一些探索.2011年,Zhang等人[72]設(shè)計(jì)出了命名為HomeAlone的軟件工具,通過(guò)在自己的虛擬機(jī)中運(yùn)行Prime-Probe攻擊并檢測(cè)操作時(shí)間的變化,來(lái)檢測(cè)是否有攻擊者的虛擬機(jī)和自己同駐.該文針對(duì)緩存攻擊特征的收集和處理,給緩存攻擊檢測(cè)帶來(lái)一定借鑒.之后Gruss等人[55]提出緩存模板攻擊,開(kāi)發(fā)人員可以針對(duì)特定選擇的事件自動(dòng)檢測(cè)潛在的緩存?zhèn)刃诺缆┒?,然后?duì)其進(jìn)行修復(fù).該文通過(guò)觸發(fā)特定事件,使用Flush-Reload攻擊測(cè)試訪問(wèn)內(nèi)存地址的cache-hit蹤跡,形成緩存模板.將“緩存模板攻擊”作為系統(tǒng)服務(wù)運(yùn)行,則可以檢測(cè)可能受到攻擊的代碼和數(shù)據(jù).

      之后,基于CPU硬件性能計(jì)數(shù)器(hardware performance counters, HPCs)對(duì)緩存攻擊進(jìn)行檢測(cè)的方法出現(xiàn).HPCs是一組內(nèi)置在 x86(如 Intel,AMD)和 ARM處理器中的特殊寄存器,它們與特定硬件事件的事件選擇器一起工作,并在硬件事件發(fā)生后更新計(jì)數(shù)器.2013年,Demme等人[73]提出基于HPCs提取的特征檢測(cè) Prime-Probe攻擊.2016年,Chiappetta等人[74]提出將攻擊進(jìn)程硬件特征與機(jī)器學(xué)習(xí)相結(jié)合進(jìn)行緩存攻擊實(shí)時(shí)檢測(cè)的方法,該方法通過(guò) quickhpc工具收集攻擊進(jìn)程運(yùn)行過(guò)程中的硬件特性(CPU cycles, L2 cache hit, L3 cache miss等),基于機(jī)器學(xué)習(xí)的方法將收集到的進(jìn)程特征與已有攻擊進(jìn)程特征做匹配,實(shí)時(shí)檢測(cè)緩存攻擊.同年,Zhang等人[75]提出基于HPCs的緩存攻擊檢測(cè)架構(gòu)CloudRadar.CloudRadar使用HPCs計(jì)數(shù)器讀取到的硬件事件(cache hit/miss等)作為特征,結(jié)合特征檢測(cè)和異常檢測(cè)對(duì)緩存攻擊進(jìn)行實(shí)時(shí)檢測(cè).該架構(gòu)可檢測(cè)引起HPCs變化的緩存攻擊如Flush-Reload,Prime-Probe等,根據(jù)應(yīng)用環(huán)境的不同可在操作系統(tǒng)層或虛擬化層實(shí)現(xiàn).

      還有研究人員希望通過(guò)修改硬件架構(gòu)來(lái)實(shí)現(xiàn)對(duì)緩存?zhèn)刃诺拦舻臋z測(cè).2014年,Chen等人[76]提出Cache計(jì)時(shí)攻擊檢測(cè)架構(gòu)CC-Hunter,該架構(gòu)通過(guò)使用額外的硬件單元來(lái)動(dòng)態(tài)跟蹤共享CPU的緩存資源使用沖突情況,進(jìn)而對(duì)Cache計(jì)時(shí)攻擊進(jìn)行檢測(cè).部分研究人員提出針對(duì)特定緩存攻擊的檢測(cè).2020年,Guo等人[77]提出基于符號(hào)執(zhí)行的方法來(lái)檢測(cè)由預(yù)測(cè)執(zhí)行引入的緩存計(jì)時(shí)側(cè)信道漏洞.2021年,Kim等人[78]提 出 基于 PMU(performance monitoring unit),PCM(performance counter monitor)對(duì) Prime-Abort攻擊進(jìn)行實(shí)時(shí)檢測(cè)的系統(tǒng).

      此外,針對(duì)一些新型緩存?zhèn)刃诺拦簦鏢GX環(huán)境下的緩存?zhèn)刃诺拦?,也出現(xiàn)了一些檢測(cè)方法.2018年,Chen等人[79]提出HyperRace架構(gòu),將虛擬化云環(huán)境同駐檢測(cè)方法HomeAlone[72]的想法擴(kuò)展到SGX領(lǐng)域,基于LLVM實(shí)現(xiàn)了基于超線程技術(shù)的緩存?zhèn)刃诺拦魴z測(cè)方法.研究人員還提出了一類結(jié)合TSX技術(shù)對(duì)SGX緩存?zhèn)刃诺拦暨M(jìn)行檢測(cè)的方法[80-82],這類檢測(cè)方法主要針對(duì)特殊環(huán)境下的緩存攻擊,不具備普適性.

      3.2 攻擊防御

      3.2.1 緩存隔離

      緩存?zhèn)刃诺拦舻幕驹硎腔谶M(jìn)程間緩存共享,因此,基于緩存隔離的攻擊防御技術(shù)一直是研究人員關(guān)注的熱點(diǎn).

      Page[83]在2005年提出一個(gè)隔離緩存的硬件防御措施,將一部分緩存隔離給受保護(hù)的進(jìn)程使用,以減少不同用戶間緩存爭(zhēng)用的情況發(fā)生.這種對(duì)緩存的隔離方法比較粗暴,對(duì)緩存使用的性能影響較大.2007年,Wang等人[84]提出一種新的緩存設(shè)計(jì)結(jié)構(gòu),采用緩存隔離的方式鎖定部分緩存作為安全區(qū)域PLcache,這種緩存設(shè)計(jì)結(jié)構(gòu)與之前的方法相比較為靈活,隔離粒度細(xì).2009年,Kong等人[85]的研究使得防御方法在此前PLcache的基礎(chǔ)上又有了新的改善,可以防止更強(qiáng)的攻擊.

      2016年Zhou等人[86]提出一個(gè)內(nèi)存管理系統(tǒng)CacheBar,可以防御利用L3緩存共享導(dǎo)致的跨核緩存?zhèn)刃诺拦?CacheBar劃分不同安全域并且對(duì)安全域之間共享的物理內(nèi)存頁(yè)進(jìn)行自動(dòng)管理,防止L3緩存行的共享,能夠防御Prime-Probe和Flush-Reload攻擊.2016年,Liu等人[87]利用目前商用CPU的性能優(yōu)化技術(shù)CAT設(shè)計(jì)實(shí)現(xiàn)了原型系統(tǒng)CATalyst來(lái)實(shí)現(xiàn)對(duì)L3緩存?zhèn)刃诺拦舻姆烙?CATalyst通過(guò)將L3緩存劃分成不同的管理域緩存,從而實(shí)現(xiàn)不同虛擬機(jī)在L3緩存的隔離.這種方法不僅可以防御Prime-Probe攻擊,同時(shí)也在一定程度上防御了基于頁(yè)復(fù)用技術(shù)的Flush-Reload攻擊.

      2017年,Yan等人[88]提出一種針對(duì)共享緩存的緩存行替換算法SHARP,需要很小的硬件修改就可以有效防御現(xiàn)有的跨核共享緩存攻擊.2019年Werner等人[89]提出了新的緩存設(shè)計(jì)方法SCATTERCACHE來(lái)防止緩存攻擊,它排除了特定緩存組的一致性,使基于驅(qū)逐集的緩存攻擊不再適用.

      還有一類云環(huán)境中防御緩存?zhèn)刃诺拦舻牡湫图夹g(shù)Page Coloring[90].在云環(huán)境中,要對(duì)虛擬機(jī)之間的緩存進(jìn)行隔離,研究人員需要通過(guò)重新設(shè)計(jì)內(nèi)存到緩存的映射方案來(lái)實(shí)現(xiàn).這類方法因?yàn)樯婕暗轿锢韮?nèi)存地址到緩存的映射,所以需要系統(tǒng)級(jí)別(系統(tǒng)內(nèi)核或虛擬化層)的修改,這種緩存隔離策略通常稱為Page Coloring.Chameleon[91]提供了1個(gè)低消耗的自動(dòng)化Page Coloring機(jī)制,在安全域執(zhí)行時(shí)提供緩存隔離.安全進(jìn)程將被分配在具有特定安全色的緩存中.安全色緩存只提供給關(guān)鍵安全敏感操作使用,與其同駐于相同硬件的其他虛擬機(jī)不可訪問(wèn)這塊區(qū)域.STEALTHMEM[92]也是基于Page Coloring實(shí)現(xiàn)的系統(tǒng)級(jí)緩存攻擊防御,其為每個(gè)核心管理一組鎖定的緩存行,對(duì)這些緩存行的使用不會(huì)發(fā)生換出的情況.虛擬機(jī)可以將敏感數(shù)據(jù)加載到鎖定的緩存行,鎖定的緩存行為該虛擬機(jī)獨(dú)占,這樣一來(lái)每個(gè)虛擬機(jī)可以使用專屬的特殊頁(yè)面來(lái)存儲(chǔ)敏感數(shù)據(jù),其對(duì)敏感數(shù)據(jù)的訪問(wèn)也不會(huì)因?yàn)楣蚕矶孤?,從而保障虛擬機(jī)之間的安全.

      3.2.2 緩存訪問(wèn)隨機(jī)化

      緩存訪問(wèn)隨機(jī)化的防御方法是通過(guò)將內(nèi)存到緩存的映射隨機(jī)化,使其并不按照固定的映射策略進(jìn)行,破壞攻擊者通過(guò)監(jiān)測(cè)緩存特定位置獲取信息.RPcache[84]和 Newcache就是使用內(nèi)存到緩存映射隨機(jī)化的方法來(lái)實(shí)現(xiàn)防御.RPcache為需要保護(hù)的可信域提供單獨(dú)的映射表,可以將索引位映射到不同組,防止了攻擊者將受保護(hù)進(jìn)程緩存行換出的情況發(fā)生,可防御基于Flush-Reload進(jìn)行目標(biāo)信息探測(cè)的攻擊.Newcache通過(guò)引入重映射表,利用邏輯上“直接映射緩存”架構(gòu)將訪問(wèn)地址隨機(jī)映射到某緩存行,實(shí)現(xiàn)緩存訪問(wèn)的隨機(jī)化.2014年,Liu等人[93]提出一個(gè)基于硬件的解決方案,將內(nèi)存地址到緩存的映射變?yōu)檫\(yùn)行時(shí)自動(dòng)隨機(jī)化,這種緩存映射隨機(jī)化的方式對(duì)性能的影響較小.

      2015年,Crane等人[94]提出了利用軟件相異性實(shí)現(xiàn)緩存攻擊防御的方式.該工作利用代碼復(fù)制和控制流隨機(jī)化實(shí)現(xiàn)了較細(xì)粒度的程序多樣化來(lái)防御緩存攻擊,在保持了原始程序語(yǔ)義的同時(shí)確保指令集級(jí)別每一副本的不同.此方法通過(guò)動(dòng)態(tài)變化程序運(yùn)行時(shí)的控制流,使攻擊者無(wú)法從緩存中探測(cè)到目標(biāo)程序的執(zhí)行意圖.

      另外一些研究工作基于編譯器實(shí)現(xiàn)緩存訪問(wèn)隨機(jī)化,使程序在執(zhí)行內(nèi)存/緩存訪問(wèn)時(shí)不易被攻擊者追蹤.Raccoon[95]基于混淆程序在源碼層制造出程序具有很多執(zhí)行路徑的假象,使攻擊者難以通過(guò)程序使用緩存的規(guī)律推斷出分支的邏輯信息,進(jìn)而防御多種側(cè)信道攻擊,如利用地址痕跡、緩存使用、數(shù)據(jù)大小等作為側(cè)信道的攻擊.

      3.2.3 緩存計(jì)時(shí)破壞

      大多數(shù)緩存?zhèn)刃诺拦舴椒ㄒ揽坎煌瑺顟B(tài)下對(duì)特定緩存的訪問(wèn)時(shí)間差異來(lái)推測(cè)目標(biāo)信息,因此,可以通過(guò)破壞系統(tǒng)中計(jì)時(shí)的精度來(lái)破壞依賴時(shí)間度量的緩存攻擊,進(jìn)而達(dá)到防御的效果.

      部分研究人員希望通過(guò)增大計(jì)時(shí)粒度實(shí)現(xiàn)緩存攻擊的防御.Vattikonda等人[96]提出在虛擬化環(huán)境中通過(guò)去掉細(xì)粒度的時(shí)間計(jì)數(shù)來(lái)限制惡意虛擬機(jī)探測(cè)緩存的能力,他們?cè)趚86架構(gòu)的Xen虛擬化平臺(tái)上通過(guò)修改rdtcs指令返回值來(lái)模糊時(shí)間度量,進(jìn)而使該惡意虛擬機(jī)獲取的時(shí)間粒度變粗,無(wú)法基于高精度的計(jì)時(shí)信息來(lái)分析緩存狀況,從而實(shí)現(xiàn)緩存攻擊防御.

      一些研究人員試圖通過(guò)在計(jì)時(shí)器中添加噪聲來(lái)實(shí)現(xiàn)緩存?zhèn)刃诺拦舻姆烙?,如Martin等人[97]提出的防御措施TimeWarp.TimeWarp通過(guò)在攻擊者進(jìn)行時(shí)間度量時(shí)加入任意數(shù)值的時(shí)間噪聲使其無(wú)法區(qū)分緩存命中與未命中的狀態(tài),使攻擊者無(wú)法從被噪聲污染的數(shù)據(jù)中獲取有效信息.TimeWarp中的計(jì)時(shí)器分析較為全面,它將時(shí)間計(jì)數(shù)分為內(nèi)部時(shí)間計(jì)數(shù)、外部時(shí)間計(jì)數(shù)和指令時(shí)間計(jì)數(shù),這3種時(shí)間計(jì)數(shù)分別對(duì)應(yīng)于硬件計(jì)時(shí)器、外部中斷或其他設(shè)備傳輸網(wǎng)絡(luò)包的傳輸時(shí)間,以及執(zhí)行時(shí)間周期確定的指令(如執(zhí)行周期為1 cycle的ADD指令),通過(guò)對(duì)這些時(shí)間計(jì)數(shù)進(jìn)行混淆來(lái)防御攻擊.

      還有研究人員研究實(shí)現(xiàn)恒定時(shí)間的防御方法,x86處理器中浮點(diǎn)加法和乘法指令的運(yùn)行時(shí)間根據(jù)操作數(shù)的不同差距很大,Andrysco等人[98]設(shè)計(jì)了一個(gè)新的數(shù)學(xué)庫(kù)libfixedtimefixedpoint來(lái)緩解浮點(diǎn)數(shù)據(jù)時(shí)間通道的問(wèn)題,該庫(kù)可用于非整數(shù)運(yùn)算,且所有操作都在恒定時(shí)間內(nèi)完成.也有一些研究人員提出通過(guò)禁用系統(tǒng)中的高精度計(jì)時(shí)器來(lái)實(shí)現(xiàn)緩存?zhèn)刃诺拦舴烙?,如Gullasch等人[11]實(shí)現(xiàn)的Cache games方法則提出通過(guò)禁用細(xì)粒度的時(shí)間計(jì)數(shù)指令rdtsc來(lái)緩解緩存攻擊.但在信息系統(tǒng)中,很多應(yīng)用程序基于高精度的計(jì)時(shí)指令rdtsc實(shí)現(xiàn),所以這一類實(shí)現(xiàn)方式并不理想.3.2.4 漏洞分析與修復(fù)

      軟件設(shè)計(jì)和硬件實(shí)現(xiàn)上的一些漏洞往往是攻擊者利用的對(duì)象,例如密碼算法實(shí)現(xiàn)的邏輯漏洞、CPU亂序執(zhí)行特性等.部分研究人員針對(duì)這些側(cè)信道攻擊風(fēng)險(xiǎn)展開(kāi)研究工作,致力于軟硬件漏洞的分析和修復(fù),防范于未然.

      Doychev等人[99]實(shí)現(xiàn)了緩存?zhèn)刃诺漓o態(tài)分析工具CacheAudit,該工具以二進(jìn)制文件作為輸入,通過(guò)靜態(tài)分析自動(dòng)預(yù)測(cè)程序的緩存使用狀況,評(píng)估其對(duì)各類型緩存攻擊的安全對(duì)抗情況,預(yù)測(cè)可能存在的各類型側(cè)信道,進(jìn)而給出改進(jìn)建議.Wang等人[100]提出針對(duì)程序的靜態(tài)分析方法CacheS.CacheS基于SAS(secret-augmented symbolic)域?qū)崿F(xiàn),SAS 通常用來(lái)在大規(guī)模敏感軟件上執(zhí)行抽象表示,完成對(duì)程序細(xì)粒度敏感信息(如密鑰及密鑰依賴)的跟蹤.CacheS可以做到對(duì)實(shí)際使用的加密系統(tǒng)進(jìn)行完整的靜態(tài)度量,覆蓋率及準(zhǔn)確率較高,能夠在一定程度上防御緩存?zhèn)刃诺拦?Hassan等人[101]組合了2個(gè)獨(dú)立開(kāi)發(fā)的側(cè)信道攻擊(side-channel attack,SCA)安全框架來(lái)識(shí)別和測(cè)試安全漏洞,并實(shí)現(xiàn)了對(duì)Mozilla的NSS安全庫(kù)的庫(kù)一級(jí)SCA安全性評(píng)估.

      Gras等人[102]針對(duì)商業(yè)的CPU微體系架構(gòu),通過(guò)實(shí)現(xiàn)自動(dòng)化的黑盒側(cè)信道分析來(lái)發(fā)現(xiàn)CPU微體系結(jié)構(gòu)中的側(cè)信道攻擊風(fēng)險(xiǎn);還有研究者通過(guò)修補(bǔ)微體系結(jié)構(gòu)上導(dǎo)致信息泄露的漏洞來(lái)防御相關(guān)的緩存?zhèn)刃诺拦?Andrea等人[103]提出一種用于研究微體系結(jié)構(gòu)攻擊及其緩解措施的新工具Speculator,用于研究單個(gè)代碼片段或更復(fù)雜的場(chǎng)景(例如分支目標(biāo)注入攻擊)中微體系結(jié)構(gòu)行為.Yu等人[104]提出數(shù)據(jù)無(wú)關(guān)的指令集架構(gòu)(instruction set architecture, ISA)擴(kuò)展,該擴(kuò)展的設(shè)計(jì)在指令層面保證了現(xiàn)有數(shù)據(jù)無(wú)關(guān)的程序(不在共享資源上施加敏感的數(shù)據(jù)依賴)的安全執(zhí)行,從而阻塞側(cè)信道攻擊.Koruyeh等人[105]提出的SpecCFI防御機(jī)制,利用控制流完整性(control-flow integrity, CFI)信息約束投機(jī)執(zhí)行過(guò)程中的非法控制流,以限制前向控制流路徑(間接調(diào)用和分支)上的危險(xiǎn)推測(cè),從而防御Spectre類型攻擊.

      3.2.5 其他防御方法

      隨著新的硬件機(jī)制的出現(xiàn),研究者開(kāi)始嘗試?yán)糜布匦詫?shí)現(xiàn)針對(duì)緩存?zhèn)刃诺拦舻姆烙?,如TSX,SGX等技術(shù).

      Gruss等人[106]提出了針對(duì)緩存?zhèn)刃诺拦舻姆烙胧〤loak,其核心思想是利用TSX技術(shù)防止敏感操作或數(shù)據(jù)訪問(wèn)時(shí)緩存未命中情況的發(fā)生,防止攻擊者探測(cè)緩存訪問(wèn)信息.Cloak利用TSX事務(wù)內(nèi)存來(lái)執(zhí)行可能泄露信息的敏感算法,保證所有敏感數(shù)據(jù)和代碼在執(zhí)行時(shí)受事務(wù)內(nèi)存保護(hù),以增加緩存攻擊的難度,甚至阻止攻擊的發(fā)生.

      Weiser等人[107]提出基于SGX可信執(zhí)行環(huán)境的緩存?zhèn)刃诺拦舴烙椒⊿GXJail.SGXJail針對(duì)以Enclave為宿主的惡意軟件提出了實(shí)際的防御機(jī)制,其通過(guò)對(duì)SGX進(jìn)行硬件擴(kuò)展,利用Intel的內(nèi)存保護(hù)密鑰限制Enclave的執(zhí)行,實(shí)現(xiàn)了對(duì)惡意Enclave更高效的防御,一定程度防止了Enclave間的緩存?zhèn)刃诺拦?Ahmad等人[108]提出在SGX商用硬件上的混淆引擎方法OBFUSCURO,該方法可以用來(lái)防御緩存模式攻擊和緩存計(jì)時(shí)攻擊.Weichbrodt等人[109]則給出一個(gè)SGX Enclave性能分析工具集SGX-perf,可自動(dòng)化地為SGX應(yīng)用程序提供細(xì)粒度的性能關(guān)鍵事件分析,為SXG可信環(huán)境中緩存?zhèn)刃诺腊踩治鎏峁﹨⒖?

      4 總結(jié)與展望

      緩存?zhèn)刃诺拦綦S著計(jì)算機(jī)技術(shù)的發(fā)展及應(yīng)用環(huán)境的變化而不斷創(chuàng)新,攻擊者在將傳統(tǒng)緩存?zhèn)刃诺拦粼磉M(jìn)行擴(kuò)展的同時(shí)也在不斷提出新的緩存利用方式,設(shè)計(jì)和構(gòu)造令安全防御人員感到棘手的側(cè)信道攻擊方法.Meltdown及Spectre漏洞的曝出將緩存?zhèn)刃诺拦舻难芯坑滞葡蛄诵碌母叱保琁ntel SGX等安全機(jī)制的出現(xiàn)則使緩存?zhèn)刃诺拦粞芯款I(lǐng)域進(jìn)一步擴(kuò)大.

      緩存?zhèn)刃诺拦舻脑O(shè)計(jì)往往很精巧,能夠造成較強(qiáng)的攻擊效果.但緩存?zhèn)刃诺拦舻膶?shí)施條件也比較苛刻,從實(shí)際攻擊場(chǎng)景中獲取有效信息存在一定難度.從緩存?zhèn)刃诺拦舭l(fā)展來(lái)看,攻擊實(shí)現(xiàn)的設(shè)計(jì)思路與信道構(gòu)造條件基本不變,但近年的研究工作正嘗試著朝攻破更強(qiáng)的安全隔離發(fā)展.一方面,隨著緩存結(jié)構(gòu)向non-inclusive[110]的模式發(fā)展,此前主要針對(duì)inclusive緩存攻擊的可靠性可能受到動(dòng)搖.AMD處理器一直在使用獨(dú)立LLC[111],在L1緩存的數(shù)據(jù)不一定存在于LLC,也就不能通過(guò)LLC探測(cè)目標(biāo)信息,Intel處理器也在向這個(gè)方向轉(zhuǎn)變[32].針對(duì)noninclusive緩存的攻擊或許是未來(lái)值得研究的一個(gè)方向.另一方面,由于微體系架構(gòu)中的漏洞相對(duì)徹底修補(bǔ)的復(fù)雜度和代價(jià)更高,近年來(lái)新提出的攻擊也逐漸偏向于利用TLB,LFB等更低層次的緩存結(jié)構(gòu)中的漏洞來(lái)構(gòu)造側(cè)信道,再結(jié)合Flush-Reload等攻擊方法來(lái)提取泄露的信息.

      在緩存?zhèn)刃诺拦舴烙矫?,研究者一方面針?duì)典型攻擊不斷地提出新型防御方法,如攻擊檢測(cè)、緩存隔離、地址隨機(jī)化、計(jì)時(shí)器混淆、軟硬件漏洞分析與修復(fù)等方式;另一方面,針對(duì)新型場(chǎng)景下的緩存?zhèn)刃诺拦簦岢鲈谔囟l件下的防御措施,如在可信環(huán)境SGX中的緩存?zhèn)刃诺拦舻姆烙?目前針對(duì)緩存?zhèn)刃诺拦舻姆烙浖用娴膶?shí)現(xiàn)方式多引入較大性能開(kāi)銷(xiāo),硬件防御方法多為設(shè)計(jì)思路,未能實(shí)際落地.未來(lái),基于新型CPU體系結(jié)構(gòu)和硬件設(shè)計(jì)的防御方案或許是從根本上杜絕緩存?zhèn)刃诺拦舻淖罱K出路.

      綜上,對(duì)于現(xiàn)代處理器架構(gòu)及操作系統(tǒng)來(lái)說(shuō),緩存?zhèn)刃诺拦羧匀皇瞧渲匾陌踩{.隨著新型攻擊方法和高效率攻擊手段的不斷出現(xiàn),針對(duì)緩存?zhèn)刃诺拦舻难芯渴钱?dāng)下熱點(diǎn),設(shè)計(jì)實(shí)現(xiàn)有效的防御手段同樣有著重要意義.

      作者貢獻(xiàn)聲明:張偉娟提出論文主體研究思路和框架,撰寫(xiě)論文初稿;白璐參與論文主體研究思路的討論,整理文獻(xiàn),以及審閱和修改論文;凌雨卿收集和梳理相關(guān)文獻(xiàn),制作圖表,排版與??闭撐?;蘭曉負(fù)責(zé)部分內(nèi)容的撰寫(xiě)與修改;賈曉啟參與部分內(nèi)容撰寫(xiě).

      猜你喜歡
      攻擊者進(jìn)程內(nèi)存
      基于微分博弈的追逃問(wèn)題最優(yōu)策略設(shè)計(jì)
      債券市場(chǎng)對(duì)外開(kāi)放的進(jìn)程與展望
      “春夏秋冬”的內(nèi)存
      正面迎接批判
      愛(ài)你(2018年16期)2018-06-21 03:28:44
      有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
      社會(huì)進(jìn)程中的新聞學(xué)探尋
      基于內(nèi)存的地理信息訪問(wèn)技術(shù)
      我國(guó)高等教育改革進(jìn)程與反思
      Linux僵死進(jìn)程的產(chǎn)生與避免
      上網(wǎng)本為什么只有1GB?
      安阳市| 鄢陵县| 扶余县| 鄄城县| 开原市| 南涧| 平武县| 米泉市| 公安县| 庆元县| 上蔡县| 平陆县| 渝北区| 宁安市| 奎屯市| 衡东县| 清远市| 改则县| 庆阳市| 渝中区| 安吉县| 新巴尔虎右旗| 沽源县| 桂林市| 阿拉善右旗| 右玉县| 贡嘎县| 永新县| 吉安县| 吉安市| 彭山县| 营口市| 阳新县| 浏阳市| 许昌市| 博湖县| 泰宁县| 朔州市| 庐江县| 东乡| 乐安县|