我们可以在 sgx-enclave 中 运行 Linux 命令吗?

can we run Linux commands inside sgx-enclave?

我们能否在 sgx enclave 中编写代码来执行如下 Linux 命令:

cryptsetup
ln

我想在 sgx 飞地内添加一些加密代码。 如何在 enclave 中进行文件 IO。

是的,但可能涉及大量迁移工作。

不允许在飞地内部执行的代码执行某些指令。最重要的是不允许系统调用指令,这意味着您无法直接使用 OS 的服务。 如果您使用 Intel's SGX SDKcryptsetupln 的代码移动到 enclave 中,程序将以 SIGILL 终止,一旦它请求 OS 类似打开文件的服务(假设它会在这里编译)。

为了使代码与英特尔的 SDK 一起工作,您可以使用 so-called OCALLs 退出 enclave 并在外部请求 OS 服务。

Intel's SGX website 中列出的一些研究工作(GrapheneSCONEHaven)通过通用系统调用转发机制消除了迁移负担。他们捕获 enclave 内部的系统调用,将它们传输到外部并执行它们。

不允许在飞地内运行任何Linux命令。即使我们在 enclave 中实现了我们自己的 cryptsetup,也有一些来自 cryptsetup 源的 OS 调用,因此在这种特殊情况下使用 sgx 是没有用的。

请找到上述问题的完整答案 On intel SGX forum