问题标签 [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 投票
2 回答
1646 浏览

ssl - 如何检查是否安装了英特尔 SGX SDK 和英特尔 SGX SSL?

我正在我研究所的服务器上编写 SGX 应用程序。我需要知道是否已安装英特尔 SGX SDK英特尔 SGX SSL。服务器正在运行 Ubuntu。

有没有办法检查这个?

0 投票
1 回答
196 浏览

security - 客户端如何与英特尔 SGX enclave 实例共享秘密,而不让托管 enclave 的服务器知道它?

我知道有可用于 SGX 的 SSL 库。但是如何在不让主机知道的情况下在新交所和客户之间建立秘密呢?简单的方法失败了,比如:

在 SGX 中内置一个公私密钥对,然后客户端将会话密钥发送到 SGX。会话密钥由新交所的公钥加密。

这不起作用,因为主机可以直接从已编译的 SGX enclave 可执行文件中获取私钥。

在 SGX 中运行 https 服务器也不能解决问题,这也是因为 SGX 和客户端之间没有身份验证或预共享密钥。

0 投票
1 回答
145 浏览

azure - 无法在 Azure 中使用机密计算 VM 部署服务

我创建了一个 Azure 帐户,承诺可以免费使用一个月 Azure 中的所有服务。但是,我在验证阶段总是无法创建机密计算 VM。我得到的错误报告是:

InvalidTemplateDeployment模板部署失败并出现错误:'ID 为'/subscriptions/e3fa4d71-63b0-4f16-ae14-e741500dcbf7/resourceGroups/testSource/providers/Microsoft.Compute/virtualMachines/aaa'的资源验证失败并显示消息:'请求的大小对于资源 '/subscriptions/e3fa4d71-63b0-4f16-ae14-e741500dcbf7/resourceGroups/testSource/providers/Microsoft.Compute/virtualMachines/aaa' 目前在位置 'eastus' 区域'中不可用 订阅 'e3fa4d71-63b0-4f16 -ae14-e741500dcbf7'。请尝试其他尺寸或部署到不同的位置或区域。有关详细信息,请参阅 https://aka.ms/azureskunotavailable。'.'。

似乎不存在部署机密计算 VM 的可用资源(这很奇怪,因为它与他们对免费帐户的承诺相矛盾)。更改配置(有限的配置选项)不起作用。我认为这与配置有关。根据 Azure 提供的链接,此创建失败可能是由于名为“SKUNotAvailable”的错误,用户可以使用命令确定其可用资源'Get-AzComputeResourceSku | where {$_.Locations -icontains "centralus"}'。奇怪的是,我发现我有资源可用于部署计算 VM 的机密。在这种情况下,它与 Azure 为免费帐户提供的资源无关。

我发现另一个人发布了一个类似的问题(无法在 Azure 机密计算 (ACC) 上创建 VM),该问题仍未解决。他成功创建了一个普通的VM,但在尝试部署机密计算时失败了。

任何人都可以创建 Azure 机密计算 VM 或提供有关可能解决方案的任何提示吗?非常感谢!

0 投票
0 回答
79 浏览

linux - 使用 LLVM 构建 SGX-SDK

我已经从git repo克隆了 sgx-sdk 的源代码。我想用 LLVM 而不是 gcc 来构建它。

我努力了

制作 CC=clang-7 CXX=clang++-7 sdk

但它似乎一个接一个地遇到问题。例如。

  1. 有一堆与 clang 不兼容的 CFLAGS 选项。- 我删除了它们。

  2. /li>

在之前我可以通过编辑相关文件来解决其他问题,但我被困在这一点上。GCC 不会抛出此错误,但 clang 会抛出此错误,我无法理解为什么会发生这种情况。如果我的理解是正确的,则隐式声明错误,如果存在应该由 GCC 和 clang 抛出。

我的构建机器是 Ubuntu 18.04。我已经安装了 clang-7 并在过去使用它来构建其他应用程序,如 Nginx。

0 投票
1 回答
519 浏览

x86 - 如何捕获飞地内的持续时间?

测量运行时间是性能评估的一个重要方面。现在我想评估 SGX enclave(可信执行环境)内的几个代码的性能,我注意到英特尔 SGX 提供了一个名为“sgx_get_trusted_time()”的 API,供开发人员从可信来源获取当前时间。但是,我在这里遇到了麻烦:

1) 使用 'sgx_get_trusted_time()' 之前需要 'sgx_create_pse_session()',但我总是收到错误 'SGX_ERROR_SERVICE_UNAVAILABLE'。我已正确安装并配置了 SGX SDK 和 PSW(否则我无法使用远程认证服务)。我还尝试为开发平台(Win10 + ThinkPad x270 + CORE i5)更新管理引擎,但没有成功;

2) API 以秒为单位返回时间,这在性能评估方面远非精确,尤其是在两次 API 调用之间经过的时间很短的情况下。

我怎样才能解决第一个问题,以及更精确地测量飞地内经过的时间的任何解决方案?感谢任何建议或提示。

0 投票
1 回答
242 浏览

c++ - 英特尔 SGX 将整数从应用程序传递到 Enclave

我正在尝试将两个整数传递给 SGX 飞地,将它们组合起来,然后将结果返回给应用程序。但是,除了创建飞地之外,编译代码时似乎什么都没有发生。没有给出错误,它似乎永远不会到达 ECALL 函数。

如果有人知道这样做的教程,我可以用作参考,那将不胜感激。

EDL:

飞地.cpp

应用程序.cpp

0 投票
1 回答
301 浏览

python - 无法在 Ubuntu 18.04 上安装 Graphene-SGX

我无法正确安装 Graphene ( https://graphene.readthedocs.io/en/latest/building.html )。运行示例代码时,我收到以下错误

Cannot open device /dev/gsgx. Please make sure the Graphene SGX kernel module is loaded.

这可能是因为,在安装命令期间 sudo insmod gsgx.ko,我收到以下错误

insmod: ERROR: could not insert module gsgx.ko: Required key not available.

其余所有(与 SGX 相关)似乎很好,因为我能够运行示例 SGX 示例并sudo service aesmd status给出

0 投票
0 回答
42 浏览

jenkins - 英特尔 SGX 应用程序的 CI/CD 首选方式是什么?

我想为托管在 github 上的基于 Intel SGX 的应用程序创建 CI/CD 工作流。问题在于大多数公开可用的平台,afaik,如 Travis、Circle 没有启用 sgx 的机器。在私有机器上安装 Jenkins 是一种选择,但我也想探索其他可能性。

0 投票
1 回答
20 浏览

intel - 为什么我们在 DH 安全会话建立中需要发起者或响应者的 enclave 身份?

我正在使用 sgx_dh API 开发一个 sgx 应用程序。工作流程可以总结如下(这里的两个角色分别是dh_initiator,简称dh_i,以及dh_responder,即dh_r。):

step0:在dh_i和dh_r端发起会话;

step1:dh_r生成包含g_a的msg1并将msg1发送给dh_i;

step2:dh_i处理msg1,生成包含g_b的msg2,并将msg2发送给dh_r;

step3:dh_r处理msg2并生成msg3,包括对共享密钥的确认,然后将msg3发送给dh_i;

step4:dh_i 处理 msg3。DH 密钥交换完成。

step3 dh_r 会输出一个sgx_dh_session_enclave_identity_t type变量,这样step4 的dh_i 就会输出一个同类型的变量。根据 SGX Developer Reference,这两个变量用于 dh 会话建立。

但我无法弄清楚它们将在哪里使用,因为它们是在密钥交换和飞地身份验证完成时生成的。

任何建议或提示表示赞赏,如果在这里有任何误解,请纠正我。非常感谢~

0 投票
0 回答
13 浏览

python - 是否可以将 python 源存储在云中并在运行时下载并运行它们,就好像模块在本地存在一样?

我想对管理员访问隐藏我的 python 应用程序的源(商业应用程序部署)。

正在考虑将源存储在服务器上的某处,并且本地存储的模块的包装器仅在#import 上在运行时下载模块并使它们可用。

有人知道支持此用例的解决方案吗?

最好的