基本原理
SGX应用由两部分组成:
- untrusted 不可信区
代码和数据运行在普通非加密内存区域,程序main入口必须在非可信区,上图的main()和bar()在非可信区。 - trusted 可信区
代码和数据运行在硬件加密内存区域,此区域由CPU创建的且只有CPU有权限访问,上图的helloworld()和foo()运行在可信区。
非可信区只能通过ECALL
函数调用可信区内的函数,可信区只能通过OCALL
函数调用非可信区的函数。ECALL
函数和OCALL
函数通过EDL
文件声明。