我们可以在执行Linux命令的sgx enclave中编写代码,如下所示:
cryptsetup
ln
我想在sgx enclave中添加一些加密代码。 如何在飞地内部做文件IO。
答案 0 :(得分:2)
是的,但可能涉及很多迁移工作。
在封顶内执行的代码不允许执行某些指令。最重要的是,不允许使用系统调用指令,这意味着您无法直接使用操作系统的服务。
如果您使用Intel's SGX SDK将cryptsetup
或ln
的代码移入安全区,程序将以SIGILL
终止,并在请求OS服务时立即指示非法指令比如打开一个文件(假设这里会编译)。
要使代码与英特尔的SDK兼容,您可以使用所谓的OCALLs退出安全区并在外部请求操作系统服务。
Intel's SGX website上列出的一些研究工作(Graphene
,SCONE
,Haven
)通过通用系统调用转发机制消除了迁移负担。它们捕获飞地内部的系统调用,将它们传输到外部并执行它们。
答案 1 :(得分:0)
不允许在安全区内运行任何Linux命令。即使我们在安全区内部实现了自己的cryptsetup,但仍有一些来自cryptsetup源的操作系统调用,因此在这种特殊情况下使用sgx是没有用的。
请找到上述问题的完整答案 On intel SGX forum