1

我是英特尔 SGX 的初学者。我想知道 SGX 是否支持在不同的 Enclave 中并行运行两个函数?例如,功能A在Enclaves En_A中,而功能B在Enclaves En_B中。应用程序是否可以并行调用函数 A 和 B?

提前致谢!

4

1 回答 1

1

是的,这是可能的。

SGX 设计支持在一个系统上同时拥有多个飞地,这在多进程环境中是必需的。这是通过将 EPC 拆分为 4 KB 页面来实现的,这些页面可以分配给不同的 enclave。EPC 使用与架构的地址转换功能相同的页面大小。

(来源)

查看英特尔 SGX SDK 文档(第 92 页),您可以看到该sgx_create_enclave函数通过采用 unique 来区分 enclave 实例enclave_id

sgx_status_t sgx_create_enclave (
    const char *file_name,
    const int debug,
    sgx_launch_token_t *launch_token,
    int *launch_token_updated,
    sgx_enclave_id_t *enclave_id,    // here
    sgx_misc_attribute_t *misc_attr
);

应用程序使用这些 enclave id 使用不受信任的代理函数进行 ECALL 调用:

// demo.edl
enclave {
    trusted {
        public void get_secret([out] secret_t* secret);
    };
}

// generated function signature
sgx_status_t get_secret(sgx_enclave_id_t eid, secret_t* secret);

您可以在第 27 页找到完整的说明

于 2019-07-04T07:49:42.587 回答