问题标签 [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.
intel - Enclave ,线程和进程之间的关系是什么?
Enclave ,线程和进程之间的关系是什么?
SGX 是否支持多线程或多进程?
如果我调用“fork”在飞地内创建新进程会发生什么?
c - SGX Enclave:进行游行的实际功能在哪里以及如何编译
在阅读了大量文档后,我做了第一个简单的 enclave 函数:
然后通过 bash 我运行 edger8r:
然后它生成了以下文件,您可以在架构中看到:
所以我假设enclave_t.c
我发现的唯一参考是在这个函数中:
特别是在
但是放在哪里myFirstMethod
呢?还有我将如何将我的飞地编译为应用程序的一部分作为静态库。
据我搜索的是这些链接中的教程:
所有提到的 Visual Studio 本身都不能在 GNU/Linux 上运行,所以对我来说有点难以理解。
编辑1:
进一步查看我在https://github.com/01org/linux-sgx上看到的,我可以在链接中提到的模拟模式下编译:
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 */);
}
可能吗?
谢谢你。
intel - 英特尔 SGX 是否在仿真模式下提供软件内存保护?
我有一些第四代英特尔 CPU,我想运行一些英特尔 SGX 应用程序。我使用发布模拟模式。
在这里您可以看到 SGX 模拟不提供硬件保护!但是,我想知道英特尔 SGX 是否在发布模拟模式下提供某种软件保护?
linux - SGX Sign enclave 无法证明已构建的 enclave:密钥文件格式不正确
我设法生成了我的 Enclave(https://github.com/pc-magas/myFirstEnclave),但据我所知,我需要生成一个 rsa 密钥才能对其进行签名。所以我跑:
然后我运行以下命令对其进行签名:
但我收到以下错误:
密钥文件格式不正确。
编辑2:
我试图通过生成密钥,ssh_keygen
但仍然是同样的错误。
为了签署飞地,需要什么样的格式?
编辑3:
我还尝试使用以下方法生成密钥:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.sgx/MyEnclave.pem
结果还是一样
c++ - 英特尔 SGX 错误:当我无法正确加载飞地时,8207 错误是什么意思
我制作了以下飞地和应用程序加载飞地:
https://github.com/pc-magas/myFirstEnclave/tree/run_fail
如您所见,我加载了错误的 enclave 路径,因此应用程序无法按预期运行,当示例中发生这种情况时,它会返回错误:
新交所错误代码:8207
无法初始化飞地。
但我无法弄清楚8207
错误代码是什么意思,据我所知,我没有提到文档上的错误代码:https ://software.intel.com/en-us/node/709252
那么你能解释一下这个错误代码是什么意思吗?
sgx - 英特尔 SGX 机箱内的设备驱动程序?
是否可以在英特尔 SGX 飞地内运行设备驱动程序?或者飞地不可能访问 DMA 内存并执行内存映射 I/O?
我已经有一个映射了所有必要内存的设备驱动程序,但我不知道是否可以创建一个共享这些映射的飞地。我基本上对飞地是否只能访问它们自己的私有内存或者它们是否也可以访问我将映射到它们的任意物理内存感到困惑。
文档似乎说飞地无法访问任意位置的代码,但我想知道数据和 MMIO 的规则。
c - 使用英特尔 SGX 的客户端服务器程序
我想设计和构建一个安全的远程计算应用程序。我想利用英特尔 SGX 的功能,我想了 2 种方法,但由于缺乏开发经验,我无法决定应该实施哪种方法。
场景:典型客户端(假定安全 +非 SGX)机器和服务器(可能是恶意 +启用 SGX)系统
方法1:每个客户端(有一些数据)在客户端生成一个对称密钥(AES)并在本地加密数据并发送到服务器。客户端密钥通过远程证明提供给服务器,然后使用此密钥解密 SGX 飞地内的数据。
方法 2:服务器在 enclave 内生成公私密钥对,并将公钥发送给每个客户端。然后每个客户端使用公钥加密,然后将数据发送到服务器,然后使用先前生成的私钥解密。
请注意:SGX enclave 可以反汇编但无法调试。那么方法2是否安全?
corda - 启用 SGX 后是否可以遍历交易链?
如果我在 Corda 开源中构建一个 CorDapp 遍历所有交易链以收集一些数据,我想当 SGX 在企业版中启用时,它是不可能的,对吧?
diffie-hellman - 新交所 DH 密钥交换
我正在尝试使用英特尔的 sgx 技术创建一个密钥交换应用程序。我使用这个 - https://software.intel.com/en-us/node/709011页面作为指导,我发送了本网站显示的所有消息,但我不知道如何获取密钥!。在 DH 密钥交换结束时,我应该有一个站点和服务器的共同密钥,但我不确定他在哪里。在函数sgx_dh_initiator_proc_msg3
中(如网站底部所示)有一个名为“aek”的键,这是互惠键吗?谢谢