如何由CPU保護您的數據和隱私不被惡意代碼竊取?英特爾SGX基礎介紹

本篇文章給大家帶來的內容是關于英特爾sgx的基礎介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

英特爾 SGX 基礎介紹

英特爾 SGX(Intel Software Guard Extension)是英特爾指令集架構的一個擴展。SGX 為您提供了圍圈(Enclave),即內存中一個加密的可信執行區域,由 CPU 保護您的數據和隱私不被惡意代碼竊取。

原理

SGX 利用新增的處理器指令,在內存中分配一部分區域 EPC(Enclave Page Cache),通過 CPU 內的加密引擎 MEE(Memory Encryption Engine)對其中的數據進行加密。EPC 中加密的內容只有進入 CPU 后才會被解密成明文。因此,在 SGX 中,您可以不信任操作系統、VMM、甚至 BIOS,只需要信任 CPU 便能確保隱私數據不會泄漏。

應用

實際應用中,您可以把隱私數據加密后以密文形式傳遞至云上的圍圈中,并通過遠程證明把對應的秘鑰也傳入圍圈。然后在 CPU 的加密保護下利用數據進行運算,結果會以密文形式返回給您。這種模式下,您既可以利用云計算強大的計算力,又不用擔心數據泄漏。

如何由CPU保護您的數據和隱私不被惡意代碼竊取?英特爾SGX基礎介紹

EDL(Enclave Definition Language)

EDL 是 SGX 編程的核心,其中定義了所有圍圈里對外讀寫、處理數據的函數。在編譯階段,SDK 提供的 Edger8r 工具會根據 EDL 中定義的函數生成圍圈和普通內存的橋接函數,并做相應的安全檢測。

函數分為信任函數(ecall)和不可信函數(ocall):

ecall:定義在信任區域(trusted),在圍圈外被調用,并在圍圈內執行。

ocall:定義在不可信區域(untrusted),在圍圈內被調用,并在圍圈外執行。

//?demo.edl enclave?{ ????????//?Add?your?definition?of?"secret_t"?here ????????trusted?{ ?????????????????public?void?get_secret([out]?secret_t*?secret); ????????}; ????????untrusted?{ ????????//?This?OCALL?is?for?illustration?purposes?only. ????????//?It?should?not?be?used?in?a?real?enclave, ????????//?unless?it?is?during?the?development?phase ????????//?for?debugging?purposes. ????????void?dump_secret([in]?const?secret_t*?secret); ????????}; };

安裝 SGX

您可以通過安裝文件或者源代碼安裝 SGX,包括驅動、PSW 和 SDK 等。兩種安裝方式都需要安裝對應 linux 內核版本的頭文件。

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享