问题标签 [sgx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
680 浏览

intel - 英特尔 SGX HeapMaxSize 和 EPC 页面交换

.edl 文件包含一个HeapMaxSize条目。SDK 用户指南指出,这是因为

飞地内存是有限的资源。最大堆大小在 enclave 创建时设置。

但是 SGX 规范不允许 EPC 页面交换(EPA、EBLOCK、ETRACK、EWB)吗?

或者从更实际的意义上说:设置HeapMaxSize=2^64字节有缺点吗?

也许 SDK 还不支持 EPC 页面交换,或者可信 enclave 代码必须手动触发这种交换?

编辑ab。指出,对于 SGXv1,所有 EPC 页面都必须EADD在 enclave 执行之前进行编辑。此时的 SDK 是否仅支持 SGXv1 指令?

0 投票
2 回答
1834 浏览

intel - 英特尔 SGX 线程和与 TCS

我试图了解 TCS 启用的 SGX 线程和SDK提供的不受信任的线程之间的区别。

如果我理解正确,TCS 允许多个逻辑处理器进入同一个飞地。每个逻辑处理器都有自己的 TCS,因此也有自己的入口点(OENTRYTCS 中的字段)。每个线程运行直到 AEX 发生或到达线程的末尾。但是,这些由 TCS 启用的线程还没有办法相互同步。至少,没有用于同步的 SGX 指令。

然后,另一方面,SGX SDK 提供了一组线程同步原语,主要是互斥锁和条件变量。这些原语不受信任,因为它们最终由操作系统提供服务。

我的问题是,这些线程同步原语是否打算由 TCS 线程使用?如果是这样,这不会降低安全性吗?操作系统可以随心所欲地进行调度。

0 投票
1 回答
1343 浏览

sgx - 英特尔 SGX 远程证明示例代码

我正在尝试在英特尔 SGX SDK 中运行远程证明示例代码。我总是收到错误“错误,调用 sgx_ra_get_msg1 失败 [wmain]。” 我认为这是因为该sgx_ra_init(&g_sp_pub_key, b_pse, p_context)函数返回零值p_context,无法使用。

有没有人可以正确运行远程证明示例代码?PS:我可以运行本地认证示例代码,我认为Intel SGX开发环境是可以的。

0 投票
1 回答
288 浏览

sgx - 英特尔 SGX:从 enclave 二进制文件复制 enclave 测量值

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

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

本质上,问题归结为如何以密码方式链接二进制文件和测量值?似乎有一个悖论:假设我有 enclave 二进制文件,我可以获得它的测量值的唯一方法是加载它。但是,加载过程不受信任(由操作系统完成)!我如何确保我得到的测量值确实是针对那个特定的二进制文件?我一定误解了什么,因为这似乎对新交所的整个有效性至关重要。请纠正我。

谢谢!

0 投票
1 回答
2513 浏览

intel - 适用于 Linux 的英特尔 SGX 模拟器

根据本教程,在 Windows 中使用 Visual Studio 进行开发时,可以在模拟器中开发和运行 SGX 应用程序。尽管有适用于 Linux 的 SDK 版本,但本教程并未提及 Linux。

英特尔的 SGX 模拟器是 Windows 独有的,还是也有 Linux 版本?

(注意:我知道OpenSGX的存在,我专门询问英特尔模拟器。)

0 投票
2 回答
875 浏览

c++ - 读取 SGX enclave 中的文件内容

我正在尝试使用 OCalls 从飞地中读取文件的内容。

飞地.edl:

飞地.cpp:

应用程序中ocall函数的实现:

但我收到的结果如下:

123456789(空)

我不确定我做错了什么?

0 投票
2 回答
489 浏览

pointers - SGX - 受信任的网桥和受信任的代理有什么区别?

在英特尔的 SGX 开发人员指南指针处理中,它提到:

当复制缓冲区时,可信桥必须避免覆盖 ECALL 中的飞地内存,并且可信代理必须避免泄露 OCALL 中的秘密。

这里的可信桥可信代理是什么?

--- 编辑---

ECALL 中的指针处理和 OCALL 中的指针处理,我注意到受信任的桥用于将缓冲区从外部飞地分配复制到内部飞地,其中受信任的代理用于将缓冲区从内部飞地分配复制到外部飞地。所以我个人的结论是,他们都是某种代表,负责从两个不同的方向分配复制内存缓冲区。他们的名字“桥”和“代理”用于区分他们的工作流程。

我的理解正确吗?

0 投票
1 回答
852 浏览

c++ - 使用英特尔 SGX 进行本地证明

我正在尝试在从两个不同应用程序创建的两个飞地之间执行本地证明。

此处提供的 Linux 示例代码创建 3 个不同的 enclave,然后在它们之间建立安全连接。但是这些飞地都是由同一个应用程序创建的,因此它知道所有飞地 ID。

如果两个不同的应用程序正在创建自己的 enclave 应该相互通信,源 enclave 将如何知道目标 enclave 的 ID?该ID是否必须以“通用”方式(IPC)从一个应用程序传输到飞地?

我尝试了一些简单的测试,方法是启动目标飞地并打印其 ID:“26ce00000002”

然后我在本地证明示例中使用了这个 ID 来尝试连接到这个正在运行的目标 enclave:

使用源飞地执行本地证明程序时,我收到“SGX_ERROR_INVALID_ENCLAVE_ID”错误?此错误不是由本地证明示例程序引发的,而是来自 SGX 库中的某个地方,我不知道为什么,因为目标 enclave 仍在运行,因此 ID 应该存在!?

0 投票
2 回答
2620 浏览

virtualization - 虚拟化环境中的英特尔 SGX

是否可以在 Virtualbox 或 Docker 等虚拟化环境中创建和运行英特尔 SGX 飞地?

0 投票
2 回答
225 浏览

sgx - 确定在同一系统上运行的 SGX 飞地

我有两个应用程序 A1 和 A2,都创建了自己的飞地 E1 和 E2。第三个应用程序 A3 连接到 A1 和 A2。A3 是否可以确定两个飞地 E1 和 E2 是否实际上在同一系统上运行?