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

我们可以在sgx enclave里面编写执行如下命令的Linux命令的代码:

cryptsetup ln 

我想在sgx飞地内添加一些encryption代码。 如何在飞地内做文件IO。

是的,但是可能会涉及很多迁移工作。

在飞地内执行的代码不允许执行某些指令。 最重要的是系统调用指令是不允许的,这意味着你不能直接使用操作系统的服务。 如果您使用英特尔的SGX SDK将cryptsetupln的代码移入一个飞地,那么只要程序要求像打开一个文件这样的操作系统服务(假设这里将会编译),那么程序将以SIGILL指示非法指令终止。

要使代码与英特尔SDK一起工作,您可以使用所谓的OCALL退出飞地并向外请求操作系统服务。

英特尔SGX网站上列出的一些研究工作( GrapheneSCONEHaven )通过一个通用的系统呼叫转移机制来消除迁移负担。 他们捕捉飞地内的系统调用,将它们传送到外部并执行它们。

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

请在上面的问题找到完整的答案在Intel SGX论坛上