英特尔软件防护扩展(Intel SGX)技术解析
1. 软件架构
英特尔软件防护扩展(Intel SGX)的架构围绕硬件层面受保护的私有内存区域(飞地,enclaves)构建,这些区域与系统上运行的其他软件相隔离。SGX 为应用程序提供了一组指令,用于创建、管理和销毁飞地。
开发支持 SGX 的应用程序时,开发者将所需功能实现在程序的飞地部分,该部分会被编译成一个独立的共享库。在 Linux 平台上,飞地部分被编译成共享对象(.so);在 Windows 平台上,则编译成动态链接库(.dll)。应用程序的其余部分可以用任何能调用飞地共享库所暴露函数的语言编写。
飞地能够执行普通应用程序能完成的大部分操作,如算术运算、动态内存分配与释放,还能定义和使用数据结构,调用传统 C/C++ 标准库中的许多函数。但飞地也存在一些操作限制,例如不能直接进行系统调用,不能与外部设备直接进行 I/O 操作,这有助于保持飞地与系统其他部分的隔离。
在支持 SGX 的应用程序中,不可信组件与飞地组件之间通过调用门进行通信。调用门包含了暴露给飞地和不可信应用程序的一组授权函数,这些函数在飞地定义语言(EDL)中进行定义。EDL 文件包含飞地接口的定义,明确了不可信应用程序可以在飞地内访问的操作,以及飞地可以在不可信部分调用的函数。EDL 文件由以下类型的函数定义组成:
- Enclave calls(ECALLs) :应用程序的不可信部分可以在飞地内调用的函数。当进行 ECALL 调用时,控制权从不可信应用程序转移到飞地,飞地执行请求的操作后,再将控制权返回给不可信应用程序。
- Out calls(OCAL


超级会员免费看
订阅专栏 解锁全文
784

被折叠的 条评论
为什么被折叠?



