您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關由CPU保護您的數據和隱私不被惡意代碼竊取的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
英特爾 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 的加密保護下利用數據進行運算,結果會以密文形式返回給您。這種模式下,您既可以利用云計算強大的計算力,又不用擔心數據泄漏。
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保護您的數據和隱私不被惡意代碼竊取的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。