我们可以在sgx enclave内编写执行Linux命令的代码,如下所示:

cryptsetup
ln

我想在sgx飞地内添加一些加密代码。
如何在安全区内执行文件IO。

最佳答案

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

在安全区域内部执行的代码不允许执行某些指令。最重要的是,不允许使用syscall指令,这意味着您无法直接使用OS的服务。
如果您使用Intel's SGX SDKcryptsetupln的代码移入某个区域,则该程序将以SIGILL终止,表示一条非法指令,一旦它请求打开文件之类的OS服务(假设此处将编译)。

为了使代码与Intel的SDK一起使用,您可以使用所谓的OCALLs退出安全区域并向外部请求OS服务。

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

08-28 10:42