SGX技术初探
一、SGX技术背景
1.1 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的安全世界内部实现多个相互隔离的安全服务亦可达到同样的效果。
1.2 技术目标
相关文献资料
---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 -
(1)允许应用开发者保护敏感信息不被运行在更高特权等级下的欺诈软件非法访问和修改。
(2)能够使应用可以保护敏感代码和数据的机密性和完整性并不会被正常的系统软件对平台资源进行管理和控制的功能所扰乱。
(3)使消费者的计算设备保持对其平台的控制并自由选择下载或不下载他们选择的应用程序和服务。
(4)使平台能够验证一个应用程序的可信代码并且提供一个源自处理器内的包含此验证方式和其他证明代码已经正确的在可信环境下得到初始化的凭证的符号化凭证。
(5)能够使用成熟的工具和处理器开发可信的应用软件.
(6)Allow the performance of trusted applications to scale with the capabilities of the underlying application processor.
(7)使软件开发商通过他们选择的分销渠道可以自行决定可信软件的发布和更新的频率。
(8)能够使应用程序定义代码和数据安全区即使在攻击者已经获得平台的实际控制并直接攻击内存的境况下也能保证安全和隐秘。
二、SGX技术硬件实现结构
三、SGX数据类型和指令
四、SGX Enclave的创建
借助Intel处理器的SGX技术,通过CPU的硬件模式切换,系统进入可信模式执行,只使用必需的硬件构成一个完全隔离的特权模式,加载一个极小的微内核操作系统支持任务调度,完成身份认证,并根据认证后的用户身份.
通过使用Intel SGX技术,构建Enclave作为完全隔离的特权模式的具体实现方案如下:
(1)将需要运行的虚拟机镜像加载到磁盘中。
(2)生成加密应用程序代码和数据的秘钥凭证,SGX技术提供了一种较为先进的秘钥加密方法,其秘钥由SGX版本秘钥、CPU机器秘钥和Intel官方分配给用户的秘钥在秘钥生成算法下生成的全新秘钥,使用此秘钥对需要加载的应用程序的代码和数据进行加密。
(3)将需要加载的应用程序或镜像的代码和数据首先加载到SGX Loader加载器中,为将其加载至Enclave做准备。
(4)在Intel SGX 可信模式下动态申请构建一个Enclave。
(5)将需要加载的程序和数据以EPC(Enclave Page Cache)的形式首先通过秘钥凭证解密。
(6)通过SGX指令证明解密后的程序和数据可信,并将其加载进Enclave中,然后对加载进Enclave中的每个EPC内容进行复制。
(7)由于使用了硬件隔离,进一步保障Enclave的机密性和完整性,保障了不同的Enclave之间不会发生冲突更不会允许其互相访问。
(8)启动Enclave初始化程序,禁止继续加载和验证EPC,生成Enclave身份凭证,并对此凭证进行加密,并作为Enclave标示存入Enclave的TCS(Thread Control Structure)中,用以恢复和验证其身份。
(9)SGX的隔离完成,通过硬件隔离的Enclave中的镜像程序开始执行,构建基于SGX技术的硬件隔离完成。
五、SGX Enclave的启动和销毁
在完成构建Enclave后,为保护Enclave在运行结束或挂起后,Enclave中的信息不被泄露,而Enclave中的应用程序可能会因为系统出现中断、异常等出现非正常情况下的退出,为解决此类问题使用SGX技术对可能出现的同步退出和异步退出设置不同的处理方式,在同步退出时,Enclave中运行的数据和代码将会根据自定义的EEE(Enclave
Exiting Events)
设置的处理方式进行处理。而如果时异步退出的情况下,Enclave中的数据和运行状态等信息将会秘钥凭证进行加密,并存储到Enclave之外,在下一次启动系统时有选择的恢复中断的Enclave。
六、SGX 创建Enclave可信通信通道
对于SGX
Enclave的访问请求,构建检测机制进行限制,首先判断是否启动了Enclave模式,然后判断访问请求是否来源于Enclave内部,如果是则继续判断,如果不是则返回访问失败,然后根据给予生成Enclave前的身份凭证用于检验此访问请求是否来源于同一个Enclave,如果是则通过访问检测,若不是则根据Enclave的身份凭证记录表,更换下一个Enclave身份凭证进行匹配,知道所有的正在运行的Enclave全部匹配完成,若还无法匹配成功,返回访问失败。
七、SGX的远程证明
SGX技术初探的更多相关文章
- VB 共享软件防破解设计技术初探(三)
×××××××××××××××××××××××××××××××××××××××××××××× 其他文章快速链接: VB 共享软件防破解设计技术初探(一)http://bbs.pediy.com/sho ...
- VB 共享软件防破解设计技术初探(二)
VB 共享软件防破解设计技术初探(二) ×××××××××××××××××××××××××××××××××××××××××××××× 其他文章快速链接: VB 共享软件防破解设计技术初探(一)http ...
- VB 共享软件防破解设计技术初探(一)
VB 共享软件防破解设计技术初探(一) ×××××××××××××××××××××××××××××××××××××××××××××× 其他文章快速链接: VB 共享软件防破解设计技术初探(二)http ...
- Android 插件技术:动态加载dex技术初探
1.Android动态加载dex技术初探 http://blog.csdn.net/u013478336/article/details/50734108 Android使用Dalvik虚拟机加载可执 ...
- afl-fuzz技术初探
afl-fuzz技术初探 转载请注明出处:http://www.cnblogs.com/WangAoBo/p/8280352.html 参考了: http://pwn4.fun/2017/09/21/ ...
- Android动态加载技术初探
一.前言: 现在,已经有实力强大的公司用这个技术开发应用了,比如淘宝,大众点评,百度地图等,之所以采用这个技术,实际上,就是方便更新功能,当然,前提是新旧功能的接口一致,不然会报Not Found等错 ...
- BLCR技术初探
BLCR技术到底是什么技术?我没空和你乱扯,自己去看该官方网站的介绍:http://crd.lbl.gov/groups-depts/ftg/projects/current-projects/BLC ...
- U+V2深度隐藏PE制作技术初探
所谓U+,习惯上是指用UltraISO软件把ISO文件写入U盘来制作启动盘的一种技术.第一代U+兼容性不太好,不推荐使用.目前,兼容性比较好的是第二代U+启动技术(USB-HDD+ V2/USB-ZI ...
- ssi技术初探
http://blog.sina.com.cn/s/blog_765941620100wiir.html
随机推荐
- RobotFramework:钉钉扫码登录UI自动化
背景: 遇到一个项目,使用的是钉钉扫码登录,一时间不知道该怎么下手了,还是先F12抓包看下都有什么数据传输吧. 分析: 先熟悉下钉钉扫码登录的逻辑,参考官文:https://open-doc.ding ...
- 设置RichTextBox控件的文本的对齐方式
实现效果: 知识运用: RichTextBox控件的SelectionAlignment属性 //获取或设置在当前选择或插入点的对齐方式 public HorizontalAlignment Sele ...
- codeforces 1114C
题目连接 : https://codeforces.com/contest/1114/problem/C 题目大意:给一个整数n(1e18>=n>=0),和一个整数k(1e12>=k ...
- 2.安装VS Code
1 打开网站 https://www.visualstudio.com/zh-hans/ 2. 安装 3.可以在程序目录命令行下 code . 用vscode 打开程序 4.下载插件 复制 ex ...
- 在Drupal7中创建web接口
Services 模块允许您从一个主要模块后端配置和管理区域启用您 Drupal 站点上自定义构建的内容服务器和服务.该模块中包含的服务允许您调用内容,从 Drupal 的默认和分配的 File.Co ...
- sass安装更新及卸载方法
在 Windows 平台下安装 Ruby 需要先有 Ruby 安装包,大家可以到 Ruby 的官网(http://rubyinstaller.org/downloads)下载对应需要的 Ruby 版本 ...
- 流行JAVA开发工具
流行JAVA开发工具 正所谓工欲善其事必先利其器,我们在开发java语言过程中同样需要依款不错的开发工具,目前市场上的IDE很多,本文为大家推荐以下下几款java开发工具: Eclipse(推荐):另 ...
- JavaScript获取时间戳与时间戳转化
第一种方法(精确到秒): var timestamp1 = Date.parse( new Date()); 第二种方法(精确到毫秒): var timestamp2 = ( new Date()). ...
- 32-1题:不分行从上到下打印二叉树/BFS/deque/queue
题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 考点 1.广度优先遍历 2.binary tree 3.queue 4.deque 思路 按层打印:8.6.10.5.7.9.11 用ST ...
- STL之deque用法
deque:双端队列 底层是一个双向链表. 常用的有队列的尾部入队.首部出队. 普通队列:queuequeue 模板类的定义在<queue>头文件中.与stack 模板类很相似,queue ...