SGX是Intel实现的可信执行环境,主要面向服务器和桌面端,提供了内存加密(Memory Encryption)、访问控制(Access Control)、远程认证(Remote Attestation)、本地密封(Sealing)等功能。
0x00 Overview
关于应用程序代码与可信执行环境的基本关系:
- 每个application分为两部分:安全(可信)部分和不安全(不可信)的部分
- application启动后,会在受保护的可信内存中加载一块飞地(enclave)
- application通过把机密数据、代码放到enclave里来保证安全性
- enclave为application提供调用接口,当application调用enclave内的函数时,其内部的任何内存仅enclave自身可见
- enclave内存即使ring 0的攻击者也看不到,因为是CPU层面的保护。实际上在SGX的安全模型里OS、BIOS等等都可以被认为是不可信的
关于可信执行环境与用户进程的关系:
- application 本身包括了自身的代码、数据和enclave
- enclave里面也有其自身的代码、数据
- SGX保证enclave里面的代码和数据的integrity和confidentiality
- enclave的entry points在编译期就确定了
- enclave可以访问它所在的application里的内存,但是反过来不行
- 支持多线程