Intel 官方远程认证示例代码,例如https://www.intel.com/content/www/us/en/developer/articles/code-sample/software-guard-extensions-remote-attestation-end-to-end -example.html,描述一个 encalve 在客户端运行的模型,服务器提供秘密数据,如下图所示。
但我想实现一个计算用户在 enclave 中的秘密数据的服务。所以有很多客户端提供秘密数据和运行 encalve 的服务器。障碍是 intel sgx sdk 不适合这个模型。例如,在 sgx_tkey_exchange.h 中声明的函数 sgx_init_ra 接受一个公钥以供以后验证,intel 的文档建议将公钥硬编码到 enclave 代码中。
服务提供者的公钥应该被硬编码到 enclave 中。这与 enclave 签名相结合,确保最终用户无法更改密钥,因此 enclave 只能与预期的远程服务进行通信。
这适合英特尔的远程证明模型,但不适合我的。因为在我的模型中,有很多客户端(秘密数据提供者),并且很难安全地获取客户端的公钥。
那么,有没有办法在这个模型中使用intel sgx sdk?