Intel SGX(2)——內存


enclave page cache(EPC)

enclave 代碼和數據放置在稱為 enclave 頁面緩存 (EPC) 的特殊存儲區域中。該內存區域使用內存加密引擎 (MEE) 進行加密,這是一種新的專用芯片。內存總線上的外部讀取只能觀察到加密數據。頁面僅在物理處理器核心內時才被解密。密鑰在啟動時生成並存儲在 CPU 中。

EPC 機制擴展了傳統的頁面檢查,以防止外部訪問 EPC 頁面。

Enclave Page Cache Map(EPCM)

Enclave Page Cache Map (EPCM) 數據結構用於存儲頁面狀態。它位於受保護的內存中,其大小限制了 EPC 的大小(由 BIOS 設置,最大 128MB)。EPCM 包含了每個頁面的配置、權限和類型。

 

內存管理

數據結構

  • Page Information (PAGEINFO):用作 EPC 管理指令的參數以引用頁面。其包含線性地址、虛擬地址和指向 SECINFO 及 SECS 數據結構的指針。
  • Security Information (SECINFO):用於存儲頁面元數據,如訪問權限(讀、寫、執行)和類型(SECS、TCS、REG 或 VA)。
  • Paging Crypto MetaData (PCMD):用來跟蹤與被放逐頁面關聯的元數據,它包含頁面所屬 enclave 的標識,一個指向 SECINFO 結構的指針和一個 MAC 值。
  • Version Array (VA):用於存儲從 EPC 放逐出的頁面的版本號。它是一種特殊類型的頁面,包含 512 個 8 字節的插槽來存儲版本號。

指令

  • EPA:此指令分配一個 4KB 內存頁面,其中將包含頁面版本號數組 (VA) 以防止重放攻擊。每個元素的長度為 64 位。
  • EBLOCK:該指令阻塞所有對准備放逐的頁面的訪問。以后對該頁面的所有訪問都將導致頁面錯誤(“頁面阻塞”)。
  • ETRACK:該指令從 EPC 中放逐一個頁面。該頁面必須已被正確准備:它必須被阻塞並且不能被 TLB 引用。在將其寫入外部存儲器之前,對頁面進行加密,並生成版本號和元數據,並執行最終的 MAC。
  • ELDB、ELDU:該指令將先前被放逐的頁面加載到內存中,無論是否處於阻塞狀態。它檢查元數據的 MAC、版本號(來自相應的 VA 條目)和頁面加密內容。如果驗證成功,則對頁面內容進行解密並放置在所選的 EPC 頁面中,並刪除相應的VA 條目。

解釋

EPC 內存由 BIOS 定義並且限制大小。SGX 有一種方法可以從 EPC 中刪除頁面,將其放置在未受保護的內存中,然后再將其恢復。由於 EPC 頁面管理指令可以加密頁面並生成額外的元數據,這樣頁面就保持了相同的安全屬性。直到所有引用該頁面的緩存條目都從所有處理器邏輯內核中刪除后,才能刪除該頁面。內容以頁面粒度(4KB)導出或導入。

內存內容

  • SGX Enclave Control Structure (SECS):每個 enclave 都與一個 SECS 結構相關聯,該結構將包含其元數據(例如其哈希和大小)。任何安全或非安全代碼都無法訪問它,只能由處理器本身訪問。一旦實例化,它也是不可變的。
  • Thread Control Structure (TCS):每個 enclave 都與至少一個 TCS 結構相關聯,該結構指示進入 enclave 的執行點。由於 SGX 支持多線程,一個 enclave 可以有與 TCS 一樣多的活動線程。與 SECS 結構一樣,它只能由處理器訪問,並且也是不可變的。
  • Save State Area (SSA):每個 TCS 至少與一個 SSA 結構相關聯,該結構用於在異常和中斷處理期間保存處理器的狀態。該數據結構在退出時被寫入,在恢復時被讀取。
  • Stack and Heap:每個 enclave 都可以使用其棧和堆。 RBP 和 RSP 寄存器在進入和退出時被保存,但它們的值不會改變。堆不在內部處理,encalve 需要自己的分配器。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM