首页 > 解决方案 > MRENCLAVE 值如何在英特尔 SGX 远程认证中发挥作用?

问题描述

我想知道 MRENCLAVE 值如何在英特尔 SGX 远程证明中起作用。我找到

“MRENCLAVE 唯一标识任何特定飞地,因此使用飞地身份将限制对密封数据的访问仅限于该飞地的实例。注意:飞地的不同构建/版本将导致不同的 MRENCLAVE 值。” (https://software.intel.com/en-us/blogs/2016/05/04/introduction-to-intel-sgx-sealing

据我了解,MRENCLAVE 用于客户端检查是否从服务提供商处收到 MRENCLAVE 和客户端生成的预期 MRENCLAVE 是否相同。如果不是,那么我们如何检查服务提供者是否在远程证明中执行了预期的代码和数据?

我的意思是,Alice 有 enclave 代码及其 MRENCLACE(代码和数据的快照),然后请求 Bob 执行它。那么 Alice 如何检查 Bob 是否使用 Bob 发送的报价执行了准确的预期代码?我以为 MRENCLAVE 做到了

标签: intelteesgx

解决方案


您可以实现远程证明以证明在 enclave 内发生了某种计算。

证明报告包含 MRSIGNER 字段和report_data可以填充任意数据的字段。正如您已经解释的那样,第一个可用于验证 enclave 源代码。第二个可用于证明 enclave 内存在私钥。在 enclave 内生成密钥对后,您可以将公钥放在report_data字段中并使用私钥对计算结果进行签名。

您会在此答案中看到完整的解释


推荐阅读