英特尔 SGX 可信计算的性能原理
1. 同步与异步飞地退出
在 SGX 中,存在同步和异步飞地退出两种情况。同步退出会使线程离开飞地模式,并将执行上下文恢复到进入飞地之前的状态。而异步飞地退出(AEX)则是由硬件中断(如页面错误事件)引起的。当发生这种情况时,受中断影响的逻辑核心上所有正在执行的线程都必须退出飞地,并陷入内核来处理错误。在退出之前,会保存飞地内所有逻辑核心的执行上下文,随后清除这些上下文,以避免向不可信的操作系统泄露信息。当页面错误处理完成后,ERESUME 指令会恢复上下文,飞地继续执行。
2. 飞地内存
- 内存区域划分 :在 CPU 启动时,会从常规 DRAM 中划出一块连续的内存区域,称为处理器保留内存(PRM)。这块内存被划分为 4 kB 的页面,只能在飞地内部或通过 SGX 指令直接访问,统称为 EPC(Enclave Page Cache)。无论是特权级系统软件还是常规用户级应用程序,对 EPC 内存的读写尝试都会被忽略,并且明确禁止对该区域的直接内存访问(DMA)请求,这可以防止潜在恶意外围设备对系统总线进行物理攻击。
- 内存加密与管理 :通过英特尔的内存加密引擎(MEE)实现数据保密性,在 L3 缓存之后,飞地数据在系统总线上的 CPU 封装边界处进行加密,进一步防止物理内存检查攻击。与常规虚拟内存类似,EPC 页面也由操作系统管理,但由于 EPC 内存不能直接访问,所以通过 SGX 指令间接处理。操作系统负责为飞地分配页面,并将未使用的页面交换到常规 DRAM 中。通过这种内存管理方式,可通过交换 EPC 页面避开 128 MB 的
超级会员免费看
订阅专栏 解锁全文
43

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



