如何在不同的区域中并行运行两个功能?

时间:2019-06-25 16:13:43

标签: sgx

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

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,有可能。

  

SGX设计支持在系统的系统上具有多个安全区。   同时,这在多进程环境中是必需的。这是   通过将EPC分成4 KB的页面可以分配来实现   到不同的飞地。 EPC使用与   建筑的地址翻译功能。

(source)

看看Intel SGX SDK docs (page 92),您可以看到sgx_create_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
);

应用程序使用这些安全区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);

您可以在page 27

上找到完整的说明