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

緩存側信道防御研究綜述

2021-04-09 05:52:58
計算機研究與發展 2021年4期
關鍵詞:用戶信息

王 崇 魏 帥 張 帆 宋 克

(國家數字交換系統工程技術研究中心(戰略支援部隊信息工程大學) 鄭州 450003)

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

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

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

微架構側信道攻擊尤其是基于緩存的微架構側信道攻擊嚴重威脅用戶的信息安全,造成用戶密碼等敏感信息泄露.緩存側信道攻擊防御措施的相關研究工作主要圍繞重構軟件代碼、增加操作系統功能等方面展開.文獻[28-29]從緩存側信道攻擊手段、防御方式等角度對緩存側信道攻擊的相關工作進行歸納總結;文獻[30]重點考慮了嵌入式設備和云環境中的相關防御手段.但是這些研究只是從防御的具體措施、實施方法的角度和防御的層次對現有防御手段進行分類,沒有從攻擊模型的角度解釋防御的安全性,同時對硬件架構的關注相對較少.因此,本文從攻擊模型角度對現有的防御措施進行分析比較,重點介紹了新型安全緩存架構設計方案.

本文的主要貢獻有3個方面:

1) 總結歸納緩存側信道攻擊的模型,并結合攻擊模型討論具體的攻擊步驟;

2) 對現有的防御手段進行分析比較;

3) 討論緩存側信道攻擊防御措施面臨的挑戰以及未來研究方向.

1 緩存側信道攻擊

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

本節首先結合RSA加密算法,介紹了緩存側信道“漏洞”“攻擊粒度”以及具體的攻擊過程;之后討論了緩存側信道攻擊模型.

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

算法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

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

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

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

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

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

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

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

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

2) 根據之前確定的漏洞,flush指令強制清除對應位置的緩存塊;

3) 等待用戶程序執行;

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

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

在3種攻擊中,蹤跡驅動需要系統提供的信息最多,需要能夠對系統進行持續的探測,精度也最高;時間驅動只需要對程序的執行時間進行探測,利用不同硬件狀態的不同執行時間,但是容易受到外界噪聲的干擾;訪問驅動需要能訪問與用戶所使用的資源,判斷用戶是否執行過與該區域相關的訪問操作.

Table 1 Comparison Between Different Microarchitecture Side Channel Attacks表1 微架構側信道攻擊方式比較

1.1 攻擊者能力

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

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

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

3) 攻擊者可以測量訪問某個內存所需要的時間.

這些條件在現代計算機系統中或者云環境中基本能夠滿足.

一般而言,緩存側信道攻擊可以根據攻擊的目標分為針對主機的攻擊和針對虛擬機的攻擊;根據攻擊的模式可以分為隱蔽信道攻擊和側信道攻擊;根據攻擊對象把攻擊分為針對不同加密算法的攻擊、針對操作系統的攻擊等.本文按照攻擊者對緩存的利用方式不同,把攻擊分為基于復用的緩存側信道攻擊和基于沖突的緩存側信道攻擊.

基于復用的緩存側信道攻擊,指攻擊者與用戶存在共享內存,例如共享的庫、共享文件等,且攻擊者利用的“漏洞”存在于共享內存中,攻擊者可以獲取到該區域的內存訪問模式.

基于沖突的緩存側信道攻擊是指,攻擊者與用戶不存在共享內存,或有可能存在共享內存,但是“漏洞”不存在于共享內存中,攻擊者只能通過對自己的地址空間中的內容訪問,影響正常用戶進程中對緩存的使用,推斷出用戶對某物理地址的訪問模式.

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

1.2 攻擊步驟

如圖1所示,根據攻擊者實施基于緩存的微架構側信道攻擊需要采取的操作,攻擊過程可以分為4個步驟:

1) 確定“微架構側信道漏洞”;

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

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

3) 攻擊者通過“沖突域”對“微架構側信道漏洞”的位置進行監聽,獲取出微架構狀態的變化;

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

本節根據之前討論的攻擊者能力按照攻擊模型對攻擊步驟進行詳細介紹.

1.2.1 確定“漏洞”

根據“漏洞”的目標程序對應地址所包含的內容不同,微架構側信道漏洞主要包括兩大類:1)基于指令執行的漏洞;2)基于數據訪問的漏洞.

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

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

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

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

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

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

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

1) “沖突域”與目標地址影響同一個緩存微架構狀態(比如都可以對同一塊Cache的狀態產生影響).

2) 通過沖突域的訪問可以把目標地址所涉及到的微架構狀態初始化到攻擊者可以控制的狀態.

3) 通過沖突域的訪問可以感知目標地址對應的微架構狀態的變化.

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

1.2.3 信息獲取

微架構狀態的不同,不會對程序的執行結果產生影響,但是會對程序執行過程產生影響.具體可以有3個方面的效果:

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

2) 引發中斷事件.在使用Intel TSX指令的時候,當檢測到緩存被驅逐時,會引發事務中斷[21],攻擊者可以捕捉這些事件,對用戶行為進行分析.

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

但是,對中斷事件的捕獲,需要操作系統的支持,對某些硬件結構進行監控分析,精度較差,應用范圍相對較小.而緩存幾乎存在于所有的處理器中,且粒度較細,精度較高,因此把緩存狀態作為獲取信息的途徑是最為廣泛的.

攻擊者通過緩存狀態獲取的信息,需要有一個比較精確的時間統計信息,判斷“漏洞”位置所處的存儲器層次結構.目前攻擊者獲取“精準時鐘”有3個途徑[38]:

1) 硬件內部的時鐘源;

2) 其他計算機或設備的時鐘源;

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

1.2.4 信息還原

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

但是,在實際的攻擊過程中,這一步往往是通過離線操作進行的,攻擊者不需要再與用戶進行信息交互,也不需要“監聽”內存訪問情況,因此攻擊者就不需要過多關注“執行環境”,而本文重點關注攻擊者在攻擊過程中對硬件結構等的利用情況,討論攻擊者和用戶通過“硬件架構”完成“交互”,因此這部分不作為本文的討論內容.

2 防御措施

根據1.2節攻擊步驟的討論,攻擊者想要實施側信道攻擊,首先就要判斷出“監聽位置”,即找到緩存側信道“漏洞”;其次需要確定“監聽手段”,即“沖突域”;最后攻擊者才能“監聽”出用戶程序的執行情況,完成信息竊取.

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

2.1 代碼檢測

緩存側信道檢測技術(cache side channel detec-tion technology),即代碼檢測技術,是指通過檢測用戶程序,判斷所執行程序中是否存在可以被緩存側信道所利用的“漏洞”的技術.它從用戶程序的角度實現對緩存側信道的防御.

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

代碼檢測技術主要包括兩大類:靜態分析和動態分析.Doychev等人[39]及其擴展工作[40]使用抽象解釋的方式,對3種常見的基于Cache的攻擊方式進行分析,首次采用自動化的方式檢測緩存側信道漏洞.CacheAudit及其擴展工作給出的是用戶由于微架構側信道漏洞存在造成的信息泄露的上限,但是有可能會給出一個過高的上限而導致結果無意義.也就是說,CacheAudit工具只能驗證代碼的安全性,而不能判斷代碼是不安全的.

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

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

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

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

為了能夠對編譯器的輸出進行分析,Wichelmann等人[49]開發了一種可擴展的MicroWalk框架,并對2個廣泛應用但閉源的加密算法庫Intel IPP和Microsoft CNG中的15個不同的加密算法進行驗證,解釋了二進制代碼中是否存在緩存側信道風險、緩存側信道風險的位置以及緩存側信道漏洞點的位置與密鑰的關系等相關問題.

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

2.2 緩解“漏洞”

代碼檢測只能判斷用戶程序中是否存在“漏洞”,但是卻不能消除“漏洞”.因此,本節對常用的緩解緩存側信道攻擊的技術進行歸納總結.

目前常見的緩解“緩存側信道漏洞”的方法主要包括:恒定時間技術、緩存清除以及編譯器輔助安全措施等.恒定時間技術(constant-time technology)[52]是一種用于抵抗基于微架構的時間側信道攻擊的有效手段.其主要思想是通過軟件的方式,使不同表項和指令流的執行過程中的訪問時間相同,避免程序執行時間與執行流程之間的相關性,從而消除“側信道漏洞”.NaCl[53]避免從密碼到加載地址和分支預測的數據通路,消除了許多已經發現的漏洞;Andrysco等人[54]設計了一個固定時間的數學庫libfixedtimefixpoint,使用“恒定時間”策略,保證程序本身的安全性.Panda[55]采用了一種“向后缺失觸發硬件預取技術”(BITP),在攻擊者“觀察”內存訪問模式之前把缺失內容完成硬件預期,不需要軟件、操作系統的支持,就可以消除攻擊者的觀察接口,使攻擊者無法觀察到用戶的內存訪問模式.表3所示為緩解緩存側信道的技術.

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

Table 3 Cache-Based SCA Mitigation Technology表3 緩解緩存側信道的技術

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

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

2.3 降低測量精準度

攻擊者在實施微架構側信道攻擊時,需要獲取到用戶程序的執行情況、用戶程序的內存訪問模式后才能完成后續的攻擊,而攻擊者獲取信息的精準度直接影響攻擊的效果甚至攻擊的成功與否.

目前的防御手段主要通過操作系統、虛擬機管理程序以及設計新型安全緩存架構提高映射關系的不確定性,降低資源共享的概率,從而降低攻擊者對用戶訪問模式的獲取精準度,提高系統的安全性,實現對緩存側信道的防御.

2.3.1 干擾信息獲取

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

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

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

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

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

除了通過操作系統或虛擬機管理程序的調度外,還可以通過增加噪聲的方式,干擾用戶對信息的“監聽”過程.Wang等人[72]利用DRAM更新作為噪聲源,設計了MemJam架構,以較小的代價避免攻擊者通過共享內存控制器“監聽”用戶程序的內存訪問情況.

2.3.2 新型安全架構

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

Table 5 Comparison Between Cache Architecture表5 Cache架構及其比較

1) 隔離架構

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

此外,很多人開始探索采用動態分隔的方式[87-88]提高安全性.如果動態分隔策略依賴于程序運行狀態時,仍然會產生側信道的風險,Wang等人[75]提供了一種安全的動態高速緩存分區方案,根據應用的不同安全等級進行分類,在提高緩存性能的同時,滿足了分層安全的策略需求,與靜態分區的方式相比,這種動態隔離的方式可以平均提升12.5%的性能.Werner等人[76]提出ScatterCache架構,使用關鍵字映射的方式實現偏置相聯緩存,并對不同的安全域進行區分,使共享緩存的行為變得不可預測,實現對基于緩存側信道的防御.

針對共享內存控制器的攻擊,Wang等人[89]根據傳統內存控制器的特點,分析攻擊者對內存控制器的利用方式,根據用戶安全域的不同,設計了一種基于靜態時間隙的內存控制器隊列調度算法,避免了攻擊者對用戶信息的探測.

2) 動態映射架構

除了靜態和動態分隔的方案之外,還可以通過隨機映射的方案,擾亂攻擊者對用戶信息的判斷,實現對緩存側信道攻擊的防御.

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

雖然采用映射表的方式可以提高對側信道攻擊的抵抗能力,但是采用查找表的方式會受到存儲代價的限制,導致其只能應用于較小的緩存.針對這個問題,Qureshi[79]設計了CEASE架構,如圖3所示.在訪問緩存時,采用低延時加密解密模塊(LLBC),而對除緩存外的其他模塊則是透明的,用較小的代價實現了對緩存側信道的防御,同時又將隨機映射的方式擴展到最后一級緩存.

Fig. 3 Overview of CEASE[79]圖3 CEASE 總體結構圖[79]

為了避免靜態密鑰被攻擊者探測,Qureshi[80]在CEASE的基礎上,對LLBC的加密密鑰不斷改變,即CEASER架構,進一步提升系統魯棒性.算法的重映射速率會影響對緩存側信道的防御效果.但是,他們發現,通過修改查找沖突域的收縮算法,或者根據處理器的緩存替換算法,能夠有效地縮短攻擊者查找沖突域的時間,因此采用偏置映射的方式,把原有的CEASER改進為CEASER-S,把高速緩存分為多個區,不同的區中使用不同的Hash函數進行映射,把同一緩存集中的數據映射到不同的位置.隨后,Ramkrishnan等人[81]發現CEASER-S架構使用二分查找攻擊方式,同樣可以把搜尋SCG的時間復雜度變為O(N),因此他們使用間接查找表的方式實現“高偏置”和“高刷新率”,對基于沖突的緩存側信道攻擊實現防御.

當對整個LLC進行隨機映射時,性能損耗較大,且重映射的方式會增加對內存的訪問延時和緩存缺失的概率.Tan等人[82]認為并不需要對整體進行隨機化映射,提出PhantomCache的局部隨機化的緩存架構,以0.5%的性能下降,在保證隨機化的同時,也實現了對微架構側信道攻擊的防御.

3) 緩存替換策略

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

4) 動態緩存架構

攻擊者對塊的大小、關聯度、緩存替換算法、內存到緩存的映射函數等緩存架構信息掌握得越少,攻擊的難度越高,攻擊效果越差.因此,Bandara等人[85]從這個角度出發,通過動態改變緩存塊的大小、緩存的相關聯度以及緩存的大小,設計了自適應緩存架構.實驗表明,在運行過程中動態改變緩存參數,最多可以降低90%的攻擊精度;Dai等人[86]根據具體應用設計了多種不同緩存結構,并在運行過程中不斷改變緩存配置,使攻擊者無法采集到足夠的信息,從而避免緩存側信道攻擊.

2.4 防御方法總結

如表6所示,軟件檢測的防御方式不需要改變現有的操作系統、硬件結構,只需在程序發布時對應用進行檢測或用戶在本地進行檢測,部署方式最為靈活便捷.但是檢測攻擊的精準度、覆蓋率、檢測速度以及擴展性會直接影響檢測工具在實際過程中的使用.

Table 6 Cache Side Channel Attack Countermeasure表6 緩存側信道攻擊防御措施

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

從操作系統(OS)或虛擬機管理程序(VMM)的角度實現不同安全域之間的隔離,增加攻擊者獲取信息的精準度,或者改變虛擬機的分配策略,實現對緩存側信道攻擊的防御,但是管理粒度相對較粗,增大操作系統的負擔,還有可能需要硬件的支持.

緩存側信道攻擊中,攻擊者是利用硬件結構的特點開展攻擊,而新型安全緩存架構設計直接影響了緩存側信道攻擊中獲取信息的途徑,可以有效阻止緩存側信道攻擊,且對操作系統、用戶程序等的要求相對較小,對用戶程序的性能影響也最小,因此受到了越來越多的研究和關注.但是這種方式需要硬件的更新和硬件廠商的支持,因此部署周期相對較長.

3 防御面臨的挑戰

隨著越來越多的基于處理器的硬件攻擊方式的出現,學術界和廠商在研究如何能夠提高處理器的性能和降低處理器功耗的同時,也開始對處理器的安全性進行考慮.基于微架構的側信道攻擊屬于側信道攻擊的一種,嚴重威脅了用戶的信息安全,與傳統的側信道攻擊不同的是,微架構側信道攻擊利用處理器中的微架構狀態傳遞信息,打破了操作系統等提供的安全隔離,攻擊者可以通過運行于同一硬件結構上的進程“竊取”用戶信息,造成密鑰等信息泄露;攻擊者的攻擊范圍包括運行于同一個實體設備的進程,也可以包括云環境共享硬件結構的不同租戶;攻擊者可以通過直接操作,也可以通過遠程操作完成攻擊.未來緩存側信道的研究主要有3個方面:

1) 定位緩存側信道漏洞

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

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

在對緩存側信道漏洞進行分析時,需要兼顧緩存替換算法、緩存塊大小、緩存組相連度等緩存架構參數的硬件模型描述緩存行為,才能較為準確地判斷出程序中是否存在“緩存側信道漏洞”.程序在真實環境中運行時,硬件結構的不同、指令集的不同,操作系統的不同都會對“緩存側信道漏洞”的判斷產生影響.此外在使用各種攻擊分析定位程序中的漏洞時,仍會存在代碼覆蓋率、檢測時間、檢測結果解釋性等問題.如何保證分析工具的結果與程序在真實環境下運行的結果相同,也是一個急需解決的問題.

2) 動態緩存架構設計

在緩存側信道攻擊中,攻擊者需要通過緩存獲取出用戶的內存訪問模式,再通過其他先驗知識對用戶內存訪問模式進行分析,就可以得到用戶信息.因此,設計一個新的緩存架構,避免攻擊者獲取用戶內存訪問模式,可以有效地對緩存側信道攻擊進行防御.在基于沖突的攻擊中,攻擊者需要使用沖突域填充緩存,把緩存初始化到攻擊者已知的某個狀態;同時攻擊者也需要沖突域獲取緩存的狀態變化,從而對用戶對緩存的訪問情況進行“監聽”.攻擊者需要一個比較小的沖突域,稱為SCG來保證攻擊的精度和速度.

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

3) Cache架構安全性評估

目前,設計新的安全緩存架構、改變緩存的替換算法、緩存的預取方式等從緩存角度增加了攻擊者對內存訪問模式的“監聽”精準度.但是目前大多數硬件結構是閉源的,且各自的研究中沒有一個統一的安全評價標準,因此對目前的Cache結構安全性的比較就成為一個比較困難的問題.Helft[91]從沖突域的角度開發了一個用于分析微架構安全性的模擬器,對緩存架構的不同參數進行分析,討論Cache架構對“沖突域”查找算法的影響.Deng等人[92]建立“3步分析模型”,并分析了18種Cache的安全架構,討論不同的緩存設計對可能的緩存側信道攻擊的防御效果.He等人[6]使用信息流(information flow)對Cache結構的安全性進行分析.這些研究內容都對Cache結構進行安全性分析,但是,統一的度量標準和緩存、攻擊以及軟件執行的形式化建模仍然是一個尚未解決的問題.

4 總 結

基于緩存的側信道攻擊由于其高隱蔽性、高傳輸速度、可開展遠程攻擊等特點,打破了由軟件和操作系統提供的隔離機制,造成用戶信息泄露,引起了學術界和工業界的廣泛關注.本文從攻擊步驟的角度對基于緩存的側信道攻擊進行系統描述,把攻擊的步驟分為:確定“漏洞”、確定“沖突域”、獲取內存訪問模式信息、還原信息等,并根據這些步驟對攻擊方式進行分析,對各個步驟所需要解決的問題以及面臨的挑戰進行總結.之后,我們按照攻擊模型對防御手段把防御分為代碼檢測、緩解“漏洞”、降低信息獲取精準度等不同階段,并對不同階段的防御手段進行分析比較,我們發現動態修改緩存內數據分布的方式可以以一個較低的性能代價對緩存側信道攻擊實現有效防御.最后討論了緩存側信道防御面臨的主要挑戰以及未來的研究方向.

猜你喜歡
用戶信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 免费播放毛片| 丁香五月激情图片| 青青网在线国产| 色综合久久88色综合天天提莫| 国内精品91| 久久婷婷人人澡人人爱91| 伊人久久综在合线亚洲91| 99er精品视频| 国产精品久久久久鬼色| 色妞永久免费视频| 台湾AV国片精品女同性| 91青青草视频| 亚洲精品视频免费| 72种姿势欧美久久久大黄蕉| 天堂va亚洲va欧美va国产| 日韩第八页| 在线精品欧美日韩| 中文精品久久久久国产网址| 欧美日韩高清在线| 亚洲—日韩aV在线| 日韩精品无码一级毛片免费| 熟女成人国产精品视频| 国产精品区视频中文字幕| AⅤ色综合久久天堂AV色综合| 超碰色了色| 中文字幕在线观| 欧美成人怡春院在线激情| 欧美成人精品一区二区| 亚洲国产中文精品va在线播放| 思思99热精品在线| 欧美日韩成人在线观看| 国产91导航| 在线观看网站国产| 婷婷综合色| 在线a视频免费观看| 91精品福利自产拍在线观看| 久久国产精品娇妻素人| 日本人妻一区二区三区不卡影院 | 国产欧美日韩另类精彩视频| av在线手机播放| 玖玖精品在线| 日本午夜精品一本在线观看| 国产肉感大码AV无码| 亚洲精品第五页| 亚洲欧美日韩另类在线一| 亚洲精品无码不卡在线播放| 一级毛片免费不卡在线视频| 九色视频在线免费观看| 99久久99视频| 久久婷婷国产综合尤物精品| 91福利国产成人精品导航| 亚洲国产精品人久久电影| 黄色三级毛片网站| 全裸无码专区| 国产欧美日韩另类| 国产农村1级毛片| 国产办公室秘书无码精品| 欧美一区二区自偷自拍视频| 麻豆精品在线视频| 影音先锋亚洲无码| 国产无码制服丝袜| 欧美区一区| 国产人人射| 国产成人精彩在线视频50| 国产玖玖玖精品视频| 国产精品大白天新婚身材| 99热这里只有精品久久免费| 中文字幕在线视频免费| 国产又粗又猛又爽视频| 国产成人成人一区二区| 99视频在线免费观看| 中文字幕永久在线观看| 高清码无在线看| 亚洲日韩久久综合中文字幕| 亚洲国产精品VA在线看黑人| a级免费视频| 台湾AV国片精品女同性| 被公侵犯人妻少妇一区二区三区| 欧美成在线视频| 99久久精品免费看国产电影| 婷婷六月在线| 国产成人精品在线1区|