亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2023-01-30 10:23:56張偉娟凌雨卿賈曉啟
        計算機研究與發(fā)展 2023年1期
        關(guān)鍵詞:攻擊者進(jìn)程內(nèi)存

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

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

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

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

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

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

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

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

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

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

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

        1.1 緩存的組成及特性分析

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

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

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

        此外,還有一類較為特殊的緩存—TLB,它用來緩存虛擬地址到物理地址的轉(zhuǎn)換,由硬件內(nèi)存管理單元(memory management unit, MMU)所管理.在Intel架構(gòu)處理器中,TLB也分為2級緩存.當(dāng)攻擊者與用戶共享TLB時,攻擊者同樣可進(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)險分析

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

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

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

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

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

        3)可利用的程序設(shè)計特點

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

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

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

        本節(jié)從緩存?zhèn)刃诺拦舻膱鼍白兓?、實現(xiàn)層次、攻擊目標(biāo)和攻擊原理4個方面對近年來的研究工作進(jìn)行分類介紹.

        2.1 緩存?zhèn)刃诺拦舻膱鼍白兓?/h3>

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

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

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

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

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

        2.2 緩存?zhèn)刃诺拦舻膶崿F(xiàn)層次

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

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

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

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

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

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

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

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

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

        Fig.3 The development of scenarios and levels of cache side-channel attacks圖3 緩存?zhèn)刃诺拦魣鼍昂蛯哟蔚陌l(fā)展

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

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

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

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

        2)用戶名/口令文件

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

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

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

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

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

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

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

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

        目前從攻擊原理來分,現(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對各類型緩存攻擊的探測方法進(jìn)行了對比總結(jié).

        2.4.1 Evict-Time

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

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

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

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

        該攻擊基于AES算法的查表操作實現(xiàn).在執(zhí)行步驟1)之后,目標(biāo)進(jìn)程在加密時所用到的全部T表②在實踐中,T表通常是提前算出然后作為一個常量數(shù)組編碼在密碼算法軟件的實現(xiàn)代碼中。這樣,就可將繁瑣的運算過程變成對于計算機而言簡單高效的查表和按位運算。內(nèi)存塊被加載入內(nèi)存;步驟2)中攻擊進(jìn)程通過訪問特定內(nèi)存塊,驅(qū)逐目標(biāo)進(jìn)程部分緩存,例如驅(qū)逐的恰好是T表某元素p映射到的緩存組,則p將被換出緩存;步驟3)對同樣的明文以預(yù)測的密鑰key′再次執(zhí)行加密操作,若執(zhí)行時間變長說明在此密鑰下查找了此前被換出的T表元素p,以此推斷密鑰key′為密鑰key的可能性,并通過進(jìn)一步分析推斷完整密鑰.該攻擊對目標(biāo)進(jìn)程的T表加載空間做了大量先驗測試,并在明文已知的前提下通過多次測試來實現(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計時攻擊,它與Evict-Time方法的區(qū)別在于它度量的是攻擊者訪問自身內(nèi)存塊所需的時間,這一特點也使得Prime-Probe攻擊方法更容易應(yīng)用于實際場景中.具體攻擊步驟有3個:

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

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

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

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

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

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

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

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

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

        2.4.4 Flush-Flush

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

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

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

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

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

        2.4.5 Evict-Reload

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

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

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

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

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

        2.4.6 Prime-Abort

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

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

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

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

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

        2.4.7 Reload-Refresh

        Reload-Refresh攻擊[71]在2020年被提出,該攻擊巧妙地利用緩存替換策略,在不強制驅(qū)逐目標(biāo)進(jìn)程數(shù)據(jù)的情況下,跟蹤目標(biāo)進(jì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個攻擊步驟:

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

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

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

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

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

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

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

        3.1 攻擊檢測

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

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

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

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

        3.2 攻擊防御

        3.2.1 緩存隔離

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

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

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

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

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

        3.2.2 緩存訪問隨機化

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

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

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

        3.2.3 緩存計時破壞

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

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

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

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

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

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

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

        3.2.5 其他防御方法

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

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

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

        4 總結(jié)與展望

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

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

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

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

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

        猜你喜歡
        攻擊者進(jìn)程內(nèi)存
        基于微分博弈的追逃問題最優(yōu)策略設(shè)計
        債券市場對外開放的進(jìn)程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        “春夏秋冬”的內(nèi)存
        正面迎接批判
        愛你(2018年16期)2018-06-21 03:28:44
        有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
        社會進(jìn)程中的新聞學(xué)探尋
        基于內(nèi)存的地理信息訪問技術(shù)
        我國高等教育改革進(jìn)程與反思
        Linux僵死進(jìn)程的產(chǎn)生與避免
        上網(wǎng)本為什么只有1GB?
        一区二区三区人妻无码| 久久久精品国产老熟女| 国产三级视频不卡在线观看| 先锋中文字幕在线资源| 欧美日韩不卡视频合集| 国产不卡视频一区二区在线观看| 国产精品女同av在线观看| 国产区精品一区二区不卡中文 | 精品国产三级a∨在线观看| 国产精品无码久久久久久久久作品 | 综合激情中文字幕一区二区| 国产午夜视频一区二区三区| 欧美私人情侣网站| 少妇精品无码一区二区三区| 亚洲av成人一区二区三区不卡| 日韩一区二区三区久久精品| 人妻无码一区二区不卡无码av| 亚洲精品你懂的在线观看| 国产精品三级av一区二区| 亚洲精品一区二区高清| 97精品国产97久久久久久免费| 日本欧美小视频| 亚洲中文字幕不卡一区二区三区| 日韩乱码中文字幕在线| 国产乱子伦农村叉叉叉| 国产va精品免费观看| 国产伦精品一区二区三区| 一本色道久久88加勒比—综合 | 丰满少妇a级毛片| 日本动态120秒免费| 一区二区三区岛国av毛片| 中文字幕一区二区三区视频| 成熟丰满熟妇高潮xxxxx视频| 日韩av二区三区一区| 久久久人妻精品一区bav| 国产一精品一av一免费| 日本久久久| 亚洲av成人无网码天堂| 国产精品天干天干综合网| 亚洲av理论在线电影网| 国产熟女乱综合一区二区三区|