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
随机推荐
- python_29_三级菜单
menu={ '北京':{ '海淀':{ '五道口':{ '搜狐':{}, '网易':{}, 'Google':{}, }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, '优酷':{}, ...
- python基础一 day17 初识递归
#递归函数 # 了解什么是递归 : 在函数中调用自身函数 # 最大递归深度默认是997/998 —— 是python从内存角度出发做得限制 # 能看懂递归 # 能知道递归的应用场景 # 初识递归 —— ...
- 纯js实现淘宝商城轮播图
需求: 循环无缝自动轮播3张图片,点击左右箭头可以手动切换图片,鼠标点击轮播图下面的小圆点会跳转到对应的第几张图片.鼠标放到轮播图的图片上时不再自动轮播,鼠标移开之后又继续轮播.效果图: 下面是htm ...
- Drupal忘记管理员密码
第一步:登陆录到phpmyadmin(通用的mysql数据库管理工具),进入phpmyadmin后,找到与drupal7相关联数据库并在数据库中找到一张名为“users”的表,然后选择浏览. 第二步: ...
- Jquery LigerUI
http://www.ligerui.com/index.aspx http://api.ligerui.com/ 分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下 ...
- Servlet 的生命周期 及 注意事项 总结
Servlet的生命周期 图解Servlet的生命周期 生命周期的各个阶段 实例化 :Servlet 容器创建 Servlet 的实例 初始化 :该容器调用init() 方法 请求处理 :如果请求Se ...
- SQL SERVER 2012数据库自动备份的方法
SQL SERVER 2012数据库自动备份的方法 为了防止数据丢失,这里给大家介绍SQL SERVER2012数据自动备份的方法: 一.打开SQL SERVER 2012,如图所示: 服务器类型:数 ...
- iOS启动原理及应用生命周期
ios程序启动原理及生命周期图: ios应用程序的入口是main.m 1 #import <UIKit/UIKit.h> 2 3 #import "WYSAppDelegate. ...
- Linux企业生产环境用户权限集中管理项目方案案例
企业生产环境用户权限集中管理项目方案案例: 1 问题现状 当前我们公司里服务器上百台,各个服务器上的管理人员很多(开发+运维+架构+DBA+产品+市场),在大家登录使用Linux服务器时,不同职能的员 ...
- 5.Cisco Packet Tracer里关于交换机或路由器配置文件和系统映像备份与恢复
我们会将交换机或路由器的配置文件和系统镜像直接备份到tftp服务器上,所以我们需要准备一台tftp的服务器 1我们需要给服务器配一个ip地址,给路由器的f0/1端口配置一个ip地址,路由器与服务器能相 ...