我们可以在 sgx-enclave 中 运行 Linux 命令吗?
can we run Linux commands inside sgx-enclave?
我们能否在 sgx enclave 中编写代码来执行如下 Linux 命令:
cryptsetup
ln
我想在 sgx 飞地内添加一些加密代码。
如何在 enclave 中进行文件 IO。
是的,但可能涉及大量迁移工作。
不允许在飞地内部执行的代码执行某些指令。最重要的是不允许系统调用指令,这意味着您无法直接使用 OS 的服务。
如果您使用 Intel's SGX SDK 将 cryptsetup
或 ln
的代码移动到 enclave 中,程序将以 SIGILL
终止,一旦它请求 OS 类似打开文件的服务(假设它会在这里编译)。
为了使代码与英特尔的 SDK 一起工作,您可以使用 so-called OCALLs 退出 enclave 并在外部请求 OS 服务。
Intel's SGX website 中列出的一些研究工作(Graphene
、SCONE
、Haven
)通过通用系统调用转发机制消除了迁移负担。他们捕获 enclave 内部的系统调用,将它们传输到外部并执行它们。
不允许在飞地内运行任何Linux命令。即使我们在 enclave 中实现了我们自己的 cryptsetup,也有一些来自 cryptsetup 源的 OS 调用,因此在这种特殊情况下使用 sgx 是没有用的。
请找到上述问题的完整答案
On intel SGX forum
我们能否在 sgx enclave 中编写代码来执行如下 Linux 命令:
cryptsetup
ln
我想在 sgx 飞地内添加一些加密代码。 如何在 enclave 中进行文件 IO。
是的,但可能涉及大量迁移工作。
不允许在飞地内部执行的代码执行某些指令。最重要的是不允许系统调用指令,这意味着您无法直接使用 OS 的服务。
如果您使用 Intel's SGX SDK 将 cryptsetup
或 ln
的代码移动到 enclave 中,程序将以 SIGILL
终止,一旦它请求 OS 类似打开文件的服务(假设它会在这里编译)。
为了使代码与英特尔的 SDK 一起工作,您可以使用 so-called OCALLs 退出 enclave 并在外部请求 OS 服务。
Intel's SGX website 中列出的一些研究工作(Graphene
、SCONE
、Haven
)通过通用系统调用转发机制消除了迁移负担。他们捕获 enclave 内部的系统调用,将它们传输到外部并执行它们。
不允许在飞地内运行任何Linux命令。即使我们在 enclave 中实现了我们自己的 cryptsetup,也有一些来自 cryptsetup 源的 OS 调用,因此在这种特殊情况下使用 sgx 是没有用的。
请找到上述问题的完整答案 On intel SGX forum