我是Intel SGX的初学者。我想知道SGX是否支持在不同的Enclaves中并行运行两个功能?例如,功能A在Enclaves En_A中,功能B在Enclaves En_B中。应用程序是否可能并行调用函数A和B?
谢谢!
答案 0 :(得分:0)
是的,有可能。
SGX设计支持在系统的系统上具有多个安全区。 同时,这在多进程环境中是必需的。这是 通过将EPC分成4 KB的页面可以分配来实现 到不同的飞地。 EPC使用与 建筑的地址翻译功能。
看看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
上找到完整的说明