1 背景知识
当程序在enclave里和enclave外切换时,会发生上下文切换、保存CPU状态,参考https://eprint.iacr.org/2016/086.pdf,因此会有一定的开销。enclave内被视为是可信的,enclave外被视为是不可信的。从enclave外调用enclave内的程序为ECALL,从enclave里调用enclave外的程序为OCALL,https://download.01.org/intel-sgx/linux-2.3/docs/Intel_SGX_Developer_Reference_Linux_2.3_Open_Source.pdf,具体如下图所示。
关于Ubuntu18.04下SGX开发环境的搭建,可以参考:Intel SGX开发环境搭建
2 代码编写
以安装时SDK文件夹下Sample Code里Sample Enclave工程代码为模板,进行修改,这里参考了https://blog.csdn.net/cyLee_/article/details/90200470,https://blog.csdn.net/qiu_pengfei/article/details/78803148
2.1 代码结构
App文件夹
Enclave文件夹
其它文件
项目下的.settings是隐藏文件夹,里面的language.settings.xml定义了一些与语言相关的信息。.cproject和.project是隐藏