问题标签 [enclave]

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 投票
2 回答
875 浏览

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

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

飞地.edl:

飞地.cpp:

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

但我收到的结果如下:

123456789(空)

我不确定我做错了什么?

0 投票
1 回答
845 浏览

c++ - SGX Enclave 边缘函数的 C++ 参数

我正在尝试编写一个简单的 SGX 飞地,它接受一个布尔向量,但显然 edger8r 创建了 c 代码;所以edl代码

产生一个编译错误(有趣的是,英特尔编译器在标题“灾难性错误”下报告它)说vector找不到标头。

在我看来,这个问题可以通过使用 c++ 标志编译输出边缘代码来解决。那行得通吗?即使是这样,是否有更简洁的方法来做到这一点(即具有带有 C++ 标准类型参数的边缘函数)?

PS:我没有足够的代表来添加新标签,有人会用'edger8r'标记这个吗?我认为这会有所帮助。

0 投票
4 回答
1538 浏览

c++ - 加载 Enclave 时出错:无法使用 CreateFile() 打开文件

我正在尝试编写一个简单的 SGX 项目作为开始。所以我有这个主要的主机应用程序例程,我几乎从Lars Richter 的博客中复制了它:

它编译得很好(我正在使用带有 Visual Studio 2015 的 Intel C++ 17.0 编译器),但它不会加载 enclave。我收到以下错误消息:

0 投票
1 回答
448 浏览

sgx - 无法在 SGX Helloworld 中创建 Enclave

为什么“[sgx_create_enclavew ..\urts\win\urts.cpp:195] 无法使用 CreateFile() 打开文件”在我将工作目录从 $(ProjectDir) 设置为 $(OutDir) 飞地和应用程序之后仍然发生?

我在我的 VS 工作目录中找不到文件“sample_enclave.signed.dll”。

我跟着这个教程:https ://software.intel.com/zh-cn/SGX-Development-Guide-Part-2

我使用“VS 2015 Pro”和“SGX SDK 1.7”。

0 投票
3 回答
1224 浏览

sgx - 将应用程序加载到英特尔 SGX 飞地

有没有办法将现有应用程序Intel SGX直接加载到 enclave 中?

0 投票
2 回答
717 浏览

c - 为什么在 SGX enclave 中的字符串参数必须与 [in] 属性一起使用

使用 OCALL,我想将在不受信任的内存中动态创建的 C 字符串的副本放入我的飞地。因此,我必须使用[out, string]属性。

但是,我不能这样做,因为我还必须添加[in]属性。问题是我真的不知道字符串的大小,并且我不希望[in]每次进行 OCALL 时将字符串从 enclave 不必要地复制到不受信任的内存中产生的开销(随之而来)。

我的edl文件:

error: string/wstring/sizefunc should be used with an 'in' attribute

为什么我必须添加[in]属性?

出于性能原因,有没有办法避免这种开销?

0 投票
1 回答
344 浏览

windows - CreateEnclave() 函数窗口

我正在使用gcc和编译我的程序。我决定 enclaveapi 并尝试使用CreateEnclave(). 当我添加标题时,它说不<enclaveapi.h>存在。

当我使用标题<winbase.h>时,它返回undefined reference to 'CreateEnclave'. 我该如何摆脱这个错误?我正在使用基本编译gcc main.c -o main.exe -mwindows

0 投票
1 回答
313 浏览

c++ - 如何在英特尔 SGX Enclave 内实现动态加载?

因为在英特尔 SGX enclave 内不能使用任何标准库。如何在 Enclave 内实现动态加载?例如,我有函数foo1(),并且foo2() 在一个扩展名为 .so 的文件中。

我需要在 Enclave 内动态加载一个函数。然后,Enclave 外部的 main 函数可以调用加载的函数。

应用程序.cpp

status = ecall_dynamicLoading(enclave_id,func); // func is a function pointer loaded from .so // for example, func = &foo1;

飞地.cpp

ecall_dynamicLoading(func){ (*func)(/* some inputs */); }

可能吗?

谢谢你。

0 投票
1 回答
920 浏览

windows - 将图像加载到 enclave 内存中

我正在尝试使用新的 Windows 1709 功能,该功能允许将 DLL 加载到 enclave 内存中。

我没有找到任何文档或示例。据我了解,这些是实现它的步骤:

  1. 检查是否支持 VBS(仅 VBS 支持 enclave 映像)使用IsEnclaveTypeSupported.

  2. 使用CreateEnclave函数创建飞地。

  3. 使用LoadEnclaveImage函数将图像加载到 enclave 内存中。

这是我尝试使用的代码片段:

调用CreateEnclave返回NULL并将最后一个错误代码设置为 0x32(不支持该请求)。

任何想法如何使它工作?

0 投票
1 回答
718 浏览

marshalling - 将 C++ 结构从英特尔 SGX 中的应用程序传递到飞地

我有一个这样的 C++ 结构:

我想将它从应用程序传递或读取到英特尔 SGX 飞地。根据此处提到的内容:https ://software.intel.com/en-us/forums/intel-software-guard-extensions-intel-sgx/topic/703489

我试过这个:

应用程序:

教育署:

飞地:

但似乎,root2 无法正确初始化,它指向垃圾。

关于 user_check:https ://software.intel.com/en-us/node/708978

关于如何正确读取飞地内数据的任何帮助。PS:英特尔 SGX enclave 不支持任何序列化库。

我也在这里问过类似的问题,但对我的小脑袋没有真正有用的答案。 https://github.com/intel/linux-sgx/issues/229