首頁>Club>
3
回覆列表
  • 1 # 使用者2538246404225

    英特爾 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);

    };

    };

  • 中秋節和大豐收的關聯?
  • 產後如何恢復身材?