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

security - 在客户端-服务器架构中使用英特尔 SGX 远程认证

假设以下场景:我们想要实现一个开源密码管理器,它使用一个中央服务,使不同的客户端(在不同的设备上)能够同步他们的本地数据库。该服务是由公司运行还是在用户的服务器上运行都没有关系(与 owncloud 使用场景相比)。为了使我们的应用程序更加“安全”,我们希望将英特尔 SGX 飞地用于中央服务(请忽略当前对 SGX 飞地的攻击研究)。

然后,典型的工作流程是:

  1. 本地客户证明中央飞地
  2. 用户注册/登录
  3. (本地和远程数据库同步)
  4. 用户存储/检索密码

现在我的问题是:我们密码管理器的每个用户都需要注册英特尔认证服务 (IAS) 吗?如果是,这是否意味着,由于私钥共享非常糟糕,每台设备都需要注册?

根据我的调查,至少在开发和测试阶段,答案是肯定的。我找不到任何生产场景的公开信息。我所知道的是,商业注册会改变飞地的行为(它可以在生产模式下运行),这在这里无关紧要。对此我有两个想法:

  1. 如果我是对的,这难道不是新交所的另一个表演障碍吗?在没有证明功能的情况下使用 SGX 似乎毫无用处。
  2. https://www.fortanix.com/等服务如何规避或解决问题?他们的文档没有提示与英特尔进行必要的交互。

上述场景只是一个例子;它可以改进,我们不打算实施它。但是,描述一个场景比描述我们当前的项目计划要容易得多,这很容易想象,并且似乎是 SGX 的一个现实用例。

PS:这个问题是英特尔 SGX 开发人员许可和开源软件的连续问题

0 投票
1 回答
1456 浏览

c - libsgx_capable.so:无法打开共享对象文件:没有这样的文件或目录

我正在尝试运行以下代码以在我的机器中启用 SGX(BIOS:软件控制):

这是我正在使用的 Makefile:

当我运行应用程序时,我收到以下消息:

应用程序没有读取 EFI 变量所需的权限。以管理员权限运行应用程序以启用英特尔 SGX 设备状态。

然后,我运行sudo ./app并收到以下错误:

./app:加载共享库时出错:libsgx_capable.so:无法打开共享对象文件:没有这样的文件或目录

奇怪的是编译的时候没有找到这个库:

然后,我使用:

我再次运行并返回相同的错误消息。谁能告诉我我错过了什么?

0 投票
2 回答
207 浏览

makefile - 使用 CMake 编译导致 SGX_ERROR_UNEXPECTED?

我最近正在尝试学习 intel sgx sdk。

今天我在我的代码中发现了一个问题,在 intel DOC 或 WEB 中找不到任何解释。

当我在某些情况下调用 sgx_create_enclave 时,代码将返回 SGX_ERROR_UNEXPECTED。我认为我的 CMakeLists.txt 有问题(我使用 cmake 编译项目中不受信任的部分),因为当我在 sdk 示例中使用模板 Makefile 进行编译时,代码运行正常。更多细节吹:

代码将在以下情况下成功运行:

在这种情况下代码会返回错误:

此处提供的代码(我已删除所有不必要的代码): https ://github.com/chilogen/workspace/tree/master/error/SimpleEnclave

应用程序.cpp

CMakeLists.txt

Makefile(我认为这是重要的部分,如果您对 intel sgx 不太了解,那么您仍然可以检查 CMakeLists.txt 和 Makefile 之间的区别)

## SGX SDK 设置

更新:编译.sh

那么,我的代码(或 CMakeLists.txt)有什么问题,我该怎么办?

如果你能给我一些想法,我将非常感激。

0 投票
1 回答
99 浏览

x86 - x86 VMCS 字段“ENCLV-Exiting Bitmap”的编码

英特尔® 64 位和 IA-32 架构软件开发人员手册第 3C 卷:系统编程指南,第 3 部分包括对虚拟机控制结构 (VMCS) 的控制字段组件的以下描述:

24.6.17 ENCLV-退出位图

ENCLV退出位图是一个 64 位字段。如果“enable ENCLV exiting”VM 执行控制为 1,如果该字段中对应 EAX 的值的位为 1,则执行 ENCLV 将导致 VM 退出。如果该位为 0,则指令正常执行。有关详细信息,请参阅第 25.1.3 节。

但是,第 3D 卷的附录 B 中没有给出该字段的编码(人们希望它列在表 B-4“64 位控制字段的编码”中)。

在哪里可以找到该字段的编码,否则如何向英特尔报告遗漏?

0 投票
0 回答
436 浏览

c++ - 如何仅使用单线程强制 gRPC cpp 程序

我需要在操作系统(仅支持单线程)中运行我的客户端应用程序(使用 gRPC 用 c++ 编写)。但是,我注意到它grpc::InsecureChannelCredentials();正在尝试创建多个线程。这是在我的主机中调用该 gRPC 函数后调试器的输出:

这将导致程序在单线程操作系统内崩溃。

我的问题是:有没有办法只使用单线程配置 gPRC,或者使 cpp 可执行文件只使用单线程运行?提前致谢。

顺便说一句,这里是上面提到的操作系统的链接,这个问题解释了为什么它只支持单线程。 https://github.com/lsds/sgx-lkl/issues/1

编辑: 它实际上不允许多进程而不是多线程应用程序。gRPC 似乎在其核心库中进行 fork。我想知道是否有办法配置 gRPC 以禁用进程分叉。

0 投票
1 回答
1601 浏览

intel - 英特尔 SGX 远程证明如何工作?

SGX远程认证程序(变化:有和没有远程英特尔服务的参与,工作的解释/逻辑是一步一步的。

0 投票
1 回答
262 浏览

c++ - 什么是 SGX_CDECL 宏?

我正在尝试了解如何创建自己的 sgx 应用程序,因此我正在仔细检查 SDK 示例。我想知道 SGX_CDECL 的用途是什么?

在下面的示例中以及一般情况下

0 投票
1 回答
439 浏览

c - 使用 SGX 的 C 语言中的 Hello World

我注意到有些人能够用 C 代码编写 SGX 代码。我试图这样做,假设我有以下代码。我仍然不知道如何编写一个可以编译这些文件的 Makefile 因为我没有在网上找到太多关于如何编译它的信息。

主程序

encalve.c

encalve.edl

我正在寻找可以编译 sgx c 代码的 Makefile。

0 投票
0 回答
564 浏览

intel - 如何获取函数 sgx_ecc256_create_key_pair() 在 sgx enclave 中生成的公钥?

我是英特尔 SGX 开发的新手,我正在英特尔 SGX 上开发应用程序。我想在我的飞地中创建一个公钥/私钥。我使用了这里提到的函数sgx_ecc256_create_key_pair

我怎样才能获得我的应用程序的公钥(到 enclave 的外部)?

我想用这个公钥加密数据并将其发送到 enclave 以通过 enclave 中创建的私钥对其进行解密。

0 投票
1 回答
115 浏览

intel - 英特尔 SGX 服务提供商

我想在我的项目中实施英特尔 SGX 远程认证机制。此机制需要服务提供者和 IAS 服务器。我的问题是:究竟什么是Service Provider,它是我们安装 API 或其他东西的普通服务器。如何配置此 SP 以实施远程证明机制。谢谢你。