首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intel SGX:从enclave二进制复制飞地测量

Intel SGX:从enclave二进制复制飞地测量
EN

Stack Overflow用户
提问于 2016-10-19 04:06:21
回答 1查看 329关注 0票数 1

我有一个关于英特尔SGX飞地测量的问题。从SignTool 源代码 (以及手册中的高级描述)判断,度量似乎涉及加载enclave文件(ELF或PE)。但是在不同的平台上加载的结果是不同的,对吧?我想知道我是否能从一个飞地二进制中再现一致的飞地测量。

特别是,我正在考虑以下场景:假设我想向我的用户分发一个enclave.signed.so,并且我只想为来自那个特定飞地的请求提供服务。我想我不能简单地将我平台上的本地度量与用户的(可以包括在他们的认证中)进行比较。我该怎么办呢?

本质上,问题归结为如何将二进制和度量以密码方式连接起来?似乎有一个悖论:假设我有飞地二进制,唯一能得到它的测量方法就是加载它。但是,加载过程是而不是可信的(由OS完成)!我如何确保我得到的度量确实是针对那个特定的二进制?我一定是误解了什么,因为这似乎对SGX的整个有效性至关重要。请纠正我。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-02-07 09:44:51

你是对的,要建立“真实”的飞地测量,你需要一个值得信赖的系统。

飞地的测量是由处理器完成的。它用每个飞地创建步骤/指令来改变测量值。规格说明非常详细地解释了这种排列。例如,ECREATE的伪代码包含以下有关度量字段的语句:

代码语言:javascript
复制
(* Initialize hash updates etc*)
Initialize enclave’s MRENCLAVE update counter;
(* Add “ECREATE” string and SECS fields to MRENCLAVE *)
TMPUPDATEFIELD[63:0] = 0045544145524345H; // “ECREATE”
TMPUPDATEFIELD[95:64] = DS:TMP_SECS.SSAFRAMESIZE;
TMPUPDATEFIELD[159:96] = DS:TMP_SECS.SIZE;
TMPUPDATEFIELD[511:160] = 0;
SHA256UPDATE(DS:TMP_SECS.MRENCLAVE, TMPUPDATEFIELD)
INC enclave’s MRENCLAVE update counter;

假设这些描述是详尽无遗的,并且知道驱动程序执行创建步骤的顺序,那么我们应该能够计算飞地的度量,而无需加载它的。因此,您可以计算飞地中的值。但是如何计算这个飞地的测量值呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40121940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档