TW202347150A - 用於排清加重新加載快取側通道攻擊緩解的系統和方法 - Google Patents
用於排清加重新加載快取側通道攻擊緩解的系統和方法 Download PDFInfo
- Publication number
- TW202347150A TW202347150A TW112113826A TW112113826A TW202347150A TW 202347150 A TW202347150 A TW 202347150A TW 112113826 A TW112113826 A TW 112113826A TW 112113826 A TW112113826 A TW 112113826A TW 202347150 A TW202347150 A TW 202347150A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- cache
- processor
- flush
- microcode
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000000116 mitigating effect Effects 0.000 title claims abstract description 21
- 238000013507 mapping Methods 0.000 claims abstract description 14
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000011010 flushing procedure Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 101150053844 APP1 gene Proteins 0.000 description 4
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 4
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 4
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 4
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 4
- 238000001816 cooling Methods 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述與排清加重新加載快取側通道攻擊緩解相關的系統和方法。描述一種用於緩解系統中的側通道時序攻擊的示例性方法;系統包括具有至少一個快取的處理器。方法包括以下步驟:接收第一指令,其中第一指令在由處理器執行時經配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。方法進一步包括以下步驟:在由處理器執行第一指令之前,自動將第一指令映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行。
Description
本申請案涉及用於排清加重新加載快取側通道攻擊緩解的系統和方法。
多個使用者或租戶可共享系統;系統包括計算系統和通訊系統。計算系統可包括公共雲、私有雲或具有公共部分和私有部分兩者的混合雲。公共雲包括執行各種功能的全球伺服器網路;各種功能包括存儲和管理資料、運行應用程式及交付內容或服務,如串流影片、配置電子郵件、提供辦公室生產力軟體或處理社交媒體。伺服器和其他組件可位於世界各地的資料中心。雖然公共雲通過網際網路向公眾提供服務,但企業仍可使用私有雲或混合雲。私有雲和混合雲兩者亦包括位於資料中心的伺服器網路。
多個租戶可使用與雲端中的伺服器相關聯的計算、存儲和網路資源。可使用經安裝在資料中心的計算節點(例如,伺服器)上的主機作業系統(OS)來供應計算、存儲和網路資源。每個主機OS可允許多個計算實體(如虛擬機器)存取與相應計算節點相關聯的計算和記憶體資源。可在主機OS支持的各種計算實體(例如,容器)之間共享由主機OS所維護的記憶體分頁。此種分頁共享可導致程序(process)之間的快取側通道產生側通道攻擊的可能性,如排清加重新加載快取側通道攻擊。因此,需要緩解此種側通道攻擊的系統和方法。
在一個示例中,本申請案涉及一種用於緩解在系統中的側通道時序攻擊的方法;系統包括具有至少一個快取的處理器。方法可包括以下步驟:接收第一指令,其中第一指令在由處理器執行時經配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。方法可進一步包括以下步驟:在由處理器執行第一指令之前,自動將第一指令映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行。
在另一示例中,本申請案涉及一種具有至少一個快取的處理器。處理器可包括電路系統;電路系統經配置為執行以下操作:接收第一指令,其中第一指令在由處理器執行時經配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。電路系統可進一步經配置為執行以下操作:在由處理器執行第一指令之前,自動將第一指令映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行。
在又一示例中,本申請案涉及一種用於緩解系統中的側通道時序攻擊的方法;系統包括具有至少一個快取的處理器,方法可包括以下步驟:接收第一指令,其中第一指令在由處理器執行時經配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。方法可進一步包括以下步驟:在由處理器執行第一指令之前,與處理器相關聯的微代碼單元自動將第一指令映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行,其中自動將第一指令映射到第二指令之步驟包括以下步驟:將微代碼修補程式施加到處理器。
提供本[發明內容]是為了以簡化形式介紹概念選擇;將在下文的[實施方式]中進一步描述這些概念。本[發明內容]不旨在識別所要求保護的發明的關鍵特徵或必要特徵,也不旨在用來限制所要求保護的發明的範圍。
本申請案中所描述的示例涉及用於排清加重新加載快取側通道攻擊緩解的系統和方法。某些示例涉及計算系統或多租戶計算系統中的排清加重新加載快取側通道攻擊緩解。多租戶計算系統可以是公共雲、私有雲或混合雲。公共雲包括執行各種功能的全球伺服器網路;各種功能包括存儲和管理資料、運行應用程式及交付內容或服務,如串流影片、電子郵件、辦公室生產力軟體或社交媒體。伺服器和其他元件可位於世界各地的資料中心。雖然公共雲通過網際網路向公眾提供服務,但企業仍可使用私有雲或混合雲。私有雲和混合雲兩者亦包括位於資料中心中的伺服器網路。可使用資料中心的計算和記憶體資源來執行計算實體。如本文所使用,術語「計算實體」包括但不限於任何的(以硬體、韌體、軟體或上述的任何結合的形式的)可執行代碼,其實現用於無伺服器計算的功能、虛擬機器、應用程式、服務、微服務、容器或單一內核。或者,可在與邊緣計算設備、本地伺服器或其他類型的系統相關聯的硬體上執行計算實體;其他類型的系統包括如基地台(例如,5G或6G基地台)的通訊系統。
快取藉由提供具有低延遲的資料來幫助緩解與存取主記憶體(例如,雙倍資料速率(DDR)動態隨機存取記憶體 (DRAM))相關聯的長延遲。處理器可存取快取階層;快取階層包括L1快取、L2快取和L3快取,其中L1 快取可最接近處理核心,而L3快取可最遠離處理核心。可首先對快取進行資料存取;若在快取中找到資料,則將其視為命中。然而,若在快取中找不到資料,則將其視為未命中,且將需要從主記憶體(例如DRAM)加載資料。 不幸的是,快取命中和快取未命中之間的時間差可由攻擊者用作側通道來推斷存取模式,並從系統中獲取未經授權的資訊。已證明此類快取攻擊會洩露敏感資訊,如加密密鑰或其他憑證和秘密。
圖1是根據一個示例的系統100的方框圖。每個系統皆可包括計算資源(例如,處理器)和記憶體資源(例如,快取和系統記憶體)。作為示例,系統100可包括計算節點110和由計算節點110支持的主機作業系統190。計算節點110可包括中央處理單元(CPU)120;CPU 120又可包括多個處理核心和不同的快取級別。在此示例中,CPU 120可包括核心0 122、核心1 132和核心N 142,其中N是等於CPU中的核心數目的整數;在此示例中,N範圍可以是3到256。核心0 122可具有對1級快取和2級快取(例如,L1快取124和L2快取126)的獨占存取權。核心1 132可具有對1級快取和2級快取(例如,L1快取134和 L2快取136)的獨占存取權。核心N 142可具有對1級快取和2級快取(例如,L1快取144和L2快取146)的獨占存取權。每個核心可進一步存取共享的最末級快取(LLC)150;LLC 150可被視為快取階層中的3級快取。儘管圖1展示特定階層的快取,但CPU 120仍可包括非階層且佈置不同的快取。
繼續參考圖1,CPU 120可進一步包括用於管理快取和系統記憶體之間的交易的系統級快取控制器(例如,SLCC 152)。SLCC 152可經由匯流排164耦合到記憶體控制器160(例如,DRAM控制器)。記憶體控制器160可經由匯流排174耦合到系統記憶體172。系統記憶體172可以是非揮發性存儲或揮發性存儲(例如,快閃記憶體、DRAM、SRAM或其他類型的記憶體)的任何組合。 匯流排系統180可進一步將CPU 120和系統記憶體172 耦合到計算節點110的其他組件;其他組件包括資料存儲 182、感測器184和網路介面186。感測器184可包括經配置為檢測及/或接收資訊(例如,由資料中心中的各種計算節點所執行的各個虛擬機器的記憶體使用情況)的遙測或其他類型的感測器。感測器184可進一步包括經配置成感測與CPU、記憶體或其他存儲元件、FPGA、母板、底板管理控制器或諸如此類相關聯的條件的感測器。網路介面186可包括通訊介面,如乙太網路、蜂窩式無線電、藍牙無線電、UWB無線電或其他類型的無線或有線通訊介面。 此外,儘管未示出,但計算節點110可進一步包括(多個)I/O埠,如乙太網路埠、光纖埠、無線埠或其他通訊或診斷埠。雖然圖1中的每個計算節點經示為具有單個 CPU,但每個計算節點可包括額外的CPU和其他裝置,如圖形處理器單元(GPU)、現場可程式化閘陣列(FPGA)、專用積體電路(ASIC)或其他裝置。此外,每個計算節點110可具有經組織為記憶體模組的系統記憶體172。此種記憶體模組的示例包括但不限於雙線記憶體模組(DIMM) 或單線記憶體模組(SIMM)。這些模組中包含的記憶體可以是動態隨機存取記憶體(DRAM)、快閃記憶體、靜態隨機存取記憶體(SRAM)、相變記憶體、磁隨機存取記憶體或任何其他類型的記憶體技術。
仍參考圖1,每個計算節點110可經配置為執行多個計算實體。在此示例中,主機OS 190可支持多個容器(例如,容器1 192、容器2 194和容器M 196,其中M是正整數)。在此示例中,容器可以是輕量級虛擬介面模組,其可共享主機OS 190以支持其他應用程式。以此方式,這些容器可共享很大一部分的代碼庫(其包括共享庫),從而使容器容易通過與執行共享庫的CPU相關聯的快取而受到側通道攻擊。共享庫或其他代碼的其他計算實體可同樣地容易受到類似的側通道攻擊。
在一個示例中,計算節點110可以是資料中心的一部分。如本申請案所使用的,術語「資料中心」可包括但不限於雲端服務提供商所擁有的部分或所有資料中心、雲端服務提供商所擁有和所運營的部分或所有資料中心、由服務提供商的客戶所運營的雲端服務提供商所擁有的部分或所有資料中心、資料中心的任何其他組合、單個資料中心,或甚至特定資料中心中的一些集群。在一個示例中,每個集群可包括數個相同的計算節點。因此,集群可包括計算節點,此些計算節點包括一定數量的CPU核心和一定數量的記憶體。除了計算節點之外,亦可使用其他類型的硬體,如邊緣計算設備、本地伺服器或其他類型的系統;該其他類型的系統包括如基地台(例如5G或6G基地台)的通訊系統。儘管圖1將系統100示出為具有以特定方式佈置的一定數量的元件(其包括計算節點和記憶體元件),但系統100可包括以不同方式佈置的額外的或更少的組件。
如前文所解釋,快取命中和快取未命中之間的時間差可由攻擊者用作側通道來推斷存取模式,並從系統中獲取未經授權的資訊。已證明此類快取攻擊會洩露敏感資訊,如加密密鑰或其他憑證和秘密。一種此類的攻擊被稱為排清加重新加載攻擊。回到參考圖1,假設攻擊者A正在通過容器中的一者來存取圖1的計算節點110且受害者V也在通過容器中的一者來存取圖1的計算節點110來描述排清加重新加載攻擊。此示例進一步假設攻擊者 A 和受害者 V 映射到存儲在圖1的系統記憶體172中的共享庫(例如,用於執行AES密碼函數的密碼庫)。作為對共享庫的更快存取的一部分,對應於共享庫的可執行代碼可經存儲在與圖1的計算節點110的CPU 120相關聯的快取階層中。作為排清加重新加載攻擊的一部分,一旦共享庫被快取,攻擊者A就將共享庫從快取排清到系統記憶體。例如,對於基於x86的CPU來說,可藉由使用可在使用者模式下執行的CLFLUSH 指令來完成排清操作。CLFLUSH指令從所有快取階層(例如,L1快取、L2快取及最末級快取(LLC))排清給定的快取行,並將任何髒資料寫回至系統記憶體。使用CLFLUSH 指令,攻擊者可對受害者進行時序攻擊。
接下來,在排清快取後,攻擊者A等待採樣間隔(例如,一微秒、一毫秒或某個 CPU 的其他適當時間量)。 在採樣間隔期滿後,攻擊者A重新加載共享庫。若重新加載操作花費的時間很短,則攻擊者A就知道受害者V已經從記憶體存取了共享庫。作為受害者V存取的一部分,快取控制器將共享庫加載到相關聯的快取中。或者,若重新加載操作需要更長的時間,則攻擊者A就知道受害者V在採樣間隔期間沒有存取共享庫。攻擊者A接著可重新加載共享庫、再次排清、等待採樣間隔,並破譯受害者V是否存取了共享庫。藉由反覆排清和重新加載共享庫,攻擊者A可隨時間存取樣本圖,並可使用這些樣本來辨別模式。隨著時間的推移,這些模式可向攻擊者A提供足夠的資訊以確定受害者 V 正在使用的密鑰。出於多種原因,現有的對於排清加重新加載攻擊的解決方案較差。例如,一個解決方案係涉及追蹤殭屍快取行。然而,此解決方案是侵入性的,且為實施複雜的解決方案。例如,此解決方案需要更改CPU硬體,因此無法與現有CPU一起使用。此外,殭屍快取行的追蹤不僅會影響CPU的性能,還會耗盡與CPU相關聯的存儲空間。
為了解決排清加重新加載攻擊,本文描述一種解決方案,其涉及使用微代碼修補程式來自動將所有快取排清指令(例如CLFLUSH 指令)映射到快取寫回指令(例如CLWB指令)。與CLFLUSH指令一樣,CLWB指令將髒資料寫回至記憶體。然而,與CLFLUSH 指令不同,CLWB 指令保留快取階層中行的任何未修改副本。作為結果,攻擊者(例如,前文所述的攻擊者A)無法再影響受害者(例如,前文所述的受害者V)的存取時間,從而擊敗了排清加重新加載攻擊。
圖2示出可包括將CLFLUSH指令重新映射到CLWB指令的功能的處理器200的圖。處理器200可以是任何複雜指令集計算機(CISC)ISA兼容CPU,或是其他類型的處理器。處理器200包括獲取單元210、指令快取220、微代碼單元230、解碼單元240和執行單元250。並未示出處理器200的其他方面,其包括分支預測邏輯、重新排序邏輯和發布邏輯。獲取單元210(例如,使用由分支預測邏輯(未示出)所提供的位址)獲取指令,並將所獲取的指令存儲到指令快取220中。接著,將指令提供給微代碼單元230;微代碼單元230將所獲取的指令(例如, CLFLUSH指令)轉譯為微指令。可在引導(boot)過程期間,由與CPU相關聯的韌體(例如,BIOS或UEFI)將微代碼修補程式上傳到CPU(例如,圖1的CPU 120)。上傳後,微代碼修補程式可經存儲在與微代碼單元230相關聯的微代碼修補程式RAM中。
微代碼修補程式可包括多個對應於正在修補的任何指令(例如,CLFLUSH指令)的微指令。如關於圖3所解釋,當微代碼單元230遇到CLFLUSH指令時,從微代碼修補程式RAM中獲得用於CLFLUSH指令的微指令。在一個示例中,即使在微代碼單元310遇到CLFLUSH指令時,微代碼修補程式RAM中的微代碼指令也對應於CLWB指令。這又導致將CLFLUSH指令重新映射為CLWB指令。 使用類似邏輯,可將類似於CLFLUSH指令的任何其他快取排清指令重新映射為類似於CLWB指令的快取寫回指令。微指令隨後由譯碼單元240譯碼,並執行快取寫回操作(而不是快取排清操作)。這導致緩解了前文所述的排清加重新加載技術。儘管圖2將處理器200展示為包括以特定方式排列的特定組件,但處理器200可包括以不同方式排列的額外或更少組件。此外,雖然圖2描述了針對CLFLUSH指令的排清加重新加載技術的緩解,但任何其他快取排清指令亦可以等效方式處理以緩解排清加重新加載側通道攻擊。
圖3示出包括在圖2的處理器200中的微代碼單元300的示例性實施。微代碼單元300(例如,其對應於圖2的微代碼單元230)可包括為將快取行指令(例如,CLFLUSH指令)重新映射到快取寫回指令(例如,CLWB 指令)所需的邏輯、暫存器及其他元件。在此示例中,微代碼單元300可包括微代碼單元輸入級310、定序器320、下一位址暫存器330、匹配暫存器340、比較器350、查找表360、多路復用器370、微代碼唯讀記憶體(ROM )380和微代碼修補隨機存取記憶體(RAM)390。如前文所解釋,可將用於將CLFLUSH指令重新映射到對應於CLWB指令的微指令的微代碼修補程式加載到微代碼修補程式RAM 390中。微代碼輸入單元級310可計算對應於從圖2的指令快取220接收的指令的第一微指令的位址(例如,經存儲在微代碼ROM 380或微代碼修補程式RAM 390中的微指令的位址)。
繼續參考圖3,指令(例如 CLFLUSH 指令)在被解碼之前可需要解碼一組微指令。定序器320控制多路復用器370,以將正確的下一個位址供應給下一個位址暫存器330。可使用有限狀態機或其他邏輯來實施定序器320。定序器320確保對應於指令的所有微指令經順序地處理。將存儲在下一位址暫存器330中的位址提供給比較器350。比較器350將下一位址暫存器330提供的位址與經存儲在匹配暫存器340中的位址進行比較。若位址與經存儲在匹配暫存器340中的任何位址匹配,則實施來自微代碼修補程式RAM 390的修補程式。在此示例中,當存在匹配時,使用來自比較器350的信號,以從查找表360中為微代碼修補程式RAM 390選擇位址。查找表360可經實現為可程式化邏輯陣列或使用其他邏輯。定序器320控制多路復用器370來饋送來自查找表360的查找位址以用於進一步處理。作為結果,代替位於微代碼ROM 380中的微指令,將位於微代碼修補程式RAM 390中的微指令提供給解碼器(例如,圖2的解碼單元240)。因此,在此示例中,匹配暫存器340包括條目;條目允許在處理CLFLUSH指令時,從微代碼修補程式RAM 390提供對應於CLWB指令的微指令。這因而導致CLFLUSH指令映射到CLWB指令。儘管圖3將微代碼單元300示出為具有以特定方式排列的特定數量的元件,但微代碼單元300可包括以不同方式排列的額外的或更少的元件。此外,雖然圖3描述了關於CLFLUSH指令的排清加重新加載技術的緩解,但任何其他快取排清指令也可用等效方式處理以緩解排清加重新加載側通道攻擊。
除其他優勢外,本文所描述的示例性的解決方案與現有 x86 處理器和相關功能兼容。CLFLUSH 指令主要設計用於可直接寫入系統記憶體的非一致性直接記憶體存取(DMA)設備(例如,快速周邊組件互連(PCIe)設備)。在這種環境下,若應用程式想要讀取最新的資料,則應用程式將會先執行CLFLUSH指令、讓非一致性DMA設備將資料寫入至系統記憶體,接著執行加載操作。此加載指令將導致快取未命中,且將從系統記憶體(例如 DRAM)獲取最新資料。 然而,隨著時間的推移,現代CPU(例如 Intel 和 AMD CPU)已實現了一致性DMA。這意味著,當非一致性DMA設備更新資料(例如,快取行形式的資料)時,其不僅會在系統記憶體中更新,還會在任何相關聯的CPU快取中更新。有利地,此種自動更新消除了使用 CLFLUSH 指令的需要。
此外,即使既有代碼中存在CLFLUSH 指令,自動更新也可安全地將CLFLUSH指令重新映射到CLWB 指令。CLFLUSH指令亦可用於設置檢查點,並將揮發性記憶體的內容排清到持久記憶體(例如,快閃記憶體)。 然而,由於CLWB指令會將任何髒快取行排清到系統記憶體(例如DRAM),因此使用CLWB指令(而不是CLFLUSH 指令)不會產生任何問題。
圖4示出根據一個示例之用於實施排清加重新加載快取側通道攻擊緩解的資料中心400。作為示例,資料中心400可包括多個機架集群,其包括平台硬體,如計算資源、存儲資源、網路資源或其他類型的資源。可通過計算節點來提供計算資源;計算節點是通過可連接到交換器以形成網路的伺服器所提供的。網路可使每個可能的交換器組合之間的連接為可用的。資料中心400可包括伺服器1 410和伺服器N 430;可使用與前文針對圖1的計算節點110所描述的類似功能來實施伺服器1 410和伺服器N 430中的每一者。資料中心400可進一步包括資料中心相關功能460,其包括部署/監控470、目錄/身份服務472、負載平衡474、資料中心控制器476(例如,軟體定義網路(SDN)控制器和其他控制器),及路由器/交換器 478。伺服器 1 410 可包括(多個)CPU 411、主機管理程序 412、記憶體 413、(多個)存儲介面控制器(SIC)414、冷卻 415、(多個)網路介面控制器(NIC)416,及存儲磁碟417和418。伺服器N 430可包括(多個)CPU 431、主機管理程序432、記憶體433、(多個)存儲介面控制器(SIC)434、冷卻435、(多個)網路介面控制器 (NIC)436,及存儲磁碟437和438。伺服器1 410可經配置為支持虛擬機器(或容器);虛擬機器包括VM1 419、VM2 420和VMN 421。虛擬機器可進一步經配置為支持應用程式,如APP1 422、APP2 423和APPN 424。伺服器N 430可經配置為支持虛擬機器(或容器);虛擬機器包括VM1 439、VM2 440和VMN 441。虛擬機可進一步經配置為支持應用程式,如APP1 442、APP2 443和APPN 444。主機管理程序412和432中的每一者皆可引用可用於支持任何計算實體的共享庫;任何計算實體包括前文關於圖1所描述的容器。
繼續參考圖4,在一個示例中,可使用虛擬可擴展區域網路(VXLAN)框架,來為多個租戶啟用資料中心400。允許每個虛擬機器(VM)與同一VXLAN網段中的 VM進行通訊。每個VXLAN網段可由VXLAN網路辨識符(VNI)辨識。雖然圖4將資料中心400示為包括以某種方式佈置和耦合的一定數量的組件,但資料中心400可包括以不同方式佈置和耦合的更少或更多的組件。此外,可根據需要分散或組合與資料中心800相關聯的功能。
圖5示出用於緩解系統中的側通道時序攻擊的示例性方法的流程圖500;系統包括具有至少一個快取的處理器。在一個示例中,可由前文所描述的系統的各種組件(例如,圖1的系統100和圖2的處理器200)執行與此方法相關聯的步驟。步驟510可包括:接收第一指令,其中第一指令在被處理器執行時經配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。作為示例,此步驟可包括:接收CLFLUSH指令作為第一指令。如前所述,攻擊者可使用排清加重新加載攻擊,以從與處理器關聯的快取中竊取另一個使用者的資訊。
步驟520可包括:在處理器執行第一指令之前,將第一指令自動映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行。作為示例,此步驟可包括:接收CLFLUSH指令作為第一指令,並將CLFLUSH指令自動映射到第二指令(例如,CLWB指令)。如前文所解釋,可藉由在引導(boot)期間加載微代碼修補程式,來將微代碼修補程式施加於處理器。可從與包括處理器的計算系統相關聯的快閃記憶體加載微代碼修補程式本身。參考圖3所描述的前文提供了關於施加修補程式的一種方式的額外細節。
圖6示出用於緩解系統中的側通道時序攻擊的另一示例性方法的流程圖600;系統包括具有至少一個快取的處理器。在一個示例中,可由前文所描述的系統的各種組件(例如,圖1的系統100和圖2的處理器200)執行與此方法相關聯的步驟。步驟610可包括:接收第一指令,其中第一指令在被處理器執行時經配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。作為示例,此步驟可包括:接收CLFLUSH指令作為第一指令。如前所述,攻擊者可使用排清加重新加載攻擊,以從與處理器關聯的快取中竊取另一個使用者的資訊。
步驟620可包括:在處理器執行第一指令之前,與處理器相關聯的微代碼單元自動將第一指令映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行,其中將第一指令自動映射到第二指令之步驟包括以下步驟:將微代碼修補程式施加到處理器。作為示例,此步驟可包括:接收作為第一指令的CLFLUSH指令,及微代碼單元(例如圖2的微代碼單元230)自動將CLFLUSH指令映射到第二指令(例如CLWB指令)。如前文所解釋,可藉由在引導(boot)期間加載微代碼修補程式,來將微代碼修補程式施加於處理器。可從與包括處理器的計算系統相關聯的快閃記憶體加載微代碼修補程式本身。參考圖3所描述的前文提供了關於施加修補程式的一種方式的額外細節。。
總之,本申請案涉及一種在系統中緩解側通道時序攻擊的方法;系統包括具有至少一個快取的處理器。方法可包括以下步驟:接收第一指令,其中第一指令在由處理器執行時經配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。方法可進一步包括以下步驟:在處理器執行第一指令之前,自動將第一指令映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行。
處理器可包括微代碼單元。將第一指令自動映射到第二指令可包括:微代碼單元將微代碼修補程式施加到處理器。第一指令可包括快取排清指令,且第二指令可包括快取寫回指令。
微代碼修補程式可包括用於快取寫回指令的微指令,使得施加微代碼修補程式到處理器導致了處理器處理用於快取寫回指令的微指令,而不是用於快取排清指令的微指令。至少一個快取可包括階層式佈置的快取,並且當執行快取排清指令和快取寫回指令中的每一者時,可將髒快取行寫回到與處理器相關聯的記憶體,但不同於快取排清指令的是,快取寫回指令可在階層式佈置的快取中保留任何未修改的快取行副本。側通道時序攻擊可包括排清加重新加載攻擊。
在另一示例中,本申請案涉及一種具有至少一個快取的處理器。處理器可包括電路系統;電路系統經配置為執行以下操作:接收第一指令,其中第一指令在被處理器執行時被配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。電路系統可進一步經配置為執行以下操作:在處理器執行第一指令之前,自動將第一指令映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行。
電路系統可包括微代碼單元。電路系統可經配置為藉由將微代碼修補程式施加到處理器來自動地將第一指令映射到第二指令。第一指令可包括快取排清指令,且第二指令可包括快取寫回指令。
微代碼修補程式可包括用於快取寫回指令的微指令,使得施加微代碼修補程式到處理器導致了處理器處理用於快取寫回指令的微指令,而不是用於快取排清指令的微指令。至少一個快取可包括階層式佈置的快取,並且當執行快取排清指令和快取寫回指令中的每一者時,可將髒快取行寫回到與處理器相關聯的記憶體,但不同於快取排清指令的是,快取寫回指令可在階層式佈置的快取中保留任何未修改的快取行副本。側通道時序攻擊可包括排清加重新加載攻擊。
在又一示例中,本申請案涉及一種在系統中緩解側通道時序攻擊的方法;系統包括具有至少一個快取的處理器。方法可包括以下步驟:接收第一指令,其中第一指令在由處理器執行時經配置為從與處理器相關聯的至少一個快取中排清至少一個快取行。方法可進一步包括以下步驟:在處理器執行第一指令之前,與處理器相關聯的微代碼單元自動將第一指令映射到第二指令,使得即使回應於接收到第一指令,也不從至少一個快取中排清至少一個快取行,其中將第一指令自動映射到第二指令之步驟包括以下步驟:將微代碼修補程式施加到處理器。
第一指令可包括快取排清指令,且第二指令可包括快取寫回指令。微代碼修補程式可包括用於快取寫回指令的微指令,使得施加微代碼修補程式到處理器導致了處理器處理用於快取寫回指令的微指令,而不是用於快取排清指令的微指令。
至少一個快取可包括階層式佈置的快取,並且當執行快取排清指令和快取寫回指令中的每一者時,可將髒快取行寫回到與處理器相關聯的記憶體,但不同於快取排清指令的是,快取寫回指令可在階層式佈置的快取中保留任何未修改的快取行副本。側通道時序攻擊可包括排清加重新加載攻擊。
應當理解,本文所描述的方法、模組和元件僅是示例性的。備選地或另外地,本文所描述的功能可至少部分地由一個或多個硬體邏輯組件來執行。例如但不限於,可使用的說明性類型的硬體邏輯組件包括:現場可程式化閘陣列(FPGA)、專用積體電路(ASIC)、專用標準產品 (ASSP)、系統單晶片(SOC)和複雜可程式化邏輯器件 (CPLD)等等。在抽象但仍然明確的意義上,實現相同功能的任何組件排列都有效地「關聯」,從而實現所需的功能。 因此,本文組合以實現特定功能的任何兩個組件可被視為彼此「相關聯」以使得實現期望的功能,而不管架構或中間組件。同樣,如此關聯的任何兩個組件也可被視為彼此「可操作地連接」或「耦接」以實現期望的功能。僅僅因為可以是裝置、結構、系統或功能的任何其他實現的元件在本文中被描述為耦接到另一元件並不意味著這些組件必然是單獨的元件。例如,經描述為耦接到另一個元件B的元件A可以是元件B的子元件、元件B可以是元件A的子元件,或元件A和元件B可以是另一個元件C之經組合的子元件。
與本申請案中描述的一些示例相關聯的功能亦可包括存儲在非暫時性媒體中的指令。此處使用的術語「非暫時性媒體」是指存儲資料及/或指令的任何媒體,這些資料及/或指令會導致機器以特定方式運行。示例性的非暫時性媒體包括非揮發性媒體及/或揮發性媒體。非揮發性媒體包括,例如,硬碟、固態硬碟、磁碟或磁帶、光碟或磁帶、快閃記憶體、EPROM、NVRAM、PRAM或其他此類媒體,或網路版本的此類媒體。揮發性媒體包括,例如,動態記憶體,如DRAM、SRAM、快取或其他此類媒體。 非暫時性媒體不同於傳輸媒體,但可與傳輸媒體結合使用。 傳輸媒體用於向機器傳輸資料及/或指令,或從機器傳輸資料及/或指令。示例性的傳輸媒體包括同軸電纜、光纖電纜、銅線和無線媒體,如無線電波。
此外,所屬技術領域中具有通常知識者將認識到,上述操作的功能之間的界限僅僅是說明性的。多個操作的功能可以組合成單個操作,及/或單個操作的功能可分散在附加操作中。此外,備選實施例可包括特定操作的多個實例,並在各種其他實施例中可改變操作順序。
儘管本申請案提供了特定的示例,但是在不脫離如所附請求項所闡明的本申請案的範圍的情況下可進行各種修改和改變。因此,說明書和附圖被認為是說明性的,而不是限制性的,且所有此類修改旨在包括在本申請案的範圍內。此處針對特定示例所描述的任何好處、優點或問題的解決方案不旨在被解釋為任何或所有請求項的關鍵、必需或必要的特徵或要素。
此外,本文所用的術語「一個」或「一種」被定義為一個(種)或多於一個(種)。此外,在請求項中使用如「至少一個」和「一個或多個」的介紹性短語不應被解釋為暗示藉由不定冠詞「一」對另一個請求項元素的引入來限制包含此類引入的請求項元素的任何特定的請求項到僅包含一個此類元素的發明;即使當同一請求項包含介紹性短語「一個或多個」或「至少一個」及如「一」的不定冠詞亦是如此。定冠詞的使用也是如此。
除非另有說明,否則如「第一」和「第二」的術語係用於任意區分這些術語所描述的元素。因此,這些術語不一定旨在指示此類元素的時間或其他優先級。
100:系統
110:計算節點
120:中央處理單元(CPU)
122:核心0
124:L1快取
126:L2快取
132:核心1
134:L1快取
136:L2快取
142:核心N
144:L1快取
146:L2快取
150:最末級快取(LLC)
152:SLCC
160:記憶體控制器
164:匯流排
172:系統記憶體
174:匯流排
182:資料存儲
184:感測器
186:網路介面
192:容器1
194:容器2
196:容器M
200:處理器
210:獲取單元
220:指令快取
230:微代碼單元
240:解碼單元
250:執行單元
300:微代碼單元
310:微代碼單元輸入級
320:定序器
330:下一位址暫存器
340:匹配暫存器
350:比較器
360:查找表
370:多路復用器
380:微代碼唯讀記憶體(ROM )
390:微代碼修補隨機存取記憶體(RAM)
400:資料中心
410:伺服器1
412:主機管理程序
413:記憶體
414:存儲介面控制器(SIC)
415:冷卻
416:網路介面控制器(NIC)
417:存儲磁碟
418:存儲磁碟
419:VM1
420:VM2
421:VMN
422:APP1
423:APP2
424:APPN
430:伺服器N
431:CPU
432:主機管理程序
433:記憶體
434:存儲介面控制器(SIC)
435:冷卻
436:網路介面控制器(NIC)
437:存儲磁碟
438:存儲磁碟
439:VM1
440:VM2
441:VMN
442:APP1
443:APP2
444:APPN
460:資料中心相關功能
470:部署/監控
472:目錄/身份服務
474:負載平衡
476:資料中心控制器
478:路由器/交換器
500:流程圖
510~520:步驟
600:流程圖
610~620:步驟
藉由示例的方式示出本申請案,且本申請案不受附圖限制;在附圖中,相似的元件符號指示相似的元件。圖中的元件是為了簡單和清楚而示出的;圖中的元件不一定按比例繪製。
圖1是根據一個示例的系統的方框圖;
圖2示出與圖1的系統相關聯的處理器的方框圖;
圖3示出包括在圖2的處理器中的微代碼單元的示例性實施;
圖4示出根據一個示例之用於實施排清加重新加載快取側通道攻擊緩解的資料中心;
圖5示出根據一個示例之用於實現排清加重新加載快取側通道攻擊緩解的示例性方法的流程圖;及
圖6示出根據一個示例之用於實現排清加重新加載快取側通道攻擊緩解的另一示例性方法的流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
500:流程圖
510~520:步驟
Claims (15)
- 一種用於緩解在一系統中的一側通道時序攻擊的方法,該系統包括具有至少一個快取的一處理器,該方法包括以下步驟: 接收一第一指令,其中該第一指令在由該處理器執行時經配置為從與該處理器相關聯的該至少一個快取中排清至少一個快取行;及 在由該處理器執行該第一指令之前,自動將該第一指令映射到一第二指令,使得即使回應於接收到該第一指令,也不從該至少一個快取中排清該至少一個快取行。
- 如請求項1所述的方法,其中該處理器包括一微代碼單元。
- 如請求項2所述的方法,其中該自動將該第一指令映射到該第二指令之步驟包括以下步驟:該微代碼單元將一微代碼修補程式施加到該處理器。
- 如請求項1所述的方法,其中該第一指令包括一快取排清指令,而該第二指令包括一快取寫回指令。
- 如請求項4所述的方法,其中該微代碼修補程式包括用於該快取寫回指令的微指令,使得該微代碼修補程式對該處理器的一施加導致用於該快取寫回指令的微指令由該處理器處理,而不是用於該快取排清指令的該等微指令由該處理器處理。
- 如請求項5所述的方法,其中該至少一個快取包括一階層式佈置的快取,且其中當執行該快取排清指令和該快取寫回指令中的每一者時,將髒快取行寫回至與該處理器相關聯的一記憶體,但與該快取排清指令不同的是,該快取寫回指令在該階層式佈置的快取中保留快取行的任何未修改副本。
- 如請求項1所述的方法,其中該側通道時序攻擊包括一排清加重新加載攻擊。
- 一種具有至少一個快取的處理器,該處理器包括: 電路系統,該電路系統經配置為執行以下操作: 接收一第一指令,其中該第一指令在由該處理器執行時經配置為從與該處理器相關聯的該至少一個快取中排清至少一個快取行;及 在由該處理器執行該第一指令之前,自動將該第一指令映射到一第二指令,使得即使回應於接收到該第一指令,也不從該至少一個快取中排清該至少一個快取行。
- 如請求項8所述的處理器,其中該電路系統包括一微代碼單元。
- 如請求項8所述的處理器,其中該電路系統經配置以執行以下操作:藉由將一微代碼修補程式施加到該處理器來自動將該第一指令映射到該第二指令。
- 如請求項8所述的處理器,其中該第一指令包括一快取排清指令,而該第二指令包括一快取寫回指令。
- 如請求項11所述的處理器,其中該微代碼修補程式包括用於該快取寫回指令的微指令,使得該微代碼修補程式對該處理器的一施加導致用於該快取寫回指令的微指令由該處理器處理,而不是用於該快取排清指令的該等微指令由該處理器處理。
- 如請求項12所述的處理器,其中該至少一個快取包括一階層式佈置的快取,且其中當執行該快取排清指令和該快取寫回指令中的每一者時,將髒快取行寫回至與該處理器相關聯的一記憶體,但與該快取排清指令不同的是,該快取寫回指令在該階層式佈置的快取中保留快取行的任何未修改副本。
- 如請求項8所述的處理器,其中該側通道時序攻擊包括一排清加重新加載攻擊。
- 一種用於緩解一系統中的一側通道時序攻擊的方法,該系統包括具有至少一個快取的一處理器,該方法包括以下步驟: 接收一第一指令,其中該第一指令在由該處理器執行時經配置為從與該處理器相關聯的該至少一個快取中排清至少一個快取行;及 在由該處理器執行該第一指令之前,與該處理器相關聯的一微代碼單元自動將該第一指令映射到一第二指令,使得即使回應於接收到該第一指令,也不從該至少一個快取中排清該至少一個快取行,其中該自動將該第一指令映射到該第二指令之步驟包括以下步驟:將一微代碼修補程式施加到該處理器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263345683P | 2022-05-25 | 2022-05-25 | |
US63/345,683 | 2022-05-25 | ||
US17/838,446 | 2022-06-13 | ||
US17/838,446 US20230385410A1 (en) | 2022-05-25 | 2022-06-13 | Systems and methods for flush plus reload cache side-channel attack mitigation |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202347150A true TW202347150A (zh) | 2023-12-01 |
Family
ID=85703620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112113826A TW202347150A (zh) | 2022-05-25 | 2023-04-13 | 用於排清加重新加載快取側通道攻擊緩解的系統和方法 |
Country Status (2)
Country | Link |
---|---|
TW (1) | TW202347150A (zh) |
WO (1) | WO2023229696A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11119784B2 (en) * | 2018-06-29 | 2021-09-14 | Intel Corporation | Efficient mitigation of side-channel based attacks against speculative execution processing architectures |
US10691594B2 (en) * | 2018-06-29 | 2020-06-23 | Intel Corporation | Selective execution of cache line flush operations |
US10929535B2 (en) * | 2018-06-29 | 2021-02-23 | Intel Corporation | Controlled introduction of uncertainty in system operating parameters |
WO2020000335A1 (en) * | 2018-06-29 | 2020-01-02 | Intel Corporation | Systems and methods of restricting access to kernel memory |
US11216556B2 (en) * | 2018-12-17 | 2022-01-04 | Intel Corporation | Side channel attack prevention by maintaining architectural state consistency |
-
2023
- 2023-03-01 WO PCT/US2023/014215 patent/WO2023229696A1/en unknown
- 2023-04-13 TW TW112113826A patent/TW202347150A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023229696A1 (en) | 2023-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200285578A1 (en) | Software-transparent hardware predictor for core-to-core data transfer optimization | |
US10019360B2 (en) | Hardware predictor using a cache line demotion instruction to reduce performance inversion in core-to-core data transfers | |
RU2483347C2 (ru) | Установка, способ и система кэширования | |
US10733110B1 (en) | Collecting statistics for persistent memory | |
EP3528130B1 (en) | Mechanism to prevent software side channels | |
US10394595B2 (en) | Method to manage guest address space trusted by virtual machine monitor | |
BR112012032854B1 (pt) | método e equipamento para controle de acesso a adaptadores num ambiente computacional | |
US20210064546A1 (en) | Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity | |
US11442760B2 (en) | Aperture access processors, methods, systems, and instructions | |
US12066939B2 (en) | Cache line demote infrastructure for multi-processor pipelines | |
EP3671473A1 (en) | A scalable multi-key total memory encryption engine | |
US10268580B2 (en) | Processors and methods for managing cache tiering with gather-scatter vector semantics | |
US10747679B1 (en) | Indexing a memory region | |
US11803643B2 (en) | Boot code load system | |
US10564972B1 (en) | Apparatus and method for efficiently reclaiming demoted cache lines | |
US10324862B2 (en) | Supporting oversubscription of guest enclave memory pages | |
US11860792B2 (en) | Memory access handling for peripheral component interconnect devices | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
TW202347150A (zh) | 用於排清加重新加載快取側通道攻擊緩解的系統和方法 | |
US11604673B2 (en) | Memory encryption for virtual machines by hypervisor-controlled firmware | |
US20230385410A1 (en) | Systems and methods for flush plus reload cache side-channel attack mitigation | |
US12020053B2 (en) | Exposing untrusted devices to virtual machines | |
US11635968B2 (en) | Using idle caches as a backing store for boot code | |
US20240330032A1 (en) | Caching memory mapped i/o emulation for virtual machines | |
US12013799B2 (en) | Non-interrupting portable page request interface |