这篇文章为读者提供了英特尔SGX技术的概述。在第一部分中,我将探讨为支持SGX而在英特尔平台上增加的功能,重点是处理器和内存;然后,我解释Enclave的管理和生命周期;最后,我详细介绍了Enclave的两个特征:秘密和证书。
介绍
英特尔SGX是一项旨在满足可信计算需求的技术,其开发方式类似于ARM TrustZone,但这个是针对台式机和服务器平台。它允许用户域代码创建安全区的私有内存区域,这些区域与以相同或更高特权级别运行的其他进程隔离。Enclave中运行的代码与其他应用程序,操作系统,系统管理程序等有效隔离。
它于2015年与第六代Intel Core处理器一起推出,该处理器基于Skylake微体系结构。可以通过在设置了“ 结构化扩展功能叶”标志的情况下执行CPUID指令,并检查EBX寄存器的第二位是否已设置,来检查SGX支持。为了能够使用SGX,必须通过BIOS启用了SGX,并且实际上只有少数BIOS支持此技术,这是它没有被广泛使用的原因之一。
总览
英特尔SGX可以总结为以下几点:
·应用程序分为两部分:安全部分和非安全部分;
·应用程序启动安全区,该安全区放置在受保护的内存中;
·当一个安全区域函数被调用时,只有安全区域内的代码才能看到其数据,外部访问总是被拒绝;返回时,安全区数据将保留在受保护的内存中。
安全执行环境是宿主进程的一部分:
·该应用程序包含其自己的代码,数据和安全区域;
·Enclave也包含自己的代码和数据。
·SGX保护安全区代码和数据的机密性和完整性;
·Enclave进入点是在编译时预定义的;
·支持多线程(但实现起来并不容易);
·一个安全区可以访问其应用程序的内存,但不能反过来。
使用说明
英特尔SGX定义了18条新指令:13条由supervisor使用,5条由用户使用。所有这些指令均以微代码实现(以便可以修改其行为)。
请参阅下面的完整说明列表:
结构体
英特尔SGX还定义了13种新的数据结构:8种用于安全区管理,3种用于内存页管理,2种用于资源管理。请参阅下面的完整结构列表。
在以下各节中,我将详细介绍相关的指令和结构,然后对它们如何用于实现某些功能的高级