问题标签 [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 回答
1442 浏览

c++ - Passing vector to enclave in Intel SGX

I have a vector<vector <string>> a; How could I pass it to the enclave? How I declare edl function. A sample function declaration for the app, edl and enclave is much appreciated.

I am aware of this: C++ Arguments to SGX Enclave Edge Functions.

A sample to pass even a vector<string> is ok for me.

update1: I came up with this:

App.cpp

edl:

enclave

But enclave does not receive any data, the program compiles perfectly with no error. Could anyone help? The printf is the sample ocall.

0 投票
1 回答
147 浏览

c++ - SGX 演示应用程序无法编译

通过 Visual Studio SGX 插件,我创建了一个演示应用程序,其 EDL 如下:

sign 函数,现在,只返回 a nullptr,所以它不应该是问题。

当我尝试用 MSVC 编译它时,它给了我错误_mm_lfence identifier not found

此功能由 SGX 代理功能自动使用,我无法控制它。

关于发生了什么的任何线索?

0 投票
1 回答
173 浏览

security - 英特尔 SGX 开发人员许可和开源软件

是否有可能获得许可开发人员证书,以在生产模式下签署经过安全审查、社区开发的开源 SGX 软件二进制文件,并将其发布在 apt 或 rpm 等开源存储库上?

我刚刚问过英特尔 SGX 团队,他们说只有经过验证的供应商才能获得证书并在生产模式下运行。就像苹果的 App Store 一样,不允许开源代码,对吧?

0 投票
1 回答
676 浏览

c++ - 无法在硬件模式下创建 SGX enclave - “无效的启动令牌”,即使文档将无效的启动令牌指定为第一个

英特尔的文档在这里说,如果没有以前的启动令牌,则应使用全零的“无效”令牌。这在模拟模式下完美运行,但在硬件模式下它返回 SGX_ERROR_INVALID_LAUNCH_TOKEN,即使这正是它所要求的。

代码返回状态 = SGX_ERROR_INVALID_LAUNCH_TOKEN

我在构建过程中可能缺少什么吗?

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

0 投票
1 回答
394 浏览

c - 将可变大小的缓冲区从 SGX 飞地传递到外部

我正在尝试使用以下原型执行功能:

所以想法是将一个缓冲区传递到 enclave,然后在另一个缓冲区中返回响应,该缓冲区的大小可以不同,该大小存储在buffer_out_len.

我在定义 EDL 函数时遇到了麻烦。所以我的想法是做类似的事情:

现在,这只返回一个填充了一个的缓冲区。我知道我应该使用参数传递缓冲区的长度,但是不允许size使用指针:size

我的最后一个解决方案是否可以使用另一种语法?或者也许通过制作返回值size_t buffer_out_len?如果是这样,我如何从size参数中引用它[out]

或者也许有另一种方法来做这种行为?初始化一个可变大小的缓冲区并将其传递给外部?非常感谢。

0 投票
1 回答
323 浏览

sgx - 英特尔 SGX 如何在启动前验证 enclave 库?

我研究并发现 enclave 是用私钥签名的,并且在 enclave 启动时,它将使用 enclave 库附带的公钥进行验证。

我的问题是如何信任带有公钥的飞地二进制文件。

在这两者之间,有人可以更改代码并用他的私钥再次签名,并将他的公钥附加到 SIGSTRUCT。

0 投票
1 回答
298 浏览

c - sgx_tcrypto 和 OpenSSL libcrypt 之间明显不兼容

我正在尝试将从SGX飞地获得的公钥加载到OpenSSL椭圆曲线公钥对象中。

内置于公钥SGX SDK使用点的加密库,并将它们表示为 (x,y) 对。SECP256R1因此,我尝试执行以下操作:

1) 从SGX对象中提取仿射坐标 (x,y)。

2) 在 上创建一个 OpenSSL 公钥对象SECP256R1

3)将其设置为(x,y)。

但是,最后一次调用失败并显示错误消息:"error:1007C06B:elliptic curve routines:EC_POINT_set_affine_coordinates_GFp:point is not on curve"。这哪里出错了?这可能是字节顺序问题吗?

作为参考,此处定义了一个示例密钥对:

0 投票
0 回答
293 浏览

sgx - 无法将 SGX 驱动程序安装到 intel i3 6100 CentOS 7 机器

我正在尝试在基于 Intel I3 6100 的 CPU 上安装 Intel SGX 驱动程序,但无法启动 enclave。

我怀疑这是由于我的处理器(即英特尔酷睿 i3)而发生的。我在 I7 随附的另一台机器上执行相同的步骤,它按预期工作。

我最后尝试的是:

首先我尝试安装驱动程序 1.7 并得到设备错误。

==================================================== ======

==================================================== =========

其次,我尝试安装 SGX 2.1.0 驱动程序并成功安装驱动程序,但无法启动 enclave。

==================================================== ==========

==================================================== ==========

注意:我在 BIOS 中验证并在那里启用了 SGX。

0 投票
1 回答
349 浏览

c++ - 如何在 sgx ecall 中返回未知大小的指针?

如何使用 [out] 在 ecall 中返回未知大小的指针?我知道的当前方法要求在调用ecall时设置指针的大小,例如:

还有另一种方法,在调用 ecall 函数时我不必指定指针的大小?