首頁 >運維 >linux運維 >如何由CPU保護您的資料和隱私不被惡意程式碼竊取?英特爾SGX基礎介紹

如何由CPU保護您的資料和隱私不被惡意程式碼竊取?英特爾SGX基礎介紹

坏嘻嘻
坏嘻嘻原創
2018-09-29 11:42:524614瀏覽

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

Intel SGX 基礎介紹

Intel 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 核心版本的頭檔。

以上是如何由CPU保護您的資料和隱私不被惡意程式碼竊取?英特爾SGX基礎介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn