欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

SGX软件栈(一)——硬件、驱动、可信运行时、不可信运行时、应用程序、Enclave程序

程序员文章站 2022-03-11 20:37:11
SGX软件栈如图所示。下面将先对硬件、驱动、Platform Software提供的不可信运行时、SDK提供的可信运行时、开发者的应用程序、开发者的Enclave程序这六个模块进行介绍,之后将对硬件指令、驱动接口、API接口、桥函数这四个接口进行介绍。硬件最下层是SGX硬件,主要指支持SGX特性的CPU(需要Intel 6代CPU及以上),此外还包括PRM、EPCM、PMH等(具体见上文“SGX硬件原理”章节)。CPU向上提供硬件指令ENCLS(内核权限级Enclave硬件指令)及ENCL....

SGX软件栈如图所示。下面将先对硬件、驱动、Platform Software提供的不可信运行时、SDK提供的可信运行时、开发者的应用程序、开发者的Enclave程序这六个模块进行介绍,之后将对硬件指令、驱动接口、API接口、桥函数这四个接口进行介绍。

 

SGX软件栈(一)——硬件、驱动、可信运行时、不可信运行时、应用程序、Enclave程序

硬件

最下层是SGX硬件,主要指支持SGX特性的CPU(需要Intel 6代CPU及以上),此外还包括PRM、EPCM、PMH等(具体见上文“SGX硬件原理”章节)。CPU向上提供硬件指令ENCLS(内核权限级Enclave硬件指令)及ENCLU(用户权限级Enclave硬件指令),其中内核权限指令提供对Enclave的生命周期管理等功能,用户权限指令提供环境切换等功能。

驱动

驱动处于内核权限,向上会接收不可信运行时要求调用ENCLS的命令,然后向下调用ENCLS硬件指令,并将结果反馈给不可信运行时。因此驱动一种功能是不可信运行时想要调用ENLCS指令的代理(主要是Enclave生命周期管理以及EP的部分管理),并完成与该指令相关工作,其中一个非常重要的工作就是sgx_encl结构体的管理(其中包括保管每个Enclave所被分配到的EP集合)。另一方面,由于SGX不信任驱动,要求驱动通过调用内核权限指令完成如TLB刷新、EP页交换等安全性和高效性的保障,只有如此,程序才能继续正常运行。

不可信运行

不可信运行时处于用户态权限。一方面,不可信运行时向下调用驱动接口来管理Enclave生命周期,向上将该功能以API形式提供给开发者。另一方面,还能调用用于进入Enclave的用户态权限硬件指令,提供不可信环境下SGX设备能力查询、不可信密钥交换API等功能(见下文“SGX API”章节)。

可信运行时

可信运行时同样处于用户态权限。可信运行时向下能够调用用户态权限硬件指令用于离开可信世界、创建加密报告等。可信运行时向上能够给开发者提供Enclave开发的API。由于安全原因以及环境隔离,Enclave代码不能调用外部任何库,只能静态链接安全库,同时SGX设计者希望能够让Enclave代码开发能够满足常规的开发需求,提供良好的开发环境,因此可信运行时包含了很多经过安全审计的标准库和开发库,比如C\C++标准库、加密库等(具体见下文“SGX API”章节)。

应用程序

应用程序处于用户态权限,并属于不可信世界,能够利用不可信运行时API完成Enclave生命周期管理,还能调用普通世界的任意库函数,也就是说应用程序开发与传统的程序开发没有区别。

Enclave程序

需要执行的敏感程序,利用可信运行时提供的API来完成开发,同时由于EPC大小有限,开发者应该保证Enclave程序规模不能太大。

本文地址:https://blog.csdn.net/clh14281055/article/details/107631241

相关标签: Intel SGX sgx