intel - 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 做到了
解决方案
您可以实现远程证明以证明在 enclave 内发生了某种计算。
证明报告包含 MRSIGNER 字段和report_data
可以填充任意数据的字段。正如您已经解释的那样,第一个可用于验证 enclave 源代码。第二个可用于证明 enclave 内存在私钥。在 enclave 内生成密钥对后,您可以将公钥放在report_data
字段中并使用私钥对计算结果进行签名。
您会在此答案中看到完整的解释
推荐阅读
- python - How to remove newline in pandas dataframe columns?
- sql - How to use result of first query in second query where condition?
- excel - 从另一个用户表单更新用户表单,错误“无法设置列属性”
- c# - 如何检索firebase实时数据库的所有项目
- xamarin - 如何在 Xamarin.Forms 项目中呈现自适应卡片?
- androidx - Failed to resolve: androidx
- javascript - 如何使用 javascript 值比较更改 div 元素的背景颜色?
- angular - 添加输入onclick按钮表单角度7
- python - Can't save Keras model when using reduce_mean in the model?
- node.js - 两个nodejs docker容器之间的Kubernetes频繁连接被拒绝错误