最近Intel推出的SGX技术对云计算安全保护有重要意义,SGX技术是Intel于2013年在ISCA会议的Workshop HASP中提出的,但只是提出了这一概念和原理,2015年10月第一代支持SGX技术的CPU问世。在这两年间,微软基于SGX模拟器提出了SGX技术两种应用,分别是Haven(USENIX 2014)和VC3(SP 2015)。本次主要学习SGX的原理。
0x01. SGX介绍
Intel SGX是Intel Software Guard Extension的缩写。SGX是Intel指令集架构(ISA)的扩展,主要提供了一些指令用于创建一个可信执行环境(TEE)Enclave。用户态应用程序可以在Enclave中安全执行,而不被恶意的OS、hypervisor(VMM)所攻击。
0x02. SGX原理
SGX的保护是针对应用程序的地址空间的。SGX利用处理器提供的指令,在内存中划分处一部分区域(叫做EPC),并将应用程序地址空间中的Enclave映射到这部分内存区域。这部分内存区域是加密的,通过CPU中的内存控制单元进行加密和地址转化。
SGX内存保护原理:当处理器访问Enclave中数据时,CPU自动切换到一个新的CPU模式,叫做enclave模式。enclave模式会强制对每一个内存访问进行额外的硬件检查。由于数据是放在EPC中,为了防止已知的内存攻击(如,内存嗅探),EPC中的内存内容会被内存加密引擎(MEE)加密的。EPC中的内存内容只有当进入CPU package时,才会解密;返回EPC内存中会被加密。
SGX中的一些术语:
(1). Enclave Page Cache (EPC): 一个保留加密的内存区域。Enclave中的数据代码必需在其中执行。为了在EPC中执行一个二进制程序,SGX指令允许将普通的页复制到EPC页中。
(2). Enclave Page Cahce Map (EPCM):为了对每个EPC页进行访问控制,会在CPU指定的数据结构中维持访问权限和EPC页所属的enclave。
(3). State Save Area (SSA ):当Enclave内部涉及到一个系统调用时,会发生上下文切换,保存Enclave的上下文到EPC中保留区域,这部分区域叫做状态保留区域。