转载自【http://www.hackdig.com/05/hack-22223.htm】
SGX是Intel开发的新的处理器技术,可以在计算平台上提供一个可信的空间,保障用户关键代码和数据的机密性和完整性,从SGX提出后,其吸引了一批系统和网络安全的研究者,NCCGroup的博客对SGX方面的资料进行了一个初步的总结,对研究者学习SGX技术具有很好的引导作用。这里主要根据该博文对SGX进行简单的整理。
目前并没有基于SGX的产品出现,不过学术界已经给出了一些应用来说明SGX的强大,相信工业界也正在开发对应的产品。SGX能将安全应用依赖的可信计算基TCB减小到仅包含CPU和安全应用本身,将不可信的复杂OS和虚拟机监控器VMM排除在安全边界之外。
什么是SGX?
SGX全称Intel Software Guard Extensions,顾名思义,其是对因特尔体系(IA)的一个扩展,用于增强软件的安全性。这种方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave,也就是说,一旦软件和数据位于enclave中,即便操作系统或者和VMM(Hypervisor)也无法影响enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身。SGX创建的enclave也可以理解为一个可信执行环境TEE(Trusted Execution Environment)。不过其与ARM TrustZone(TZ)还是有一点小区别的,TZ中通过CPU划分为两个隔离环境(安全世界和正常世界),两者之间通过SMC指令通信;而SGX中一个CPU可以运行多个安全enclaves,并发执行亦可。当然,在TZ的安全世界内部实现多个相互隔离的安全服务亦可达到同样的效果。
相关文献资料
---Intel发布了三个博客给出了SGX的设计目标(总共8个设计目标),作为理解SGX的背景材料比较重要:
(1)Intel? SGX for Dummies (Intel? SGX Design Objectives) : September 2013, Matthew Hoekstra
(2)Intel? SGX for Dummies – Part 2 : June 2014, Matthew Hoekstra
(3)Intel? SGX for Dummies – Part 3 : September 2014, Matthew Hoekstra
---SGX本身的运行机制可以通过如下资料了解(前三篇是Intel在2013的HASP workshop上一连出三篇介绍SGX的文章):
(4)Innovative Instructions and Software Model for Isolated Execution: June 2013, Frank McKeen, Ilya Alexandrovich, Alex Berenzon, Carlos Rozas, Hisham Shafi, Vedvyas Shanbhogue and Uday Savagaonkar, Intel Corporation
(5)Using Innovative Instructions to Create Trustworthy Software Solutions
(6)Innovative Technology for CPU Based Attestation and Sealing
(7)Intel? Software Guard Extensions(Intel? SGX) Instructions and Programming Model: June 2013, Frank McKeen, Ilya Alexandrovich, Alex Berenzon, Carlos Rozas, Vedvyas Shanbhogue and Uday Savagaonkar, Intel Corporation
(8)Intel? Software Guard Extensions(Intel? SGX): November 2013, Carlos Rozas, Intel Labs (given at CMU)
(9)Intel? Software Guard Extensions Programming Reference Rev 2 (#329298-002): October 2014
---德国Technische Universit?t Darmstadt (CASED)的教授Ahmad-Reza Sadeghi作了一个关于嵌入式系统安全的讲座,其中对Intel SGX这块也有一个报告,总结的很不错,如下:
(10)Trusted Execution Environments Intel SGX
---了解SGX的基本运行方式和原理后,用户最关心的就是SGX能有什么实际应用了,大家都知道PC时代是“WinTel”时代,也就是微软和因特尔密不可分的关系,最先实用SGX的就是微软了,值得关注的是微软的VC3和Haven,文章分布参考如下链接:
(11)VC3: Trustworthy Data Analytics in the Cloud,October 2014
(12)Shielding applications from an untrusted cloud with Haven ,OSDI 2014
---作为安全方向的新技术,由于还没有实用的系统和产品,分析其安全性就是比较重要的一步,下面资料是关于SGX技术的一些安全分析:
(13)Intel Software Guard Extensions (SGX) Is Mighty Interesting: July 2013, Rich Mogull - Discusses the positive applications against malware, hypervisors and potential to replace HSMs.
(14)Thoughts on Intel's upcoming Software Guard Extensions (Part 1): August 2013, Joanna Rutkowska – Initial high-level thoughts on the functionality provided and how it compliments existing Intel technologies.
(15)Thoughts on Intel's upcoming Software Guard Extensions (Part 2): September 2013, Joanna Rutkowska – Lower-level thoughts on good and bad applications for SGX.
(16)SGX: the good, the bad and the downright ugly: January 2014, Shaun Davenport & Richard Ford -
SGX的模拟器与CPU支持
对SGX技术有一定理解后,会忍不住想要亲自试试该技术,不过目前好像还没有支持SGX的CPU出现,而且模拟器也很难找到。不过,模拟器是肯定存在的,不然微软也无法评估VC3和Haven的原型实现了。从Intel发布的文献以及VC3和Haven的论文中,可以发现,Intel有一套SGX模拟器,并提供给了微软,而微软嫌性能不够,自己也开发了一套软件SGX模拟器(不过提供的安全保障不强)。因此,想要尝试SGX的模拟器,与Intel和微软联系,要到模拟器是不错的选择。
另外,Georgia Institute of Technology也有一个项目,是用QEMU来模拟SGX,可以参考Intel SGX Emulation using QEMU文献。
至于目前市场上是否存在支持SGX或者SGX2指令集的CPU,答案也比较明显,暂时没有。
参考:
[1] Intel? Software Guard Extensions (SGX): A Researcher’s Primer. https://www.nccgroup.trust/en/blog/2015/01/intel-software-guard-extensions-sgx-a-researchers-primer/