• 
    

    
    

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

      緩存?zhèn)刃诺婪烙芯烤C述

      2021-04-09 05:52:58
      關(guān)鍵詞:用戶程序攻擊者漏洞

      王 崇 魏 帥 張 帆 宋 克

      (國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心(戰(zhàn)略支援部隊(duì)信息工程大學(xué)) 鄭州 450003)

      隨著Spectre[1],Meltdown[2],Foreshadow[3],ZombieLoad[4]等一系列CPU硬件漏洞的發(fā)現(xiàn),人們在研究應(yīng)用軟件和操作系統(tǒng)漏洞的同時(shí),也開始重視硬件層面,尤其是由于硬件架構(gòu)特點(diǎn)而引發(fā)的安全威脅.側(cè)信道攻擊是利用計(jì)算機(jī)硬件的一種主要的攻擊方式,它利用微架構(gòu)狀態(tài)開展攻擊,可能會(huì)造成用戶的信息泄露;同時(shí),它也具有較高的隱蔽性,對用戶信息和設(shè)備安全帶來極大的安全威脅.

      側(cè)信道攻擊[5](side channel attack, SCA),是指對軟件在物理設(shè)備上執(zhí)行過程中暴露出來的某些特征,如聲音、電磁輻射、溫度等側(cè)信道信息(side channel information)分析,得出設(shè)備內(nèi)部的執(zhí)行情況,推斷出用戶信息的一種攻擊方式.這種攻擊方式常用來繞過加密算法等安全機(jī)制提供的安全性,造成用戶信息泄露.一般而言,側(cè)信道攻擊具有3個(gè)方面特點(diǎn)[6]:1)難以檢測,大部分側(cè)信道攻擊不需要特殊的權(quán)限,只要能夠完成對側(cè)信道信息的采集,就可以開展后續(xù)分析;2)防御成本高,減緩側(cè)信道攻擊會(huì)對系統(tǒng)的性能帶來很大影響;3)平臺依賴性高,側(cè)信道攻擊利用的不是算法或程序本身存在的問題,而是程序的實(shí)現(xiàn)及運(yùn)行過程中存在的問題進(jìn)行攻擊,嚴(yán)重依賴于程序的執(zhí)行環(huán)境以及硬件架構(gòu)等.而基于微架構(gòu)的側(cè)信道攻擊是近年來新興的一種側(cè)信道攻擊方式,它對處理器緩存(cache)[1-4,6-24]、內(nèi)存管理單元(memory management unit, MMU)[25]、快表(translation lookaside buffer, TLB)[26]、總線(bus)[27]等微架構(gòu)進(jìn)行監(jiān)控,并根據(jù)一些先驗(yàn)知識獲取出用戶程序的執(zhí)行狀態(tài),從而造成用戶信息泄露.

      微架構(gòu)側(cè)信道攻擊利用CPU硬件上的漏洞展開攻擊,它屬于一種來自硬件的威脅.處理器緩存具有3個(gè)特征:1)目前絕大多數(shù)處理器中有緩存結(jié)構(gòu);2)緩存可以擁有一個(gè)系統(tǒng)細(xì)粒度的數(shù)據(jù)訪問和指令執(zhí)行的狀態(tài)信息;3)緩存狀態(tài)不同時(shí),程序的執(zhí)行結(jié)果相同,但運(yùn)行時(shí)間等外部特性會(huì)存在較大的差異.攻擊者可以通過這些特征可以很方便地構(gòu)建側(cè)信道,因此這種攻擊方式最具有吸引力,相關(guān)研究也相對較多.2006年Osvik等人[8]使用Prime+Probe實(shí)現(xiàn)了在同一個(gè)處理器核上的側(cè)信道攻擊,并展示了如何獲取出AES加密算法的密鑰,隨后,由此展開了對這種攻擊方式的研究.2009年Ristenpart等人[9]將這種攻擊方式擴(kuò)展到云環(huán)境中,在EC2服務(wù)器上完成了微架構(gòu)側(cè)信道攻擊.但是之前的攻擊方式都是使用第一級緩存進(jìn)行攻擊,攻擊的范圍和能力都相對有限,Yarom等人[10]首次使用共享庫利用最后一級緩存(last level cache, LLC)完成跨核側(cè)信道攻擊.隨后,Liu等人[14]對不存在共享庫等共享文件的前提下使用LLC完成側(cè)信道攻擊的難點(diǎn)進(jìn)行分析,并成功使用Prime+Probe實(shí)現(xiàn)了跨核微架構(gòu)側(cè)信道攻擊.

      微架構(gòu)側(cè)信道攻擊尤其是基于緩存的微架構(gòu)側(cè)信道攻擊嚴(yán)重威脅用戶的信息安全,造成用戶密碼等敏感信息泄露.緩存?zhèn)刃诺拦舴烙胧┑南嚓P(guān)研究工作主要圍繞重構(gòu)軟件代碼、增加操作系統(tǒng)功能等方面展開.文獻(xiàn)[28-29]從緩存?zhèn)刃诺拦羰侄巍⒎烙绞降冉嵌葘彺鎮(zhèn)刃诺拦舻南嚓P(guān)工作進(jìn)行歸納總結(jié);文獻(xiàn)[30]重點(diǎn)考慮了嵌入式設(shè)備和云環(huán)境中的相關(guān)防御手段.但是這些研究只是從防御的具體措施、實(shí)施方法的角度和防御的層次對現(xiàn)有防御手段進(jìn)行分類,沒有從攻擊模型的角度解釋防御的安全性,同時(shí)對硬件架構(gòu)的關(guān)注相對較少.因此,本文從攻擊模型角度對現(xiàn)有的防御措施進(jìn)行分析比較,重點(diǎn)介紹了新型安全緩存架構(gòu)設(shè)計(jì)方案.

      本文的主要貢獻(xiàn)有3個(gè)方面:

      1) 總結(jié)歸納緩存?zhèn)刃诺拦舻哪P?,并結(jié)合攻擊模型討論具體的攻擊步驟;

      2) 對現(xiàn)有的防御手段進(jìn)行分析比較;

      3) 討論緩存?zhèn)刃诺拦舴烙胧┟媾R的挑戰(zhàn)以及未來研究方向.

      1 緩存?zhèn)刃诺拦?/h2>

      基于緩存的側(cè)信道攻擊可以實(shí)現(xiàn)跨進(jìn)程、跨處理器核以及跨虛擬機(jī)的攻擊,這種攻擊方式對市面上幾乎所有主流架構(gòu)的處理器(如Intel,AMD,ARM[31])等都有效,攻擊的范圍涵蓋RSA,AES,ECC等加密算法及其他軟件甚至操作系統(tǒng),可以在本地處理器上甚至遠(yuǎn)程虛擬機(jī)上開展攻擊.

      本節(jié)首先結(jié)合RSA加密算法,介紹了緩存?zhèn)刃诺馈奥┒础薄肮袅6取币约熬唧w的攻擊過程;之后討論了緩存?zhèn)刃诺拦裟P?

      微架構(gòu)側(cè)信道“漏洞”是指可執(zhí)行程序的某一部分區(qū)域,它可以位于代碼段,也可以位于數(shù)據(jù)段,這段代碼或數(shù)據(jù)本身邏輯和設(shè)計(jì)沒有什么問題,但是這部分內(nèi)存區(qū)域與用戶敏感信息相關(guān),攻擊者可以利用這段代碼的執(zhí)行情況或數(shù)據(jù)的訪問情況判斷出用戶信息,從而造成用戶信息泄露.例如,對于平方-乘算法而言,由于算法1行⑦~⑩是一個(gè)與用戶密鑰相關(guān)的代碼分支,也就是說,攻擊者可以根據(jù)這一分支的執(zhí)行情況推斷出用戶密鑰,因此稱算法1行⑦~⑩為微架構(gòu)側(cè)信道“漏洞”.

      算法1.平方-乘算法.

      ① functionexponent(b,e,m)

      ② begin

      ③x=1;

      ④ fori=|e|-1 downto 0 do

      ⑤x=x2;

      ⑥x=xmodn;

      ⑦ if (ei=1) then

      ⑧x=x×b;

      ⑨x=xmodm;

      ⑩ end if

      攻擊者可以通過用戶程序的整體執(zhí)行時(shí)間“監(jiān)聽”,也可以通過內(nèi)存訪問情況“監(jiān)聽”獲取用戶程序執(zhí)行信息,不同攻擊方式的信息來源不同,“監(jiān)聽”手段不同,我們稱攻擊者“監(jiān)聽”用戶程序的手段為攻擊者的攻擊粒度.

      一般來講,根據(jù)微架構(gòu)的側(cè)信道攻擊的獲取信息的來源,可以把攻擊方式分為:時(shí)間驅(qū)動(dòng)(time-based)攻擊、訪問驅(qū)動(dòng)(access-based)攻擊[32]和蹤跡驅(qū)動(dòng)(trace-based)攻擊,表1從信息來源、具體特點(diǎn)以及代表攻擊手段對3種攻擊方式進(jìn)行了比較.“Evict+Time”[8]是時(shí)間驅(qū)動(dòng)攻擊的典型代表,具體的攻擊過程為:

      1) 攻擊者測量程序在正常工作下執(zhí)行所需要的時(shí)間;

      2) 攻擊者根據(jù)之前確定的漏洞,填充對應(yīng)位置緩存,把這部分內(nèi)容從緩存中“清除”;

      3) 攻擊者再次測量程序執(zhí)行所需要的時(shí)間,利用整體上的時(shí)間差異判斷用戶程序的執(zhí)行流程.

      攻擊者可以通過程序整體執(zhí)行的時(shí)間差異推測出程序的執(zhí)行流程,此時(shí)攻擊粒度為整個(gè)用戶程序.但是,這種攻擊方式需要多次觸發(fā)用戶程序,且需要判斷程序的整體執(zhí)行時(shí)間,精度較差,探測時(shí)間較長,因此這類攻擊方式應(yīng)用范圍相對較小.

      “Flush+Reload”[10,33]是訪問驅(qū)動(dòng)攻擊的典型代表,這種攻擊方式的攻擊粒度為一個(gè)緩存塊,具體攻擊步驟為:

      1) 攻擊者根據(jù)具體的處理器判斷緩存命中與缺失的閾值;

      2) 根據(jù)之前確定的漏洞,flush指令強(qiáng)制清除對應(yīng)位置的緩存塊;

      3) 等待用戶程序執(zhí)行;

      4) 重新載入漏洞位置代碼,根據(jù)這次訪問時(shí)間與閾值的關(guān)系,判斷用戶程序執(zhí)行情況.

      而蹤跡驅(qū)動(dòng)需要采集加密算法執(zhí)行過程中所有緩存訪問的命中和缺失序列[12],并結(jié)合明文或密文推測出用戶密鑰,蹤跡驅(qū)動(dòng)的攻擊方式能夠獲取的信息最多,但往往需要操作系統(tǒng)等的支持才能獲取所有緩存訪問情況.

      在3種攻擊中,蹤跡驅(qū)動(dòng)需要系統(tǒng)提供的信息最多,需要能夠?qū)ο到y(tǒng)進(jìn)行持續(xù)的探測,精度也最高;時(shí)間驅(qū)動(dòng)只需要對程序的執(zhí)行時(shí)間進(jìn)行探測,利用不同硬件狀態(tài)的不同執(zhí)行時(shí)間,但是容易受到外界噪聲的干擾;訪問驅(qū)動(dòng)需要能訪問與用戶所使用的資源,判斷用戶是否執(zhí)行過與該區(qū)域相關(guān)的訪問操作.

      Table 1 Comparison Between Different Microarchitecture Side Channel Attacks表1 微架構(gòu)側(cè)信道攻擊方式比較

      1.1 攻擊者能力

      在討論基于緩存的側(cè)信道攻擊模型之前,我們首先假定攻擊者具有3方面能力:

      1) 攻擊者要與被攻擊的對象存在共享的硬件資源,包括緩存、總線等;

      2) 攻擊者可以隨意訪問自己用戶空間中的內(nèi)存;

      3) 攻擊者可以測量訪問某個(gè)內(nèi)存所需要的時(shí)間.

      這些條件在現(xiàn)代計(jì)算機(jī)系統(tǒng)中或者云環(huán)境中基本能夠滿足.

      一般而言,緩存?zhèn)刃诺拦艨梢愿鶕?jù)攻擊的目標(biāo)分為針對主機(jī)的攻擊和針對虛擬機(jī)的攻擊;根據(jù)攻擊的模式可以分為隱蔽信道攻擊和側(cè)信道攻擊;根據(jù)攻擊對象把攻擊分為針對不同加密算法的攻擊、針對操作系統(tǒng)的攻擊等.本文按照攻擊者對緩存的利用方式不同,把攻擊分為基于復(fù)用的緩存?zhèn)刃诺拦艉突跊_突的緩存?zhèn)刃诺拦?

      基于復(fù)用的緩存?zhèn)刃诺拦?,指攻擊者與用戶存在共享內(nèi)存,例如共享的庫、共享文件等,且攻擊者利用的“漏洞”存在于共享內(nèi)存中,攻擊者可以獲取到該區(qū)域的內(nèi)存訪問模式.

      基于沖突的緩存?zhèn)刃诺拦羰侵?,攻擊者與用戶不存在共享內(nèi)存,或有可能存在共享內(nèi)存,但是“漏洞”不存在于共享內(nèi)存中,攻擊者只能通過對自己的地址空間中的內(nèi)容訪問,影響正常用戶進(jìn)程中對緩存的使用,推斷出用戶對某物理地址的訪問模式.

      Fig. 1 Model of cache based side channel attack圖1 基于緩存的側(cè)信道攻擊模型

      1.2 攻擊步驟

      如圖1所示,根據(jù)攻擊者實(shí)施基于緩存的微架構(gòu)側(cè)信道攻擊需要采取的操作,攻擊過程可以分為4個(gè)步驟:

      1) 確定“微架構(gòu)側(cè)信道漏洞”;

      1.3 旅游產(chǎn)業(yè)的郁勃 目前,我國旅游產(chǎn)業(yè)正處于“多元化、全域化、高質(zhì)量、大眾化”新格局的構(gòu)建時(shí)期。2013年,國家出臺的《國民旅游休閑綱要(2013-2020)》提出:至2020年基本建成與小康社會(huì)相適應(yīng)的現(xiàn)代國民旅游休閑體系。隨后又陸續(xù)發(fā)布了關(guān)于“旅游業(yè)改革、特色旅游城鎮(zhèn)建設(shè)、旅游投資和消費(fèi)”等系列政策,“從旅游產(chǎn)品的供給到旅游產(chǎn)品質(zhì)量的提升”這一政策性導(dǎo)向從根本上奠定了我國旅游產(chǎn)業(yè)發(fā)展的基調(diào),這不僅是旅游產(chǎn)業(yè)發(fā)展的一項(xiàng)高標(biāo)準(zhǔn),更是對我國經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展的一個(gè)嚴(yán)要求,我國旅游業(yè)將進(jìn)入提質(zhì)增效的攻堅(jiān)階段。

      2) 確定攻擊者與用戶程序的“沖突域”;

      3) 攻擊者通過“沖突域”對“微架構(gòu)側(cè)信道漏洞”的位置進(jìn)行監(jiān)聽,獲取出微架構(gòu)狀態(tài)的變化;

      4) 攻擊者根據(jù)獲取到的信息以及一些先驗(yàn)知識,還原用戶信息.

      本節(jié)根據(jù)之前討論的攻擊者能力按照攻擊模型對攻擊步驟進(jìn)行詳細(xì)介紹.

      1.2.1 確定“漏洞”

      根據(jù)“漏洞”的目標(biāo)程序?qū)?yīng)地址所包含的內(nèi)容不同,微架構(gòu)側(cè)信道漏洞主要包括兩大類:1)基于指令執(zhí)行的漏洞;2)基于數(shù)據(jù)訪問的漏洞.

      基于指令執(zhí)行的漏洞是指用戶程序在執(zhí)行過程中,存在與用戶信息相關(guān)的指令控制流,例如把用戶信息作為分支跳轉(zhuǎn)指令的轉(zhuǎn)移條件等.通過這些對這些指令的監(jiān)控,攻擊者可以分析出用戶的指令執(zhí)行過程,之后對攻擊者的信息進(jìn)行推斷;基于數(shù)據(jù)訪問的漏洞是指用戶程序訪問的數(shù)據(jù)與用戶信息相關(guān),例如把用戶信息作為索引,查找某個(gè)地址的數(shù)據(jù)內(nèi)容.攻擊者可以通過觀察這些內(nèi)存的訪問情況,獲取出用戶信息.

      攻擊者在攻擊過程中,首先要確定出“漏洞”源,才能對“漏洞”確定的地址進(jìn)行“監(jiān)聽”.

      根據(jù)攻擊者和用戶共享的層面不同,攻擊可以分為跨進(jìn)程攻擊、跨處理器核攻擊、跨虛擬機(jī)攻擊.與其他的攻擊方式相比,跨虛擬機(jī)的攻擊首先要進(jìn)行“虛擬機(jī)同駐”的判斷,即判斷攻擊者和用戶所在的虛擬機(jī)之間的關(guān)系是處于同一個(gè)處理器核,還是同一個(gè)處理器中不同的處理器核上;或者不同的虛擬機(jī)運(yùn)行于不同的處理器上.通過“虛擬機(jī)同駐”判斷,可以分析出攻擊者與用戶之間的共享結(jié)構(gòu),就可以把問題轉(zhuǎn)化為其他2種攻擊方式.

      如圖2的處理器共享層次所示,跨進(jìn)程攻擊是指攻擊者和用戶運(yùn)行于同一個(gè)處理器核之上,可以共享的資源包括緩存、內(nèi)存、內(nèi)存控制器等資源;跨處理器核攻擊是指當(dāng)攻擊者和用戶運(yùn)行于不同的處理器核之上,可以共享的資源包括最后一級緩存、內(nèi)存等;跨虛擬機(jī)攻擊主要指在多租戶的云服務(wù)器中,攻擊者和用戶位于不同的虛擬機(jī)之上[34],完成“虛擬機(jī)同駐”后,跨虛擬機(jī)的攻擊方式與其他2種攻擊的攻擊方式無異,而當(dāng)處理器位于不同的物理封裝時(shí),共享內(nèi)存控制器同樣會(huì)成為被攻擊的對象[35].

      Fig. 2 Contended resources in a hierarchical multicore system[29]圖2 層次化多核系統(tǒng)中的爭用資源[29]

      當(dāng)攻擊者利用的“漏洞”存在于共享內(nèi)存中時(shí),攻擊者可以通過對該“漏洞”對應(yīng)地址進(jìn)行直接訪問,影響“漏洞”對應(yīng)內(nèi)容在緩存中的狀態(tài);而“漏洞”不存在于共享內(nèi)存中時(shí),攻擊者則需要首先分析出一組“虛擬地址集合”,攻擊者通過這個(gè)集合影響“漏洞”對應(yīng)的代碼或數(shù)據(jù)在緩存中的狀態(tài),這個(gè)集合被稱為“沖突域”.

      具體來講,沖突域[36]是一組虛擬地址的集合,攻擊者可以訪問這個(gè)集合中的地址.它具有3個(gè)特點(diǎn):

      1) “沖突域”與目標(biāo)地址影響同一個(gè)緩存微架構(gòu)狀態(tài)(比如都可以對同一塊Cache的狀態(tài)產(chǎn)生影響).

      2) 通過沖突域的訪問可以把目標(biāo)地址所涉及到的微架構(gòu)狀態(tài)初始化到攻擊者可以控制的狀態(tài).

      3) 通過沖突域的訪問可以感知目標(biāo)地址對應(yīng)的微架構(gòu)狀態(tài)的變化.

      當(dāng)選取的“沖突域”太大時(shí),一方面造成比較大的“噪聲”,對攻擊過程產(chǎn)生影響;另一方面會(huì)增加攻擊的時(shí)間.因此在尋找“沖突域”的過程中,較小的沖突集(small conflict groups, SCG)對攻擊過程更有意義[13].一般來講,攻擊者選擇的沖突域的大小與緩存關(guān)聯(lián)度相同[36-37].

      1.2.3 信息獲取

      微架構(gòu)狀態(tài)的不同,不會(huì)對程序的執(zhí)行結(jié)果產(chǎn)生影響,但是會(huì)對程序執(zhí)行過程產(chǎn)生影響.具體可以有3個(gè)方面的效果:

      1) 執(zhí)行時(shí)間的區(qū)別.數(shù)據(jù)或代碼位于不同的存儲器層次結(jié)構(gòu)時(shí),訪問時(shí)間會(huì)存在較大的差異.對于Xeon E5-2430處理器[10]從LLC讀取數(shù)據(jù)需要55~82個(gè)時(shí)鐘周期,而從內(nèi)存中讀取數(shù)據(jù)則需要230個(gè)時(shí)鐘周期;而對于Intel i5-2430M處理器[16],訪問LLC需要50個(gè)硬件周期,而訪問內(nèi)存則需要220個(gè)時(shí)鐘周期.

      2) 引發(fā)中斷事件.在使用Intel TSX指令的時(shí)候,當(dāng)檢測到緩存被驅(qū)逐時(shí),會(huì)引發(fā)事務(wù)中斷[21],攻擊者可以捕捉這些事件,對用戶行為進(jìn)行分析.

      3) 硬件結(jié)構(gòu)資源使用情況.程序在執(zhí)行過程中,有可能對某些硬件單元獨(dú)占或鎖定[27],導(dǎo)致別的程序不能使用,攻擊者可以通過對這些硬件資源的檢測,分析用戶正在執(zhí)行的一些操作.

      但是,對中斷事件的捕獲,需要操作系統(tǒng)的支持,對某些硬件結(jié)構(gòu)進(jìn)行監(jiān)控分析,精度較差,應(yīng)用范圍相對較小.而緩存幾乎存在于所有的處理器中,且粒度較細(xì),精度較高,因此把緩存狀態(tài)作為獲取信息的途徑是最為廣泛的.

      攻擊者通過緩存狀態(tài)獲取的信息,需要有一個(gè)比較精確的時(shí)間統(tǒng)計(jì)信息,判斷“漏洞”位置所處的存儲器層次結(jié)構(gòu).目前攻擊者獲取“精準(zhǔn)時(shí)鐘”有3個(gè)途徑[38]:

      1) 硬件內(nèi)部的時(shí)鐘源;

      2) 其他計(jì)算機(jī)或設(shè)備的時(shí)鐘源;

      3) 軟件生成的虛擬時(shí)鐘源.

      1.2.4 信息還原

      攻擊者獲取到微架構(gòu)狀態(tài)信息的變化后,需要根據(jù)一定的先驗(yàn)知識,對獲取到的內(nèi)存訪問模式等信息進(jìn)行處理,包括消除信息中的噪聲、還原信息的控制流、還原用戶內(nèi)存訪問情況等.通過這些操作及分析,攻擊者可以獲取密鑰[16]、用戶行為信息[13]、內(nèi)核空間的分布信息[24]等.

      但是,在實(shí)際的攻擊過程中,這一步往往是通過離線操作進(jìn)行的,攻擊者不需要再與用戶進(jìn)行信息交互,也不需要“監(jiān)聽”內(nèi)存訪問情況,因此攻擊者就不需要過多關(guān)注“執(zhí)行環(huán)境”,而本文重點(diǎn)關(guān)注攻擊者在攻擊過程中對硬件結(jié)構(gòu)等的利用情況,討論攻擊者和用戶通過“硬件架構(gòu)”完成“交互”,因此這部分不作為本文的討論內(nèi)容.

      2 防御措施

      根據(jù)1.2節(jié)攻擊步驟的討論,攻擊者想要實(shí)施側(cè)信道攻擊,首先就要判斷出“監(jiān)聽位置”,即找到緩存?zhèn)刃诺馈奥┒础保黄浯涡枰_定“監(jiān)聽手段”,即“沖突域”;最后攻擊者才能“監(jiān)聽”出用戶程序的執(zhí)行情況,完成信息竊取.

      若攻擊者完成信息竊取之前的相關(guān)工作,攻擊也就無從談起.因此,根據(jù)防御的目的和效果,本文把目前的防御手段分為代碼檢測、緩解“漏洞”、降低測量精度3類.

      2.1 代碼檢測

      緩存?zhèn)刃诺罊z測技術(shù)(cache side channel detec-tion technology),即代碼檢測技術(shù),是指通過檢測用戶程序,判斷所執(zhí)行程序中是否存在可以被緩存?zhèn)刃诺浪玫摹奥┒础钡募夹g(shù).它從用戶程序的角度實(shí)現(xiàn)對緩存?zhèn)刃诺赖姆烙?

      表2列舉了近年來關(guān)于代碼檢測工具的相關(guān)研究,并從檢測工具的分析方法、輸入輸出、可以發(fā)現(xiàn)的漏洞類型,以及是否需要用戶程序的源代碼角度進(jìn)行比較,最后展示了各個(gè)檢測工具的分析性能.

      代碼檢測技術(shù)主要包括兩大類:靜態(tài)分析和動(dòng)態(tài)分析.Doychev等人[39]及其擴(kuò)展工作[40]使用抽象解釋的方式,對3種常見的基于Cache的攻擊方式進(jìn)行分析,首次采用自動(dòng)化的方式檢測緩存?zhèn)刃诺缆┒?CacheAudit及其擴(kuò)展工作給出的是用戶由于微架構(gòu)側(cè)信道漏洞存在造成的信息泄露的上限,但是有可能會(huì)給出一個(gè)過高的上限而導(dǎo)致結(jié)果無意義.也就是說,CacheAudit工具只能驗(yàn)證代碼的安全性,而不能判斷代碼是不安全的.

      靜態(tài)分析的方式雖然具有較高的代碼覆蓋率,但是只能對程序是否存在側(cè)信道的風(fēng)險(xiǎn)進(jìn)行判斷,不能準(zhǔn)確地描述出漏洞的具體位置和漏洞的成因.Zankl等人[41]使用PIN作為動(dòng)態(tài)二進(jìn)制測量工具,對二進(jìn)制代碼運(yùn)行過程中的執(zhí)行過程的內(nèi)存訪問情況進(jìn)行跟蹤,檢測微架構(gòu)側(cè)信道漏洞的位置.此外,Carré等人[42]采用動(dòng)靜結(jié)合的分析方式,把依賴于密碼的控制流或者依賴查找表作為可能的側(cè)信道漏洞點(diǎn),在“可疑點(diǎn)”處設(shè)置斷點(diǎn),統(tǒng)計(jì)代碼的執(zhí)行數(shù)目和訪問模式,對代碼中存在的這些可能的漏洞進(jìn)行進(jìn)一步的確認(rèn),但是在分析過程中,單純考慮了內(nèi)存查找表訪問和控制流程,沒有過多地考慮Cache本身的影響.針對這個(gè)問題,Irazoqui等人[43]在MI-Tool中首先使用KLEE作為污點(diǎn)分析的工具,分析出密碼相關(guān)的指令或數(shù)據(jù),之后在這些“疑點(diǎn)”前后分別插入Cache強(qiáng)制清除和Cache重新訪問的代碼,使用不同的輸入執(zhí)行代碼,獲得Cache的蹤跡,最終對這些“疑點(diǎn)”是否屬于側(cè)信道進(jìn)行驗(yàn)證.

      之前的檢測工具雖然可以對用戶程序進(jìn)行檢測,但是代碼覆蓋率相對較低,且沒有展示出攻擊者對“漏洞”的具體利用手段.隨后,Brotzman等人[44]提出CaSym,為了避免不同的編譯器對檢測工具的影響,CaSym使用IR-level代碼作為輸入,并對Cache的行為建模,使用抽象的Cache模型,使用符號執(zhí)行對程序的執(zhí)行路徑進(jìn)行分析,對目前已知的基于Cache的攻擊方式進(jìn)行檢測.CacheD[45]將一個(gè)具體的程序執(zhí)行蹤跡作為輸入,并在符號執(zhí)行期間符號化敏感信息,以識別敏感信息相關(guān)的內(nèi)存訪問.CacheD探索與輸入動(dòng)態(tài)跟蹤相同的執(zhí)行路徑.但是只能探測與輸入相同的路徑,那些未被探測的代碼中的漏洞或那些由依賴于秘密的分支引起的漏洞不能被緩存檢測到.Weiser等人[46]開發(fā)了DATA工具.該工具使用不同輸入激勵(lì)多次執(zhí)行程序,找出程序執(zhí)行過程中地址軌跡的不同點(diǎn);再用一個(gè)固定的輸入與多個(gè)隨機(jī)的輸入,統(tǒng)計(jì)找出真正的泄漏點(diǎn),最后對安全關(guān)鍵軟件進(jìn)行測試和驗(yàn)證,揭示用戶秘密信息與程序執(zhí)行之間的依賴關(guān)系.

      漏洞,“×”表示不能檢測出這種類型漏洞.

      代碼檢測不能同時(shí)兼顧高精度、代碼覆蓋率以及整個(gè)系統(tǒng)的擴(kuò)展性,因此在實(shí)際使用過程中受到了很大的限制.Wang等人[47]發(fā)現(xiàn)程序的密鑰信息以及其依賴關(guān)系通常只會(huì)在很小的一個(gè)程序上表現(xiàn),其他大量的變量只是用來維護(hù)公共信息.根據(jù)這個(gè)特點(diǎn),他們設(shè)計(jì)了“秘密增強(qiáng)符號域”(SAS),開發(fā)了一個(gè)新的靜態(tài)檢測側(cè)信道漏洞的工具——CacheS,對密鑰相關(guān)的代碼進(jìn)行細(xì)粒度的分析,而對其他代碼采用可伸縮的探測方式.通過這種分析方式,作者定位出了54個(gè)之前沒有提及的漏洞點(diǎn).此外,Gridin等人[48]利用GDB調(diào)試工具開發(fā)了Triggerflow,在源注釋的幫助下動(dòng)態(tài)分析二進(jìn)制文件,可以以一個(gè)較快的速度發(fā)現(xiàn)OpenSSL庫中可能存在的緩存?zhèn)刃诺里L(fēng)險(xiǎn).

      為了能夠?qū)幾g器的輸出進(jìn)行分析,Wichelmann等人[49]開發(fā)了一種可擴(kuò)展的MicroWalk框架,并對2個(gè)廣泛應(yīng)用但閉源的加密算法庫Intel IPP和Microsoft CNG中的15個(gè)不同的加密算法進(jìn)行驗(yàn)證,解釋了二進(jìn)制代碼中是否存在緩存?zhèn)刃诺里L(fēng)險(xiǎn)、緩存?zhèn)刃诺里L(fēng)險(xiǎn)的位置以及緩存?zhèn)刃诺缆┒袋c(diǎn)的位置與密鑰的關(guān)系等相關(guān)問題.

      之前的代碼檢測工具可以對用戶程序中的基于數(shù)據(jù)訪問或控制流的“漏洞”進(jìn)行檢測,但是對Spectre[1]等攻擊方式卻無能為力.SpecFuzz[50]首次使用動(dòng)態(tài)分析的方式實(shí)現(xiàn)了對代碼中潛在的預(yù)測執(zhí)行漏洞進(jìn)行判斷,SpecuSym[51]基于符號執(zhí)行的方法,系統(tǒng)地探測用戶執(zhí)行空間,對分支的推測行為進(jìn)行建模.在動(dòng)態(tài)執(zhí)行期間,檢查緩存行為,判斷可能出現(xiàn)的風(fēng)險(xiǎn).

      2.2 緩解“漏洞”

      代碼檢測只能判斷用戶程序中是否存在“漏洞”,但是卻不能消除“漏洞”.因此,本節(jié)對常用的緩解緩存?zhèn)刃诺拦舻募夹g(shù)進(jìn)行歸納總結(jié).

      目前常見的緩解“緩存?zhèn)刃诺缆┒础钡姆椒ㄖ饕ǎ汉愣〞r(shí)間技術(shù)、緩存清除以及編譯器輔助安全措施等.恒定時(shí)間技術(shù)(constant-time technology)[52]是一種用于抵抗基于微架構(gòu)的時(shí)間側(cè)信道攻擊的有效手段.其主要思想是通過軟件的方式,使不同表項(xiàng)和指令流的執(zhí)行過程中的訪問時(shí)間相同,避免程序執(zhí)行時(shí)間與執(zhí)行流程之間的相關(guān)性,從而消除“側(cè)信道漏洞”.NaCl[53]避免從密碼到加載地址和分支預(yù)測的數(shù)據(jù)通路,消除了許多已經(jīng)發(fā)現(xiàn)的漏洞;Andrysco等人[54]設(shè)計(jì)了一個(gè)固定時(shí)間的數(shù)學(xué)庫libfixedtimefixpoint,使用“恒定時(shí)間”策略,保證程序本身的安全性.Panda[55]采用了一種“向后缺失觸發(fā)硬件預(yù)取技術(shù)”(BITP),在攻擊者“觀察”內(nèi)存訪問模式之前把缺失內(nèi)容完成硬件預(yù)期,不需要軟件、操作系統(tǒng)的支持,就可以消除攻擊者的觀察接口,使攻擊者無法觀察到用戶的內(nèi)存訪問模式.表3所示為緩解緩存?zhèn)刃诺赖募夹g(shù).

      對于恒定時(shí)間技術(shù)而言,一方面需要解決如何實(shí)現(xiàn)“恒定時(shí)間”,另一方面是如何“驗(yàn)證程序是恒定時(shí)間的”.而且,隨著程序規(guī)模的擴(kuò)大,如何確定程序是“時(shí)間固定的”,是一個(gè)具有挑戰(zhàn)性的問題.Almeida等人[56]對程序進(jìn)行LLVM級邏輯驗(yàn)證,開發(fā)了用于分析程序“恒定時(shí)間特征”的自動(dòng)化驗(yàn)證工具ct-verif,在NaCl,OpenSSL,FourQ等多個(gè)商用的庫上進(jìn)行驗(yàn)證,較為快捷地實(shí)現(xiàn)了“恒定時(shí)間”的驗(yàn)證.但是程序執(zhí)行與硬件架構(gòu)相關(guān),因此需要從匯編代碼級別對程序進(jìn)行分析.Bond等人[57]開發(fā)了Vale工具,把帶注釋的匯編語言轉(zhuǎn)化為抽象語法樹,在ARM和X86平臺上對SHA-256算法、X64平臺的Poly1305的代碼進(jìn)行分析,結(jié)果表明:Vale可以對現(xiàn)有代碼的正確性、安全性進(jìn)行驗(yàn)證.對于二進(jìn)制代碼而言,Daniel等人[58]開發(fā)了BINSECREL,對程序的執(zhí)行流進(jìn)行分析,并通過對338種密碼的實(shí)現(xiàn)方案進(jìn)行驗(yàn)證,極大地提高了對代碼恒定時(shí)間的驗(yàn)證速度和精度.此外,文獻(xiàn)[59]中使用靜態(tài)信息流分析的方法對加密算法庫中的代碼進(jìn)行驗(yàn)證.

      Table 3 Cache-Based SCA Mitigation Technology表3 緩解緩存?zhèn)刃诺赖募夹g(shù)

      緩存清除技術(shù)(cache flushing technology),是指通過操作系統(tǒng)等的輔助,清除由于用戶程序執(zhí)行帶來的微架構(gòu)狀態(tài)的變化.Zhang等人[60]周期性地清除L1緩存,消除了攻擊者對時(shí)間信息的利用,他們采用2種模式,跳過不必要的緩存清除操作,實(shí)現(xiàn)不到7%的性能開銷;為了降低性能開銷,Godfrey等人[61]在虛擬機(jī)調(diào)度器發(fā)生內(nèi)容切換的時(shí)候進(jìn)行清除,新字段將添加到VCPU,以指示當(dāng)前緩存數(shù)據(jù)的擁有者,而切換到空閑或相同的域時(shí)則不會(huì)發(fā)生緩存刷新.

      修改用戶程序以緩解“漏洞”,無疑會(huì)增加用戶程序的開發(fā)周期和開發(fā)成本,而編譯器輔助技術(shù)(compiler-assist)則可以極大地提高開發(fā)效率,實(shí)現(xiàn)對緩存?zhèn)刃诺拦舻姆烙?Crane等人[62]采用“移動(dòng)目標(biāo)防御”的防御理念,把一個(gè)代碼編譯為多個(gè)版本,各個(gè)版本的不同在于插入了不同數(shù)目的空操作、函數(shù)位置、寄存器隨機(jī)化、指令替換等.程序在執(zhí)行過程中動(dòng)態(tài)選擇執(zhí)行路徑,從而產(chǎn)生不同的結(jié)果,擾亂攻擊者對信息的探測,實(shí)現(xiàn)緩存?zhèn)刃诺婪烙?Khan等人[63]開發(fā)了一個(gè)編譯器輔助調(diào)度程序Biscuit,它可以非常高精度地檢測到針對多租戶服務(wù)器場中調(diào)度進(jìn)程的基于緩存的側(cè)通道攻擊.用戶以6%的性能為代價(jià),可以實(shí)現(xiàn)對Flush+Flush,Flush+Reload,Prime+Probe等主流攻擊方式的防御.

      2.3 降低測量精準(zhǔn)度

      攻擊者在實(shí)施微架構(gòu)側(cè)信道攻擊時(shí),需要獲取到用戶程序的執(zhí)行情況、用戶程序的內(nèi)存訪問模式后才能完成后續(xù)的攻擊,而攻擊者獲取信息的精準(zhǔn)度直接影響攻擊的效果甚至攻擊的成功與否.

      目前的防御手段主要通過操作系統(tǒng)、虛擬機(jī)管理程序以及設(shè)計(jì)新型安全緩存架構(gòu)提高映射關(guān)系的不確定性,降低資源共享的概率,從而降低攻擊者對用戶訪問模式的獲取精準(zhǔn)度,提高系統(tǒng)的安全性,實(shí)現(xiàn)對緩存?zhèn)刃诺赖姆烙?

      2.3.1 干擾信息獲取

      表4展示了從操作系統(tǒng)(operating system, OS)和虛擬機(jī)管理程序(virtual machine manager, VMM)的角度降低攻擊者測量精度的相關(guān)研究工作,并比較了不同防御措施需要修改的層次結(jié)構(gòu).

      Table 4 OS & VMM-Based Countermeasure表4 基于操作系統(tǒng)和VMM的防御措施

      對于虛擬機(jī)管理程序而言,StealthMem[64]為每個(gè)處理器核管理一組鎖定的Cache line,這些Cache line不會(huì)被驅(qū)逐,每個(gè)虛擬機(jī)可以把自己的敏感數(shù)據(jù)加載到鎖定的Cache line中,使其對其他的虛擬機(jī)不可見.Han等人[65]則從虛擬機(jī)分配的角度出發(fā),提出PSSF虛擬機(jī)分配策略.隨后,Jia等人[66]從運(yùn)行的主機(jī)數(shù)量和CPU利用率角度進(jìn)行優(yōu)化,減少能耗,攻擊效率和攻擊范圍表明,采用合適的虛擬機(jī)分配策略可以有效降低虛擬機(jī)共存的攻擊的成功率.劉維杰[70]提出一個(gè)全局的動(dòng)態(tài)時(shí)鐘模糊方案,利用最新的硬件虛擬化擴(kuò)展技術(shù),提供一個(gè)輕量級和動(dòng)態(tài)的環(huán)境,使系統(tǒng)范圍內(nèi)的側(cè)信道危害得到緩解.

      除了虛擬機(jī)管理程序,相關(guān)研究表明也可以從操作系統(tǒng)的角度提供安全防御.Zhou等人[67]提出了CacheBar,采用新的復(fù)制訪問管理模式對多用戶的物理內(nèi)存頁進(jìn)行管理,同時(shí),設(shè)計(jì)了一種動(dòng)態(tài)可維護(hù)的內(nèi)存頁面隊(duì)列管理機(jī)制避免攻擊者對緩存的惡意探.Sprabery等人[68]則認(rèn)為,全部隔離用戶頁面會(huì)造成存儲上的浪費(fèi),因此他們從側(cè)信道的根源入手,把程序劃分為多個(gè)安全隔離區(qū)域和正常區(qū)域,允許同一個(gè)安全域內(nèi)的用戶共享內(nèi)存頁,當(dāng)用戶在不同的安全域進(jìn)行切換的時(shí)候,對硬件的狀態(tài)進(jìn)行清除.更進(jìn)一步地,Nomani等人[69]使用HPC預(yù)測出程序的下一個(gè)執(zhí)行階段,并通過操作系統(tǒng)的調(diào)度,把預(yù)測出相同程序階段的應(yīng)用調(diào)度到不同的處理器核上,通過動(dòng)態(tài)調(diào)度避免底層硬件結(jié)構(gòu)的爭用,緩解側(cè)信道攻擊的影響.

      操作系統(tǒng)方面對內(nèi)存進(jìn)行防護(hù)很多時(shí)候需要硬件的支持,才能夠在開銷盡可能小的情況下完成.Ge等人[71]對現(xiàn)有的主流處理器進(jìn)行分析,研究表明現(xiàn)有的結(jié)構(gòu)不能支撐軟件的防護(hù).他們呼吁處理器廠商對現(xiàn)有的指令集進(jìn)行安全擴(kuò)充,并從5個(gè)方面對安全擴(kuò)充指令集進(jìn)行建議,以便于從操作系統(tǒng)等方面提供安全防護(hù).

      除了通過操作系統(tǒng)或虛擬機(jī)管理程序的調(diào)度外,還可以通過增加噪聲的方式,干擾用戶對信息的“監(jiān)聽”過程.Wang等人[72]利用DRAM更新作為噪聲源,設(shè)計(jì)了MemJam架構(gòu),以較小的代價(jià)避免攻擊者通過共享內(nèi)存控制器“監(jiān)聽”用戶程序的內(nèi)存訪問情況.

      2.3.2 新型安全架構(gòu)

      使用硬件手段改變增加攻擊者獲取信息的難度,可以擾亂攻擊者獲取由于用戶操作而對微架構(gòu)狀態(tài)產(chǎn)生的影響.表5列舉了近幾年的新型Cache架構(gòu),并從新型緩存架構(gòu)設(shè)計(jì)方案、安全性、開銷等方面對相關(guān)工作進(jìn)行比較.

      Table 5 Comparison Between Cache Architecture表5 Cache架構(gòu)及其比較

      1) 隔離架構(gòu)

      一種增加攻擊者獲取有效信息的緩存設(shè)計(jì)方案是通過隔離手段,即雖然攻擊者與用戶仍然共享緩存,但卻使用不同的緩存塊,從而避免攻擊者判斷用戶程序的內(nèi)存訪問情況.Wang等人[73]提出了PLCache設(shè)計(jì)方案,在原有的緩存架構(gòu)中增加Lock和ID位,并且軟件程序員在程序運(yùn)行時(shí),可以通過操作系統(tǒng)把某個(gè)具體的緩存塊鎖定,當(dāng)程序執(zhí)行結(jié)束后再解除鎖定;鎖定的方式雖然可以提高安全性,但是會(huì)導(dǎo)致緩存利用率降低,針對這個(gè)問題,Domnitser等人[74]提出NoMo Cache架構(gòu),為所有正在運(yùn)行的進(jìn)程在對應(yīng)的每個(gè)緩存集中預(yù)留Y個(gè)Cache line,通過對進(jìn)程預(yù)留Cache line的方式對安全性和性能進(jìn)行權(quán)衡,盡可能避免側(cè)信道的攻擊.

      此外,很多人開始探索采用動(dòng)態(tài)分隔的方式[87-88]提高安全性.如果動(dòng)態(tài)分隔策略依賴于程序運(yùn)行狀態(tài)時(shí),仍然會(huì)產(chǎn)生側(cè)信道的風(fēng)險(xiǎn),Wang等人[75]提供了一種安全的動(dòng)態(tài)高速緩存分區(qū)方案,根據(jù)應(yīng)用的不同安全等級進(jìn)行分類,在提高緩存性能的同時(shí),滿足了分層安全的策略需求,與靜態(tài)分區(qū)的方式相比,這種動(dòng)態(tài)隔離的方式可以平均提升12.5%的性能.Werner等人[76]提出ScatterCache架構(gòu),使用關(guān)鍵字映射的方式實(shí)現(xiàn)偏置相聯(lián)緩存,并對不同的安全域進(jìn)行區(qū)分,使共享緩存的行為變得不可預(yù)測,實(shí)現(xiàn)對基于緩存?zhèn)刃诺赖姆烙?

      針對共享內(nèi)存控制器的攻擊,Wang等人[89]根據(jù)傳統(tǒng)內(nèi)存控制器的特點(diǎn),分析攻擊者對內(nèi)存控制器的利用方式,根據(jù)用戶安全域的不同,設(shè)計(jì)了一種基于靜態(tài)時(shí)間隙的內(nèi)存控制器隊(duì)列調(diào)度算法,避免了攻擊者對用戶信息的探測.

      2) 動(dòng)態(tài)映射架構(gòu)

      除了靜態(tài)和動(dòng)態(tài)分隔的方案之外,還可以通過隨機(jī)映射的方案,擾亂攻擊者對用戶信息的判斷,實(shí)現(xiàn)對緩存?zhèn)刃诺拦舻姆烙?

      Wang等人[73]設(shè)計(jì)了RPCache架構(gòu),使用一個(gè)重映射表實(shí)現(xiàn)第一級數(shù)據(jù)緩存Cache與內(nèi)存映射的隨機(jī)性,降低攻擊者對用戶訪問數(shù)據(jù)的探測精度.文獻(xiàn)[77]分析Prime+Probe在指令緩存上的實(shí)現(xiàn)方式,通過SVM(support vector machine)分類矩陣對使用隨機(jī)映射策略的指令緩存的緩存蹤跡進(jìn)行定量分析,并實(shí)現(xiàn)了對第一級指令緩存的隨機(jī)映射方案.更進(jìn)一步地,NewCache[78]提供了一種隨機(jī)映射的方法,使用CAM作為動(dòng)態(tài)行號映射器,把原來的直接映射緩存的固定地址譯碼器替換為動(dòng)態(tài)行號映射器,擾亂了攻擊者對Cache line訪問情況的探測,并使用65-nm CMOS工藝對原型系統(tǒng)進(jìn)行驗(yàn)證.

      雖然采用映射表的方式可以提高對側(cè)信道攻擊的抵抗能力,但是采用查找表的方式會(huì)受到存儲代價(jià)的限制,導(dǎo)致其只能應(yīng)用于較小的緩存.針對這個(gè)問題,Qureshi[79]設(shè)計(jì)了CEASE架構(gòu),如圖3所示.在訪問緩存時(shí),采用低延時(shí)加密解密模塊(LLBC),而對除緩存外的其他模塊則是透明的,用較小的代價(jià)實(shí)現(xiàn)了對緩存?zhèn)刃诺赖姆烙?,同時(shí)又將隨機(jī)映射的方式擴(kuò)展到最后一級緩存.

      Fig. 3 Overview of CEASE[79]圖3 CEASE 總體結(jié)構(gòu)圖[79]

      為了避免靜態(tài)密鑰被攻擊者探測,Qureshi[80]在CEASE的基礎(chǔ)上,對LLBC的加密密鑰不斷改變,即CEASER架構(gòu),進(jìn)一步提升系統(tǒng)魯棒性.算法的重映射速率會(huì)影響對緩存?zhèn)刃诺赖姆烙Ч?但是,他們發(fā)現(xiàn),通過修改查找沖突域的收縮算法,或者根據(jù)處理器的緩存替換算法,能夠有效地縮短攻擊者查找沖突域的時(shí)間,因此采用偏置映射的方式,把原有的CEASER改進(jìn)為CEASER-S,把高速緩存分為多個(gè)區(qū),不同的區(qū)中使用不同的Hash函數(shù)進(jìn)行映射,把同一緩存集中的數(shù)據(jù)映射到不同的位置.隨后,Ramkrishnan等人[81]發(fā)現(xiàn)CEASER-S架構(gòu)使用二分查找攻擊方式,同樣可以把搜尋SCG的時(shí)間復(fù)雜度變?yōu)镺(N),因此他們使用間接查找表的方式實(shí)現(xiàn)“高偏置”和“高刷新率”,對基于沖突的緩存?zhèn)刃诺拦魧?shí)現(xiàn)防御.

      當(dāng)對整個(gè)LLC進(jìn)行隨機(jī)映射時(shí),性能損耗較大,且重映射的方式會(huì)增加對內(nèi)存的訪問延時(shí)和緩存缺失的概率.Tan等人[82]認(rèn)為并不需要對整體進(jìn)行隨機(jī)化映射,提出PhantomCache的局部隨機(jī)化的緩存架構(gòu),以0.5%的性能下降,在保證隨機(jī)化的同時(shí),也實(shí)現(xiàn)了對微架構(gòu)側(cè)信道攻擊的防御.

      3) 緩存替換策略

      根據(jù)緩存的工作原理,當(dāng)用戶訪問的數(shù)據(jù)不在緩存中時(shí),需要從內(nèi)存中讀取并寫到緩存中,攻擊者在攻擊中,也需要依賴這一條件.Liu等人[83]提出了一種隨機(jī)換入Cache的結(jié)構(gòu),這種架構(gòu)的基本原理是當(dāng)發(fā)生Cache miss時(shí),把從內(nèi)存中獲取到的數(shù)據(jù)發(fā)送給CPU,但并不把這個(gè)數(shù)據(jù)保留到緩存,而是把這個(gè)數(shù)據(jù)“附近”的值填入到緩存中,在保證局部性的同時(shí)實(shí)現(xiàn)安全防御.Yan等人[84]發(fā)現(xiàn)當(dāng)攻擊者在多核處理器上開展側(cè)信道攻擊時(shí),會(huì)存在“包容性受害緩存”(inclusive victim),攻擊者需要利用“包容性受害緩存”獲取信息,因此,他們提出通過采用新的緩存塊的替換策略SHARP,避免攻擊者通過“inclusive victim”獲取到用戶的有用信息,從而實(shí)現(xiàn)安全防御.

      4) 動(dòng)態(tài)緩存架構(gòu)

      攻擊者對塊的大小、關(guān)聯(lián)度、緩存替換算法、內(nèi)存到緩存的映射函數(shù)等緩存架構(gòu)信息掌握得越少,攻擊的難度越高,攻擊效果越差.因此,Bandara等人[85]從這個(gè)角度出發(fā),通過動(dòng)態(tài)改變緩存塊的大小、緩存的相關(guān)聯(lián)度以及緩存的大小,設(shè)計(jì)了自適應(yīng)緩存架構(gòu).實(shí)驗(yàn)表明,在運(yùn)行過程中動(dòng)態(tài)改變緩存參數(shù),最多可以降低90%的攻擊精度;Dai等人[86]根據(jù)具體應(yīng)用設(shè)計(jì)了多種不同緩存結(jié)構(gòu),并在運(yùn)行過程中不斷改變緩存配置,使攻擊者無法采集到足夠的信息,從而避免緩存?zhèn)刃诺拦?

      2.4 防御方法總結(jié)

      如表6所示,軟件檢測的防御方式不需要改變現(xiàn)有的操作系統(tǒng)、硬件結(jié)構(gòu),只需在程序發(fā)布時(shí)對應(yīng)用進(jìn)行檢測或用戶在本地進(jìn)行檢測,部署方式最為靈活便捷.但是檢測攻擊的精準(zhǔn)度、覆蓋率、檢測速度以及擴(kuò)展性會(huì)直接影響檢測工具在實(shí)際過程中的使用.

      Table 6 Cache Side Channel Attack Countermeasure表6 緩存?zhèn)刃诺拦舴烙胧?/p>

      使用軟件方式對代碼進(jìn)行修正,緩解“側(cè)信道漏洞”同樣不需要改變操作系統(tǒng)等,只需要采用“恒定時(shí)間技術(shù)”或“加入噪聲”等手段就可以完成防御.但是,一方面,開發(fā)人員在設(shè)計(jì)時(shí)還需要考慮“恒定時(shí)間”等問題,增加了開發(fā)的周期和負(fù)擔(dān),同時(shí)驗(yàn)證代碼的“恒定時(shí)間”也是一個(gè)很大的挑戰(zhàn);另一方面,對代碼進(jìn)行修正無疑會(huì)降低程序執(zhí)行效率,影響程序性能.

      從操作系統(tǒng)(OS)或虛擬機(jī)管理程序(VMM)的角度實(shí)現(xiàn)不同安全域之間的隔離,增加攻擊者獲取信息的精準(zhǔn)度,或者改變虛擬機(jī)的分配策略,實(shí)現(xiàn)對緩存?zhèn)刃诺拦舻姆烙?,但是管理粒度相對較粗,增大操作系統(tǒng)的負(fù)擔(dān),還有可能需要硬件的支持.

      緩存?zhèn)刃诺拦糁?,攻擊者是利用硬件結(jié)構(gòu)的特點(diǎn)開展攻擊,而新型安全緩存架構(gòu)設(shè)計(jì)直接影響了緩存?zhèn)刃诺拦糁蝎@取信息的途徑,可以有效阻止緩存?zhèn)刃诺拦簦覍Σ僮飨到y(tǒng)、用戶程序等的要求相對較小,對用戶程序的性能影響也最小,因此受到了越來越多的研究和關(guān)注.但是這種方式需要硬件的更新和硬件廠商的支持,因此部署周期相對較長.

      3 防御面臨的挑戰(zhàn)

      隨著越來越多的基于處理器的硬件攻擊方式的出現(xiàn),學(xué)術(shù)界和廠商在研究如何能夠提高處理器的性能和降低處理器功耗的同時(shí),也開始對處理器的安全性進(jìn)行考慮.基于微架構(gòu)的側(cè)信道攻擊屬于側(cè)信道攻擊的一種,嚴(yán)重威脅了用戶的信息安全,與傳統(tǒng)的側(cè)信道攻擊不同的是,微架構(gòu)側(cè)信道攻擊利用處理器中的微架構(gòu)狀態(tài)傳遞信息,打破了操作系統(tǒng)等提供的安全隔離,攻擊者可以通過運(yùn)行于同一硬件結(jié)構(gòu)上的進(jìn)程“竊取”用戶信息,造成密鑰等信息泄露;攻擊者的攻擊范圍包括運(yùn)行于同一個(gè)實(shí)體設(shè)備的進(jìn)程,也可以包括云環(huán)境共享硬件結(jié)構(gòu)的不同租戶;攻擊者可以通過直接操作,也可以通過遠(yuǎn)程操作完成攻擊.未來緩存?zhèn)刃诺赖难芯恐饕?個(gè)方面:

      1) 定位緩存?zhèn)刃诺缆┒?/p>

      在防御方面,硬件的更新迭代周期比較長,更新的代價(jià)較大,利用軟件實(shí)現(xiàn)對側(cè)信道的防御措施可以以最快的速度完成部署,但是使用軟件進(jìn)行防護(hù)時(shí),或者在對即將發(fā)布程序的安全性進(jìn)行驗(yàn)證時(shí),需要知道軟件中是否存在側(cè)信道漏洞以及側(cè)信道漏洞的位置.

      CacheS[47],DATA[46],CacheAudit[40],CacheD[45]等工具可以對軟件進(jìn)行分析,檢測程序中是否有可能遭受被基于緩存的側(cè)信道攻擊,以及程序的哪些位置可能遭受這種攻擊,另一方面,攻擊者也可以利用發(fā)現(xiàn)的漏洞對用戶程序開展攻擊.但是,作為一種與處理器硬件緊密相關(guān)的攻擊方式,在分析程序是否存在“微架構(gòu)側(cè)信道漏洞”時(shí),需要對硬件平臺以及緩存結(jié)構(gòu)進(jìn)行考慮,而不能僅從軟件的角度對程序進(jìn)行分析.

      在對緩存?zhèn)刃诺缆┒催M(jìn)行分析時(shí),需要兼顧緩存替換算法、緩存塊大小、緩存組相連度等緩存架構(gòu)參數(shù)的硬件模型描述緩存行為,才能較為準(zhǔn)確地判斷出程序中是否存在“緩存?zhèn)刃诺缆┒础?程序在真實(shí)環(huán)境中運(yùn)行時(shí),硬件結(jié)構(gòu)的不同、指令集的不同,操作系統(tǒng)的不同都會(huì)對“緩存?zhèn)刃诺缆┒础钡呐袛喈a(chǎn)生影響.此外在使用各種攻擊分析定位程序中的漏洞時(shí),仍會(huì)存在代碼覆蓋率、檢測時(shí)間、檢測結(jié)果解釋性等問題.如何保證分析工具的結(jié)果與程序在真實(shí)環(huán)境下運(yùn)行的結(jié)果相同,也是一個(gè)急需解決的問題.

      2) 動(dòng)態(tài)緩存架構(gòu)設(shè)計(jì)

      在緩存?zhèn)刃诺拦糁?,攻擊者需要通過緩存獲取出用戶的內(nèi)存訪問模式,再通過其他先驗(yàn)知識對用戶內(nèi)存訪問模式進(jìn)行分析,就可以得到用戶信息.因此,設(shè)計(jì)一個(gè)新的緩存架構(gòu),避免攻擊者獲取用戶內(nèi)存訪問模式,可以有效地對緩存?zhèn)刃诺拦暨M(jìn)行防御.在基于沖突的攻擊中,攻擊者需要使用沖突域填充緩存,把緩存初始化到攻擊者已知的某個(gè)狀態(tài);同時(shí)攻擊者也需要沖突域獲取緩存的狀態(tài)變化,從而對用戶對緩存的訪問情況進(jìn)行“監(jiān)聽”.攻擊者需要一個(gè)比較小的沖突域,稱為SCG來保證攻擊的精度和速度.

      Vila等人[36]首次系統(tǒng)地對“沖突域”進(jìn)行研究,把查找算法的復(fù)雜度從O(N2)變?yōu)镺(a2N).隨后,Song等人[37]從理論上對該查找算法進(jìn)行分析,認(rèn)為當(dāng)對分隔參數(shù)進(jìn)行設(shè)置后,算法的復(fù)雜度應(yīng)為O(aN).此外,Qureshi[80]和Ramkrishnan等人[81]分別根據(jù)Cache結(jié)構(gòu)特點(diǎn)設(shè)計(jì)了線性復(fù)雜度的查找算法,這無疑增加了攻擊者的攻擊速度.靜態(tài)的Cache訪問模式的固定化給攻擊者以可乘之機(jī),因此設(shè)計(jì)一個(gè)動(dòng)態(tài)變化的緩存結(jié)構(gòu)能夠提高對緩存?zhèn)刃诺拦舻姆烙?,增加攻擊者尋找“沖突域”的復(fù)雜度.CEASER及CEASER-S等工作實(shí)現(xiàn)了一個(gè)密鑰周期性變化的緩存映射方案,以一個(gè)較小的代價(jià)實(shí)現(xiàn)了動(dòng)態(tài)緩存結(jié)構(gòu),但是Bodduna等人[90]認(rèn)為由于CEASER方案中LLBC采用線性加密算法,切換密鑰對防御效果沒有增益,而采用查找表的方式又會(huì)面臨內(nèi)存開銷太大的問題,一種兼顧性能和動(dòng)態(tài)隨機(jī)映射效果的加密算法仍是一個(gè)公開的難題.

      3) Cache架構(gòu)安全性評估

      目前,設(shè)計(jì)新的安全緩存架構(gòu)、改變緩存的替換算法、緩存的預(yù)取方式等從緩存角度增加了攻擊者對內(nèi)存訪問模式的“監(jiān)聽”精準(zhǔn)度.但是目前大多數(shù)硬件結(jié)構(gòu)是閉源的,且各自的研究中沒有一個(gè)統(tǒng)一的安全評價(jià)標(biāo)準(zhǔn),因此對目前的Cache結(jié)構(gòu)安全性的比較就成為一個(gè)比較困難的問題.Helft[91]從沖突域的角度開發(fā)了一個(gè)用于分析微架構(gòu)安全性的模擬器,對緩存架構(gòu)的不同參數(shù)進(jìn)行分析,討論Cache架構(gòu)對“沖突域”查找算法的影響.Deng等人[92]建立“3步分析模型”,并分析了18種Cache的安全架構(gòu),討論不同的緩存設(shè)計(jì)對可能的緩存?zhèn)刃诺拦舻姆烙Ч?He等人[6]使用信息流(information flow)對Cache結(jié)構(gòu)的安全性進(jìn)行分析.這些研究內(nèi)容都對Cache結(jié)構(gòu)進(jìn)行安全性分析,但是,統(tǒng)一的度量標(biāo)準(zhǔn)和緩存、攻擊以及軟件執(zhí)行的形式化建模仍然是一個(gè)尚未解決的問題.

      4 總 結(jié)

      基于緩存的側(cè)信道攻擊由于其高隱蔽性、高傳輸速度、可開展遠(yuǎn)程攻擊等特點(diǎn),打破了由軟件和操作系統(tǒng)提供的隔離機(jī)制,造成用戶信息泄露,引起了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注.本文從攻擊步驟的角度對基于緩存的側(cè)信道攻擊進(jìn)行系統(tǒng)描述,把攻擊的步驟分為:確定“漏洞”、確定“沖突域”、獲取內(nèi)存訪問模式信息、還原信息等,并根據(jù)這些步驟對攻擊方式進(jìn)行分析,對各個(gè)步驟所需要解決的問題以及面臨的挑戰(zhàn)進(jìn)行總結(jié).之后,我們按照攻擊模型對防御手段把防御分為代碼檢測、緩解“漏洞”、降低信息獲取精準(zhǔn)度等不同階段,并對不同階段的防御手段進(jìn)行分析比較,我們發(fā)現(xiàn)動(dòng)態(tài)修改緩存內(nèi)數(shù)據(jù)分布的方式可以以一個(gè)較低的性能代價(jià)對緩存?zhèn)刃诺拦魧?shí)現(xiàn)有效防御.最后討論了緩存?zhèn)刃诺婪烙媾R的主要挑戰(zhàn)以及未來的研究方向.

      猜你喜歡
      用戶程序攻擊者漏洞
      漏洞
      基于微分博弈的追逃問題最優(yōu)策略設(shè)計(jì)
      變速箱控制系統(tǒng)Bootloader設(shè)計(jì)與實(shí)現(xiàn)
      嵌入式設(shè)備遠(yuǎn)程升級方案設(shè)計(jì)
      正面迎接批判
      愛你(2018年16期)2018-06-21 03:28:44
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
      C8051F410單片機(jī)BootLoader的實(shí)現(xiàn)
      汉源县| 营口市| 台东市| 万宁市| 香格里拉县| 美姑县| 晋州市| 北票市| 田阳县| 牙克石市| 惠东县| 东乌珠穆沁旗| 根河市| 武鸣县| 谷城县| 韶关市| 若羌县| 香格里拉县| 习水县| 绥阳县| 满城县| 尼木县| 涞源县| 怀远县| 泊头市| 太保市| 砀山县| 舞钢市| 大安市| 南涧| 兴仁县| 昌都县| 永春县| 二连浩特市| 剑阁县| 怀仁县| 汉寿县| 黄骅市| 大埔县| 潜江市| 贵州省|