安全性是云计算中一项极为重要的需求,然而如何保护云计算中关键应用程序和数据的安全、防止云平台管理员泄露用户隐私,仍然是目前没有解决的难题.2013年,Intel公司提出了新的处理器安全技术SGX,能够在计算平台上提供一个可信的隔离空间,保障用户关键代码和数据的机密性和完整性.作为系统安全领域的重大研究进展,SGX对系统安全,尤其是云计算安全保护方面具有非常重要的意义.该文介绍了SGX的原理和特性,分析了SGX的关键技术以及针对SGX的侧信道攻击及防御方法.同时,总结和归纳了该技术的研究成果,分析了SGX技术与其他可信计算技术的异同,并指出了SGX技术的未来研究挑战和应用需求.
Security is an essential requirement for cloud computing. However, how to protect critical applications and data in cloud computing and prevent platform administrators from violating user privacy is still an unsolved problem. In 2013, Intel proposed SGX, a new processor security technology which can provide trust zones on a computing platform to ensure the confidentiality and integrity of key user code and data. As a major research progress in the field of system security, SGX has a very important significance for system security, especially the security protection of cloud computing. In this paper, the mechanisms and properties of SGX are introduced, the key principle and technology are analyzed, and the side-channel attack and defense against the SGX technology are presented. Meanwhile, the paper surveys the state of the art of SGX and compares it with other trusted computing technologies. Finally, the research challenges and the future application requirements of SGX are suggested.
随着信息技术的迅速发展与广泛应用, 人类社会已经进入了一个崭新的互联网时代.一方面, 人们享受着互联网科技带来的便利; 另一方面, 由网络和信息系统构成的网络空间也面临着日益严峻的安全问题.信任是网络空间中安全交互的基础, 但随着软件复杂度和攻击水平的提高, 移动环境和云平台的安全对硬件和平台安全机制的需要更加迫切, 基于硬件的可信执行环境必不可少.以处理器安全为核心的硬件安全技术竞相发展, 应用广泛的主流技术包括虚拟化技术如Intel VT(Intel virtualization technology)与AMD SVM(AMD secure virtual machine)技术、基于可信平台模块(trusted platform module, 简称TPM)的可信计算技术如Intel TXT(Intel trusted execution technology)、嵌入式平台ARM TrustZone安全扩展等.其中:虚拟化技术基于特权软件hypervisor对系统资源进行分配与监控, 极大提升了资源利用率, 但hypervisor潜在的软件漏洞可能威胁到整个系统; 基于TPM的可信架构在程序加载时进行完整性度量, 却难以保障程序运行时的可信执行; TrustZone为程序提供了两种隔离的执行环境, 但需要硬件厂商的签名验证才能运行在安全执行环境, 这一特性使得多数软件开发者望而却步.
2013年, Intel推出SGX(software guard extensions)指令集扩展, 旨在以硬件安全为强制性保障, 不依赖于固件和软件的安全状态, 提供用户空间的可信执行环境, 通过一组新的指令集扩展与访问控制机制, 实现不同程序间的隔离运行, 保障用户关键代码和数据的机密性与完整性不受恶意软件的破坏.不同于其他安全技术, SGX的可信计算基(trusted computing base, 简称TCB)仅包括硬件, 避免了基于软件的TCB自身存在软件安全漏洞与威胁的缺陷, 极大地提升了系统安全保障; 此外, SGX可保障运行时的可信执行环境, 恶意代码无法访问与篡改其他程序运行时的保护内容, 进一步增强了系统的安全性; 基于指令集的扩展与独立的认证方式, 使得应用程序可以灵活调用这一安全功能并进行验证.作为系统安全领域的重大研究进展, Intel SGX是基于CPU的新一代硬件安全机制, 其健壮、可信、灵活的安全功能与硬件扩展的性能保证, 使得这项技术具有广阔的应用空间与发展前景.目前, 学术界和工业界已经对SGX技术展开了广泛的研究, Intel也在其最新的第六代CPU中加入了对SGX的支持.
本文重点分析了Intel SGX技术的基本原理及关键技术, 并深入讨论了针对SGX的侧信道攻击和防御; 同时, 将该技术与其他可信计算技术进行了对比分析, 也着重分析了其优势和不足, 并进一步讨论了该技术的相关学术研究工作和商业应用模型; 最后, 结合当前可信计算领域存在的安全问题和该技术在安全方面的优势, 展望了该技术的未来发展方向和应用需求.
Intel SGX[
SGX整体架构
Architecture description of SGX
SGX的实现需要处理器、内存管理部件、BIOS、驱动程序、运行时环境等软硬件协同完成.除了提供内存隔离与保护安全属性, SGX架构还支持远程认证和密封的功能, 可用于安全软件应用和交互协议的设计.
(1) 允许应用程序开发者保护敏感数据不被未授权访问或者更高特权级别软件的修改[
(2) 使得应用程序能够拥有保护敏感代码和数据的机密性与完整性的能力, 而不会中断这些资源被合法程序和系统调度、使用和管理的能力;
(3) 使得计算设备的消费者能够控制自己平台, 并且具有自由安装和卸载应用与服务的能力;
(4) 使得平台能够度量应用程序的可信代码, 生成签名验证, 并且度量和认证过程的代码都能够在可信赖的环境中正确的初始化;
(5) 使得可信应用程序的开发过程中能够使用原来的工具和流程;
(6) 允许可信应用程序的性能能够随着处理器的能力增强而得到扩展;
(7) 使得软件代理商能够使用它们选择的分发通道来分发、更新可信应用程序;
(8) 使得应用程序可以定义一个安全代码和数据区域, 这一区域可以维护其机密性, 即使攻击者能够物理上控制这个平台以及产生对内存的直接攻击, 也能够有效加以抵御.
Enclave是一个被保护的内容容器, 用于存放应用程序敏感数据和代码[
所有的enclave都驻留在EPC(enclave page cache)中, 这是系统内一块被保护的物理内存区域, 用来存放enclave和SGX数据结构[
PRM布局示例
Sample layout of PRM
Enclave具有如下特征.
(1) 具有自己的代码和数据;
(2) 提供机密性保护;
(3) 提供完整性保护;
(4) 具有可控的入口点;
(5) 支持多线程;
(6) 对应用程序内存具有最高访问权限.
Enclave的结构如
Enclave示意图
Schematic diagram of enclave
针对enclave的保护机制主要包括两个部分:一是enclave内存访问语义的变化, 二是应用程序地址映射关系的保护, 这两项功能共同完成对enclave的机密性和完整性的保护.
在系统内分配一块被保护的物理内存区域EPC, 用来存放enclave和SGX数据结构[
(1) 处理器当前运行在enclave mode中;
(2) 访问地址在enclave地址空间;
(3) 物理地址在EPC内存中;
(4) EPCM(enclave page cache map)检查, 请求访问的页属于正在运行的enclave(只有enclave内的代码才能访问该enclave的内容).
系统在SGX调用前, 必须处于保护模式, 且需要支持分页.SGX所提供的内存保护机制, 在保护模式所提供的段保护、页保护机制基础上进行进一步的内存保护, 访问地址由虚拟地址转换为物理地址进行访问.对内存的访问可分为如下5种类型, 如
SGX的内存访问控制
Memory access control of SGX
(1) 运行于非enclave模式的处理器访问PRM之外的内存, 按照保护模式下的机制进行访问;
(2) 运行于非enclave模式的处理器访问PRM内部内存, 将被视为引用了不存在的内存;
(3) 处理器运行于enclave模式, 访问的页面不在enclave的虚拟地址空间, 但是处于EPC的区域范围内, 则CPU将这次访问视为引用了不存在的内存;
(4) 处理器运行于enclave模式, 硬件允许enclave代码访问处理器保留内存(PRM)外部的地址;
(5) 如果页面在enclave的虚拟地址空间外, 且指向PRM页面, 硬件将阻止访问并且发出异常.
简而言之, enclave外部的应用程序不能访问enclave内存; enclave内部的代码在EPC范围内只能访问属于自己的内存区域, 不能访问别的enclave内存; 对于PRM以外的内存, 则按照系统中其他的保护机制进行访问.这样的内存保护机制, 防止了enclave内部运行的程序被其他恶意软件盗取隐私信息和篡改.
EPC内存以页为单位进行管理, 页的控制信息保存在硬件结构EPCM里, 一个页面对应一个EPCM表项, 类似于操作系统内的页表, 管理着EPC页面的基本信息, 包括页面是否已被使用、该页的拥有者、页面类型、地址映射和权限属性等[
EPCM逻辑结构
Logical structure of EPCM
应用程序在申请创建一个enclave时, 需要进行页面分配、复制程序代码与数据和度量操作, 创建过程的最后一步需要对enclave的完整性进行验证, 判断特权软件在创建过程中是否篡改了程序数据, 如分配了多余的页、将恶意代码复制进来, 或是篡改了复制的数据等.通过对每个添加的页面内容进行度量, 最终得到一个创建序列的度量结果, 保存在enclave的控制结构中.然后, SGX通过一条初始化指令将这个结果与enclave所有者签名的证书中的完整性值进行比较:如果匹配, 则将证书中的所有者公钥进行哈希, 作为密封身份保存在enclave控制结构中; 如果不匹配, 则说明创建过程存在问题, 指令返回失败结果.
成功进行了初始化指令之后, 才能进入enclave执行程序, 此后SGX提供的内存保护和地址映射保护使得外界无法访问enclave内存, 从而保证了enclave的机密性和完整性, 远程的认证者可以通过enclave的完整性度量值和其密封身份, 确保其正确地创建.
Enclave建立保护的过程
Process of establishing protection
SGX提出了两种类型的身份认证方式:一种是平台内部enclave间的认证, 用来认证进行报告的enclave和自己是否运行在同一个平台上; 另一种是平台间的远程认证, 用于远程的认证者认证enclave的身份信息.
当enclave向平台上其他enclave报告身份时, 先获取当前的enclave的身份信息和属性、平台硬件TCB信息, 附加上用户希望交互的数据, 生成报告结构; 然后获取目标enclave的报告密钥, 对报告结构生成一个MAC标签, 形成最终的报告结构, 传递给目标enclave, 由目标enclave验证请求报告身份的enclave跟自己是否运行于同一平台.
为了实现远程认证, 需要引入一个特殊的引用(quoting)enclave.同一平台enclave之间的验证使用的是对称密钥, 不适用于远程认证, 因此, 平台间的认证采用非对称密钥机制.由引用enclave创建平台认证的签名密钥EPID(enhanced privacy identification), 这个密钥不仅代表平台, 还代表着底层硬件的可信度, 并且绑定处理器固件的版本, 当enclave系统运行时, 只有引用enclave才能访问到EPID密钥.
远程认证的过程中, 假设远程认证方
当前, 云计算环境需要可信计算的支持, 云环境的构建通常使用传统分层的安全模型来保护特权程序免受不可信的用户程序的攻击, 但是却不能保护用户程序的数据被特权软件所访问和篡改.这导致云环境下的用户只能被动地相信云服务供应商的硬件和软件的可靠性, 以及管理人员不会去窃取自己的私密数据.
目前, 保护云计算环境安全的方法主要有3种.
● 第1种是基于特定的硬件保护关键的秘密信息, 如密钥的安全.该方法难以保证整个应用程序的安全, 且密钥通常会以明文的形式在不可信节点上使用;
● 第二种是基于可信的VMM(virtual machine manager)来保护应用程序, 该方法需要整个VMM可信, 并且无法防止特权用户窃取用户隐私数据;
● 第3种方法是基于密文数据的计算, 如密文检索, 但该方法在性能方面存在局限性.
文献[
由于操作系统自身可能是不可信的, 因此方案中设计了一个System Library库, 用来将操作系统的系统调用进行封装, 并在应用程序运行时将其一起放到enclave中供应用程序使用, System Library自身实现了全部的系统调用.
为了保护用户程序和System Library的代码和数据不被enclave外的恶意软件攻击, 设计了Shield module, 该模块通过仔细地检查参数和函数调用的返回值来进行保护.Shield module自身包含了一些典型的内核函数:内存管理、进程调度、文件系统操作等.
基于容器的虚拟化现在越来越流行, 已经有不少的多租户环境开始使用容器来实现应用程序的性能隔离. Docker[
因此, 文献[
(1) 一个较小的可信计算基;
(2) 更低的性能消耗:SCONE提供了一个安全C语言静态库接口用于透明的加解密I/O数据; 降低了因线程同步和系统调用导致的高性能消耗; 支持用户级线程和异步系统调用.
通过实验评估表明:SCONE能够通过SGX保护未被修改的应用程序, 并实现0.6~1.2倍的吞吐量.
MapReduce[
目前, 对于大数据安全通常采用的是基于密码的保护机制, 如全同态加密机制、安全多方计算或零知识证明的机制, 然而这些方式目前都因受到性能的制约而没有大规模实用.另外一些方法, 如数据库加密机制, 如CtrptDB[
该方案主要需解决以下3个关键问题.
(1) 利用SGX构建最小可信计算基
为增加方案的实用性, 本方法需要运行在未修改过的Hadoop上, 因此系统的可信计算基不包括Hadoop, OS和hypervisor.用户编写map和reduce代码, 并且将它们进行加密, 之后上传到云端.在每一个工作节点上, 云操作系统将这些代码加载进一个隔离的enclave中之后, enclave内的代码会执行密钥交换协议, 解密出map和reduce函数, 从而运行分布式计算处理用户数据.
(2) 保证整个分布式计算的完整性
SGX只能在本地计算节点上为程序和数据构建安全执行环境, 如何在分布式大数据处理过程中确保代码和数据的安全可信是需要解决的关键问题.本方案提出了一个高效的分布式作业执行协议来保证MapReduce作业的正确性和机密性.每个计算节点为正在运行的程序产生一个安全的摘要信息, 之后再将这些摘要进行收集整合, 通过验证最后结果中的最终摘要信息, 用户可以检查云服务提供商是否干扰了计算的执行.
(3) 保护用户程序免受非法内存访问攻击
SGX技术允许用户程序访问系统的全部地址空间, 因此, 不安全的内存访问可能会泄露数据或者带来其他的安全威胁.如何限制enclave内部程序的内存访问, 减轻由于应用程序本身的缺陷而导致其遭受非法内存访问攻击, 是需要解决的一个问题.该项目基于GCC开发了安全增强的编译器[
网络功能虚拟化(network function virtualization, 简称NFV)通过软硬件解耦及功能抽象, 使网络设备功能不再依赖于专用硬件, 资源可以充分灵活共享, 实现新业务的快速开发和部署, 并基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等.NFV网元是有状态的[
侧信道攻击主要目标是攻击enclave数据的机密性.攻击者来自non-enclave部分, 包括应用程序和系统软件.系统软件包括OS, hypervisor, SMM(system management mode), BIOS等特权级软件.
侧信道攻击一般假设攻击者知道enclave初始化时候的代码和数据, 并且知道内存布局.内存布局包括虚拟地址、物理地址以及他们之间的映射关系.有些侧信道攻击假设攻击者知道enclave的输入数据, 并且可以反复触发enclave, 进行多次观察记录.侧信道攻击还假设攻击者知道运行enclave平台的硬件配置、特性和性能, 比如CPU、TLB(translation lookaside buffer)、Cache、DRAM、页表、中断以及异常等各种系统底层机制.
Enclave和non-enclave共享大量的系统资源, 这就给侧信道攻击留下了非常大的攻击面.经过对现有资料的总结和系统结构的分析, 我们把SGX的攻击面总结在
Intel SGX侧信道的攻击面
Attack surface of SGX side channel
如
(1) CPU内部结构.比如pipeline, BPB(branch prediction buffer)等等.这些结构不能够直接访问, 但是如果可以间接利用[
(2) TLB.TLB包括iTLB, dTLB和L2 TLB.如果Hyper-Threading打开, 两个逻辑核共享一个物理核, 这个时候会大大增加侧信道攻击的可能;
(3) Cache.Cache包括L1instructionCache, L1dataCache, L2Cache和L3Cache(又叫LLCCache);
(4) DRAM.DRAM包括channels, DIMMs(dual inline memory module), ranks, banks.每个banks又包括rows, columns和rowbuffer;
(5) 页表(page table).页表可以通过权限控制来触发缺页异常, 也可以通过页表的状态位来表明CPU的某些操作.
对于不同的攻击面, 攻击者需要了解具体的细节和工作原理, 其中比较重要的参考文档就是Intel的手册[
目前, 文献[
SkyLake的TLB配置
Configuration of TLB in SkyLake
侧信道攻击的主要手段是通过攻击面获取数据, 推导获得控制流和数据流信息, 最终获取enclave的代码和数据的信息, 比如加密密钥、隐私数据等等.我们这里不一一列举具体的工作, 而是试图从攻击面的角度, 全面地介绍侧信道攻击.本节下面的内容就从典型的攻击面, 包括页表、TLB、Cache、DRAM以及CPU内部结构, 描述目前已知的侧信道攻击.
最早的SGX侧信道攻击就是基于页表的攻击[
Controlled-channel攻击对libjpeg的攻击效果
Attack effect of Controlled-channel attack to libjepg
Pigeonhole攻击对安全库的攻击效果
Attack effect of Pigeonhole attack to the security library
后来, 基于页表的攻击有了新的变种.这些侧信道攻击主要利用页表的状态位[
典型的页表项的格式(x64系统)
Typical format of PTE
目前还没有完全基于TLB的攻击, 但是已经出现TLB作为辅助手段的侧信道攻击, 我们会在混合侧信道攻击的章节(第4.1.3.6节)里面介绍.关于TLB的两点重要信息, 我们需要了解, 希望对提出新的基于TLB的侧信道攻击和防御有所帮助.
(1) TLB的层次结构.目前, SkyLake的机器分为L1和L2两层, 不同层次出现TLB miss的时间代价不同;
(2) TLB对代码和数据的区分.L1区分代码(iTLB)和数据(dTLB), 两者直接有Cachecoherence的保证; .L2不区分代码和数据.
传统侧信道有很多基于Cache的攻击[
在攻击者能控制整个系统资源的情况下, 可以有针对地调度资源, 减少侧信道的噪音, 增加侧信道的成功率.降低噪音的策略大体可以有一下几种[
(1) 核隔离(coreIsolation).这个方法的主要目标就是让enclave独自占有一个核(不允许其他程序运行在该核上面);
(2) 缓存隔离(cacheIsolation).尽量使用L1或者L2级别的Cache进行侧信道攻击.L3的Cache被所有的核共用, 会引入不必要的噪音;
(3) 不间断运行(uninterrupted execution).也就是不触发或尽量少触发AEX(asynchronous enclave exit), 因为AEX和后续的ISR(interrupt service routines)都会使用Cache, 从而引入不必要噪音.少触发AEX就是要使用中断绑定(interruptaffinity)和时钟频率; 不触发AEX基本上就是让系统软件(比如OS)屏蔽所有中断.
除了降低噪音, 攻击者还可以提高攻击的精度, 大体策略有:
(1) 高精度时钟.可以采用APIC(advanced programmable interrupt controller)提供的高精度时钟和硬件TSC(time stamp counter);
(2) 放大时间差异.比如, 攻击者可以配置侧信道攻击代码所在的CPU以最高频率运行, 而对enclave所在的CPU进行降频处理.
基于Cache的侧信道攻击可以进行细粒度的监控.最小粒度可以做到一个Cacheline, 即64个字节.由于粒度更小, 基于Cache的侧信道可以比基于页表的侧信道以及后面介绍的基于DRAM的侧信道获得更多的信息.
在讲解基于DRAM的侧信道之前, 我们首先了解一些DRAM的基本知识.DRAM一般由channel, DIMM, rank, bank等部分构成, 如
典型的DRAM的格式
Typical format of DRAM
基于DRAM的侧信道攻击有一些不足[
● enclave使用的内存通常都在缓存里面, 只有少部分需要从DRAM里面去取;
● DRAM的精度不够.例如, 一个页面(4KB)通常分布在4个DRAM row上面, 这样, 基于DRAM的侧信道攻击的精度就是1KB, 仅仅比基于页表的侧信道攻击好一些, 远远不及基于Cache的侧信道攻击的精度;
● DRAM里面存在很难避免的噪音干扰.因为一个DRAM row被很多页面使用, 同时, 同一个bank不同row的数据读取也会对时间测量造成干扰, 使得误报时常发生.
CPU内部有大量的结构是在enclave和non-enclave之间共用的.这就给侧信道攻击提供了大量的攻击面素材.比如, 文献[
目前, 对以CPU内部结构为攻击面的工作才刚刚开始, 仅仅有一个工作发表.相信通过进一步研究, 还会有其他的攻击面被陆续发掘.
从设计上来讲, SGX可以避免这类侧信道攻击.具体来讲, 在enclave到non-enclave的切换过程中, CPU清除这些共用的内部结构体.这样, non-enclave就不会得到任何残留的记录.但在具体实现的时候还要注意一些细节, 比如清除的时间也必须是稳定不变的.如果enclave运行的差异会导致清除操作的时间差异, 攻击者很可能据此推导出enclave的某些运行状态.
混合侧信道攻击是同时采集多个侧信道攻击面的信息, 或通过多个攻击面共同作用放大差异增加准确度.比较典型的做法包括:
(1) TLB和页表混合攻击.比如TLB miss的时候会加载页表, 这个时候CPU会设置页表的Accessbit.文献[
(2) Cache和DRAM混合攻击.基于DRAM的攻击只能精确到row(一个row通常8KB)的粒度.为了增强这类攻击的效果, 文献[
除了结合两个攻击面的侧信道攻击, 还可以采用多个攻击面相结合的侧信道攻击.这类混合攻击目前在SGX的环境下还没有看到相关工作.不过, 之前CCS’16的文献[
未来, 新的侧信道攻击可能来自两个方面.
● 第一就是发掘新的混合侧信道攻击.前面列出的经典的混合侧信道攻击, 他们往往是用两种攻击面信息.因此, 我们可以考虑多个攻击面结合的侧信道攻击.以往的混合侧信道攻击往往专注于内存管理和地址转换等方面, 新的侧信道攻击可以结合其他方面的信息, 进行一些新的尝试;
● Enclave所有和non-enclave共享的资源都可能成为潜在的侧信道攻击面.因此, 发掘新的侧信道攻击的第2个途径就是发现新的共享资源, 比如未被发掘的CPU内部共享结构.这些新的共享资源可能来自一些新的硬件特性, 如Intel PT(processor trace), Intel TSX(transactional synchronization extensions), Intel MPX(memory protection extensions), Intel CAT(cache allocation technology)等等.
目前, 已经有很多文献给出了防御SGX侧信道攻击的方案, 有些只是大体的思路, 有些则已经有成型的设计和实现.我们在这里主要介绍防御的思路和方法, 不涉及设计和实现的细节.首先, 我们把这些方法涉及的层次分为源码级别、系统级别和硬件级别.
这类方法的主要思想就是通过修改源码, 编写出能够防御侧信道的代码实现.这里的核心思想就是隐藏控制流和数据流.
这类方法的探索已经在一些密码算法中有所涉及, 比如利用exponentblinding[
系统层次的解决方案主要是利用一些系统特性来防御或检测SGX侧信道攻击.这里有几个思路可以参考.
(1) 随机化技术(randomization).随机化技术可以应用在控制流和数据流上面, 这将大大增加侧信道攻击的代价.防御效果与随机化粒度以及随机化频率有关;
(2) 检测可疑异常和中断.T-SGX[
(3) 检测时间异常.目前, Déjá Vu系统[
(4) Cache隔离.目前, Intel推出了CAT技术, 允许对Cache进行粗粒度的隔离.这个技术已经被使用在云计算平台上面[
硬件层次的解决方案还处于探索阶段.加入侧信道防御, 将会显著增加硬件复杂度, 影响功耗和性能.这也可能是Intel在最初推出SGX的时候没有加入侧信道防御的一个原因.硬件解决方案可能有以下两种.
(1) 硬件分割(partition).类似于ARM里面的TrustZone, 有自己的Cache, memory等一系列硬件资源, 物理上与non-enclave分离;
(2) 硬件隔离(isolation).类似于Intel CAT技术, 可以单独为每一个enclave提供一个动态隔离出的Cache.当enclave销毁的时候, 隔离出的Cache可以被收回.这里一个很重要的要求就是, enclave必须可以验证这个功能的有效性.
Sanctum[
在文献[
在文献[
文献[
TPM/TCM提供度量、签名、加解密、密封等功能, 其主要用于系统和应用程序的静态完整性度量, 无法确保运行态的安全.SGX除了提供程序加载时的完整性验证外, 还保证程序运行时安全, 缓解针对程序运行时的攻击[
Intel TXT[
Intel VT/AMD SVM硬件虚拟化技术提供操作系统级别的隔离环境, SGX则针对用户空间提供程序粒度的隔离.虚拟化技术通过特权分级制度保证隔离, 其安全性依赖于特权软件的安全性, 若VMM出现安全漏洞, 平台的安全性将难以保证.而SGX提供硬件隔离的执行环境, 不依赖于固件和特权软件的安全性, 特权软件也无法访问普通程序被保护的内存[
TrustZone技术是由ARM公司提出的嵌入式平台安全技术, 在尽量不影响原有处理器设计的情况下, 通过物理隔离保护安全内存、加密块、键盘和显示器等外设.其将系统的硬件和软件资源划分为两个执行环境——安全环境(secure world)和普通环境(normal world)[
TrustZone和SGX的不同之处在于:TrustZone中, 通过CPU将系统划分为两个隔离环境, 两者之间通过SMC指令通信, 一旦Secure world中存在恶意程序, 那么将危害整个系统的安全; 而SGX中, 一个CPU可以运行多个安全enclaves, 并发执行, 即使某个enclave中存在恶意程序, 它也不能访问和危害其他enclave的被保护内容.
与现有的几种硬件安全技术相比, Intel SGX主要有3大优势:一是通过内存加密技术保护程序运行态的安全, 使得通过内存泄漏攻击获取关键信息的难度增大; 二是将系统的可信计算基缩小到CPU, 相比以往将整个操作系统或特权软件(如hypervisor等)视为可信计算基, 可以避免更多的系统攻击带来的危害; 三是支持虚拟化技术、容器技术, 可用性更强.
(1) 由于enclave处于用户态, 其自身无法执行系统调用, 需要与不可信区域进行交互(运行库的支持有限, 接口的安全性).在执行系统调用前需要退出enclave, 执行完成后将结果返回到enclave中, 增大了安全风险和系统开销;
(2) Enclave中的数据和处理过程, 如果依赖于外部数据, 则存在一定的安全隐患.例如:通过一些不合法输入, 可以发起对可信区的缓冲区溢出攻击, 这些攻击可能会改变可信区中程序的执行流程、获取可信区中的敏感信息;
(3) SGX本身无法抵御侧信道攻击;
(4) SGX提供的enclave可使用内存太小, 当程序数量和规模增大时, 需要换进换出页面.为了保证安全性, 需要对页面进行完整性和机密性保障, 导致系统开销大;
(5) 使用SGX提供的enclave时需要对程序进行改造, 当程序规模大时, 带来的编程成本高.
自2013年Intel推出SGX技术以来, SGX技术便受到了学术界和工业界的极大关注.目前, 除SGX自身安全问题研究外, SGX技术已经被学术界和工业界应用到了很多领域.第3节中我们介绍了目前SGX在云计算安全相关领域的研究工作, 此外, SGX已经被用于构建可信的身份认证环境[
目前, 可信云主要依赖于在服务器中部署TPM[
随着云计算的兴起与发展, 虚拟化技术得到了广泛的研究与应用.虚拟化技术为云平台实现资源抽象、隔离以及资源的按需分配提供技术支撑.在云虚拟化架构中, 虚拟机是系统资源虚拟化的直观体现, 也与云用户密切相关.
目前, 一些研究工作将可信计算和虚拟化技术相结合, 提出了虚拟可信平台模块的概念, 它通过模拟硬件TPM的功能为每个虚拟机分配一个vTPM设备[
因此, 如何结合Intel SGX技术构建可信云执行环境, 实现虚拟机的可信启动、可信执行、虚拟可信根的安全保护以及虚拟机及其虚拟可信根的安全迁移, 是未来一个值得研究的方向.
在云虚拟网络中, 网络功能主要不再仅以硬件的方式出现, 取而代之的是数量众多并且可复用的虚拟网元(virtual network function, 简称VNF).然而, 如何保护这些虚拟网元自身的安全, 是云虚拟网络安全面临的一个难题.SGX为这一问题的解决提供了硬件基础.
基于上述SGX技术在云环境中应用的构想, 如
基于SGX的NFV保护云环境架构
Protected cloud architectures of NFV based on the SGX
外包计算的安全与隐私, 是近几年来的研究热点问题.通过将计算外包到云中, 一个计算能力有限的用户可以利用云计算强大的计算能力实现更高效更快捷的计算服务.然而, 如何保护外包数据和计算过程的安全与隐私, 是目前需要解决的问题.传统的方式是利用密文检索等方法, 在保护数据隐私的同时实现安全的计算.然而密文检索目前只能在密文数据上实现简单的计算, 此外, 性能目前仍然是制约密文检索技术被应用的瓶颈.SGX为保护外包计算的安全与隐私提供了一条新的途径.目前, 该方面的研究工作刚刚起步[
云计算中, 用户的数据访问模式可以泄露用户的隐私.为解决这一问题, 目前, 研究者利用不经意随机存取(ORAM)保护云平台中用户数据访问模式的隐私.然而, 目前ORAM方案效率较低, 无法实际应用.SGX拥有较小的可信基, 同时具有较高的性能和安全性.如何结合SGX和各种ORAM机制[
本文对SGX的技术原理、侧信道攻击以及在云安全领域的应用和未来研究方向进行了深入分析和总结.首先介绍了该技术的基础架构, 并且对其安全框架进行了详细分析; 接着, 深入剖析了其技术原理, 同时, 针对SGX自身安全, 深入讨论了SGX侧信道攻击及其防御; 此外, 文中也将该技术与其他可信计算技术进行了分析对比, 在此基础上, 指出了SGX技术自身的优势和不足, 并进一步介绍了SGX在云计算安全相关领域的应用; 最后, 本文提出SGX在云安全相关领域的未来应用需求和研究方向.
Wang JW, Jiang Y, Li Q, Yang Y. Survey of research on SGX technology application. Journal of Network New Media, 2017, 6(5):3-9(in Chinese with English abstract).
王进文, 江勇, 李琦, 杨芫.SGX技术应用研究综述.网络新媒体技术, 2017, 6(5):3-9.
Intel Corporation. Intel® software guard extensions programming reference. Rev. 2. 2014. Ref. #329298-002.
Shaun D, Richard F. SGX: The good, the bad and the downright ugly. 2014.
https://software.intel.com/en-us/blogs/2013/09/26/protecting-application-secrets-with-intel-sgx]]>
https://software.intel.com/en-us/blogs/2014/06/02/intel-sgx-fordummies-part-2]]>
https://software.intel.com/en-us/blogs/2014/09/01/intel-sgx-fordummies-part-3]]>
Prof. Dr. -Ing. Sadeghi AR. Trusted Execution Environments Intel SGX. Germany: Technische Universität Darmstadt (CASED).
https://software.intel.com/sgx]]>
Intel Corporation. Intel® software guard extensions (Intel® SGX) SDK for Linux* OS., 2017.
https://securosis.com/blog/intel-software-guardextensions-sgx-is-mighty-interesting]]>
Baumann A, Peinado M, Hunt G. Shielding applications from an untrusted cloud with haven. ACM Trans. on Computer Systems, 2015, 33(3):1-26.
Porter DE, Boyd-Wickizer S, Howell J, Olinsky R, Hunt GC. Rethinking the library OS from the top down. ACM Sigplan Notices, 2011, 46(3):291-304.
Howell J, Parno B, Douceur JR. How to run POSIX apps in a minimal picoprocess. In: Proc. of the USENIX Conf. on Technical Conf. 2013. 321-332.
Baumann A, Lee D, Fonseca P, Glendenning L, Lorch JR, Bond B, Olinsky R, Hunt GC. Composing OS extensions safely and efficiently with bascule. In: Proc. of the 8th ACM European Conf. on Computer Systems. 2013. 239-252.
Tsai CC, Arora KS, Bandi N, Jain B, Jannen W, John J, Kalodner HA, Kulkarni V, Oliveira D, Porter DE. Cooperation and security isolation of library OSes for multi-process applications. In: Proc. of the 9th European Conf. on Computer Systems. 2014. 1-14.
Merkel D. Docker:Lightweight Linux containers for consistent development and deployment. Linux Journal, 2014(239).
Bernstein D. Containers and cloud:From LXC to docker to kubernetes. IEEE Cloud Computing, 2014, 1(3):81-84.
Arnautov S, Trach B, Gregor F, Knauth T, Martin A, Priebe C, Lind J, Muthukumuran D, O'Keeffe D, Stillwell M, Goltzche D, Eyers D, Kapitza R, Pietzuch P, Fetzer C. SCONE: Secure Linux containers with Intel SGX. In: Proc. of the 12th USENIX Symp. on Operating Systems Design and Implementation (OSDI). 2016
Schuster F, Costa M, Fournet C, Gkantsidis C. VC3: Trustworthy data analytics in the cloud using SGX. In: Proc. of the Security and Privacy. IEEE, 2015. 38-54.
Dean J, Ghemawat S. Mapreduce:Simplified data processing on large clusters. Communications of the ACM, 2008, 51(1):107-113.
Dill S, Kumar R, Mccurley KS, Rajagopalan S, Sivakumar D, Tomkins A. Self-Similarity in the Web. ACM Trans. on Internet Technology (TOIT), 2002, 2(3):205-223.
Popa RA, Redfield CMS, Zeldovich N, Balakrishnan H. CryptDB: Protecting confidentiality with encrypted query processing. In: Proc. of the ACM Symp. on Operating Systems Principles 2011(SOSP 2011). Cascais, 2011. 85-100.
Arasu A, Blanas S, Eguro K, Kaushik R, Kossmann D, Ramamurthy R, Venkatesan R. Orthogonal security with cipherbase. In: Proc. of the Cidr. Asilomar, 2015.
Nagarakatte S, Zhao JZ, Martin MMK, Zdancewic S. CETS:Compiler-enforced temporal safety for C. ACM SIGPLAN Notices, 2010, 45(8):31-40.
Shih MW, Kumar M, Kim T, Gavrilovska A. S-NFV: Securing NFV states by using SGX. In: Proc. of the 2016 ACM Int'l Workshop on Security in Software Defined Networks & Network Function Virtualization. 2016. 45-48.
Roesch M. Snort-lightweight intrusion detection for networks. In: Proc. of the 13th USENIX Conf. on System Administration (LISA'99). 1999. 229-238.
Lee S, Shih MW, Gera P, Kim T, Kim H, Peinado M. Inferring fine-grained control flow inside SGX enclaves with branch shadowing. In: Proc. of the 26th USENIX Security Symp. 2016.
Intel Corporation. Intel x64 and ia-32 architectures optimization reference manual. 2016.
Intel Corporation. Intel 64 and IA-32 architectures software developer's manual combined volumes: 1, 2a, 2b, 2c, 2d, 3a, 3b, 3c, 3d and 4. 2017.
https://www.7-cpu.com]]>
Wang WH, Chen GX, Pan XR, Zhang YQ, Wang XF, Bindschaedler V, Tang HX, Gunter CA. Leaky cauldron on the dark land: Understanding memory side-channel hazards in SGX. In: Proc. of the 2017 ACM SIGSAC Conf. on Computer and Communications Security (CCS 2017). 2017. 2421-2434.
Xu YZ, Cui WD, Peinado M. Controlled-Channel attacks: Deterministic side channels for untrusted operating systems. In: Proc. of the 2015 IEEE Symp. on Security and Privacy (SP 2015). 2015. 640-656.
Shinde S, Chua ZL, Narayanan V, Saxena P. Preventing page faults from telling your secrets. In: Proc. of the 11th ACM on Asia Conf. on Computer and Communications Security (ASIA CCS 2016). 2016. 317-328.
Liu FF, Yarom Y, Ge Q, Heiser G, Lee RB. Last-Level cache side-channel attacks are practical. In: Proc. of the IEEE Symp. on Security and Privacy. IEEE Computer Society, 2015. 605-622.
Yarom Y, Falkner K. FLUSH+RELOAD: A high resolution, low noise, L3 cache side-channel attack. In: Proc. of the 23rd USENIX Conf. on Security Symp. 2014. 719-732.
Lipp M, Gruss D, Spreitzer R, Maurice C, Mangard S. ARMageddon: Cache attacks on mobile devices. In: Proc. of the 25th USENIX Security Symp. (USENIX Security 2016). 2016. 549-564.
Gruss D, Maurice C, Wagner K, Mangard S. Flush+Flush: A fast and stealthy cache attack. In: Proc. of the 13th Conf. on Detection of Intrusions and Malware & Vulnerability Assessment (DIMVA). 2016.
Gruss D, Spreitzer R, Mangard S. Cache template attacks: Automating attacks on inclusive last-level caches. In: Proc. of the 24th USENIX Conf. on Security Symp. 2015. 897-912.
Götzfried J, Eckert M, Schinzel S, Müller T. Cache attacks on Intel SGX. In: Proc. of the 10th European Workshop on Systems Security (EuroSec 2017). 2017. 1-6.
Moghimi A, Irazoqui G, Eisenbarth T. Cachezoom: How SGX amplifies the power of cache attacks. In: Proc. of the Conf. on Cryptographic Hadware and Embedded Systems (CHES 2017). 2017. 69-90.
Brasser F, Müller U, Dmitrienko A, Kostianinen K, Capkun S, Sadeghi AR. Software grand exposure: SGX cache attacks are practical. In: Proc. of the 11th USENIX Workshop on Offensive Technologies (WOOT 2017). 2017.
Schwarz M, Weiser S, Gruss D, Maurice C, Mangard S. Malware guard extension: Using SGX to conceal cache attacks. In: Proc. of the Detection of Instrusions and Malware, and Vulnerability Assessment. 2017. 3-24.
Pessl P, Gruss D, Maurice C, Schwarz M, Mangard S. DRAMA: Exploiting DRAM addressing for cross-CPU attacks. In: Proc. of the 25th USENIX Security Symp. 2016.
Gruss D, Maurice C, Fogh A, Lipp M, Mangard S. Prefetch side-channel attacks: Bypassing SMAP and kernel ASLR. In: Proc. of the 2016 ACM SIGSAC Conf. on Computer and Communications Security. 2016. 368-379.
Kocher PC. Timing attacks on implementations of diffie-hellman, RSA, DSS, and other systems. In: Proc. of the 16th Annual Int'l Cryptology Conf. on Advances in Cryptology. 1996. 104-113.
Biham E. A fast new DES Implementation in software. In: Proc. of the Int'l Workshop on Fast Software Encryption. 1997. 260-272.
Matsui M. How far can we go on the x64 processors? In: Proc. of the Int'l Workshop on Fast Software Encryption. 2006. 341-358.
Ohrimenko O, Schuster F, Fournet C, Mehta A, Nowozin S, Vaswani K, Costa M. Oblivious multi-party machine learning on trusted processors. In: Proc. of the 25th USENIX Security Symp. (USENIX Security 2016). 2016. 619-636.
Rane A, Lin C, Tiwari M. Raccoon: Closing digital side-channels through obfuscated execution. In: Proc. of the 24th USENIX Security Symp. (USENIX Security 2015). 2015. 431-446.
Shih MW, Lee S, Kim T, Peinado M. T-SGX: Eradicating controlled-channel attacks against enclave programs. In: Proc. of the 2017 Annual Network and Distributed System Security Symp. (NDSS). 2017.
Chen S, Zhang XK, Reiter MK, Zhang YQ. Detecting privileged side-channel attacks in shielded execution with Déjá Vu. In: Proc. of the 2017 ACM on Asia Conf. on Computer and Communications Security. 2017. 7-18.
Liu FF, Ge Q, Yarom Y, Mckeen F, Rozas C, Heiser G, Lee RB. CATalyst: Defeating last-level cache side channel attacks in cloud computing. In: Proc. of the 2016 IEEE Int'l Symp. on High Performance Computer Architecture (HPCA). 2016. 406-418.
Costan V, Lebedev I, Devadas S. Sanctum: Minimal hardware extensions for strong software isolation. In: Proc. of the 25th USENIX Security Symp. (USENIX Security 2016). 2016. 857-874.
Sinha R, Rajamani S, Seshia SA, Vaswani K. Moat: Verifying confidentiality of enclave programs. In: Proc. of the ACM SIGSAC Conf. on Computer and Communications Security. 2015. 1169-1184.
Weichbrodt N, Kurmus A, Pietzuch P, Kapitza R. AsyncShock: Exploiting synchronisation bugs in Intel SGX enclaves. In: Proc. of the Computer Security (ESORICS 2016). 2016. 440-457.
Savage S, Burrows M, Nelson G, Sobalvarro P, Anderson T. Eraser: A dynamic data race detector for multi-threaded programs. In: Proc. of the 16th ACM Symp. on Operating Systems Principles. 1997. 27-37.
Checkoway S, Shacham H. Iago attacks: Why the system call API is a bad untrusted RPC interface. In: Proc. of the Int'l Conf. on Architectural Support for Programming Languages and Operating Systems. 2013. 253-264.
GB/T 29827-2013. Information security technology-Trusted computing specification-motherboard function and interface of trusted platform. 2013(in Chinese with English abstract).
GB/T 29827-2013. 信息安全技术可信计算规范可信平台主板功能接口. 2013.
GB/T 29828-2013. Information security technology-Trusted computing specification-trusted connect architecture. 2013(in Chinese with English abstract).
GB/T 29828-2013. 信息安全技术可信计算规范可信连接架构. 2013.
GB/T 29829-2013. Information security techniques-Functionality and interface specification of cryptographic support platform for trusted computing. 2013(in Chinese with English abstract).
GB/T 29829-2013. 信息安全技术可信计算密码支撑平台功能与接口规范. 2013.
Intel Corporation. Intel Trusted Execution Technology:Hardware-Based Technology for Enhancing Server Platform Security. White Paper, 2012.
Shi L, Zou DQ, Jin H. Virtualization of Xen. Wuhan:Huazhong University of Science and Technology Press, 2009(in Chinese).
石磊, 邹德清, 金海.Xen虚拟化技术.武汉:华中科技大学出版社, 2009.
Sheng QN. Technology status and development trend of virtual trusted platform. Netinfo Security, 2010, (4):34-36(in Chinese with English abstract).
沈晴霓.虚拟可信平台技术现状与发展趋势.信息网络安全, 2010, (4):34-36.
http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/PRD29-GENC-009492C_trustzone_security_whitepaper.pdf]]>
Verma A. Get into the Zone:Building Secure Systems with ARM TrustZone Technology. White Paper, Texas Instruments, 2013.
Zhang YJ, Feng DG, Qin Y, Yang B. A trustzone-based trusted code execution with strong security requirements. Journal of Computer Research & Development, 2015, 52(10):2224-2238(in Chinese with English abstract).
张英骏, 冯登国, 秦宇, 杨波.基于Trustzone的强安全需求环境下可信代码执行方案.计算机研究与发展, 2015, 52(10):2224-2238.
Ge XY, Vijayakumar H, Jaeger T. Sprobes: Enforcing kernel code integrity on the TrustZone architecture. In: Proc. of the Computer Science. 2014. 1793-1795.
Yang B, Feng DG, Qin Y, Zhang QY, Xi L, Zheng CW. Research on direct anonymous attestation scheme based on trusted mobile platform. Journal of Computer Research & Development, 2014, 51(7):1436-1445(in Chinese with English abstract).
杨波, 冯登国, 秦宇, 张倩颖, 奚瓅, 郑昌文.基于可信移动平台的直接匿名证明方案研究.计算机研究与发展, 2014, 51(7):1436-1445.
Chen LQ, Dietrich K, Löhr H, Sadeghi AR, Wachsmann C, Winter J. Lightweight anonymous authentication with TLS and DAA for embedded mobile devices. In: Proc. of the Int'l Conf. on Information Security. 2011. 84-98.
Feng W, Feng DG, Wei G, Qin Y, Zhang QY, Chang DX. TEEM: A user-oriented trusted mobile device for multi-platform security applications. In: Proc. of the Int'l Conf. on Trust and Trustworthy Computing. 2013. 133-141.
Gu JJ. Intel® Hardware-based Security Technologies Bring Differentiation to Biometrics Recognition Applications Part 1. 2015.
Jain P, Desai S, Kim S, Shih MW, Lee JH, Choi C, Shin Y, Kim T, Kang BB, Han D. OpenSGX: An open platform for SGX research. In: Proc. of the Network and Distributed System Security Symp. 2016.
Karande V, Bauman E, Lin Z, Khan L. SGX-Log: Securing system logs with SGX. In: Proc. of the 2017 ACM on Asia Conf. on Computer and Communications Security. 2017.
Fisch BA, Vinayagamurthy D, Boneh D, Gorbunov S. Iron: Functional encryption using Intel SGX. In: Proc. of the 2017 ACM SIGSAC Conf. on Computer and Communications Security. 2017. 765-782.
Ding Y, Duan R, Li L, Cheng YQ, Zhang YL, Chen TH, Wei T, Wang H. POSTER: Rust SGX SDK: Towards memory safety in Intel SGX enclave. In: Proc. of the 2017 ACM SIGSAC Conf. on Computer and Communications Security. 2017. 2491-2493.
https://trustedcomputinggroup.org/work-groups/trustedplatform-module/]]>
Wang J, Shi Y, Peng GJ, Zhang HG, Zhao B, Yan F, Yu FJ, Zhang LQ. Survey on key technology development and application in trusted computing. China Communications, 2016, 13(11):70-90.
Shen CX, Zhang HG, Wang HM, Wang J, Zhao B, Yan F, Yu FJ, Zhang LQ, Xu MD. Research and development of trusted computing. Science China Press:Information Science, 2010, 40(2):139-166(in Chinese with English abstract).
沈昌祥, 张焕国, 王怀民, 王戟, 赵波, 严飞, 余发江, 张立强, 徐明迪.可信计算的研究与发展.中国科学:信息科学, 2010, 40(2):139-166.
Berger S, Cáceres R, Goldman KA, Perez R, Sailer R, Doom LV. vTPM: Virtualizing the trusted platform module. In: Proc. of the Conf. on USENIX Security Symp. 2006. 305-320.
Shi Y, Zhao B, Zhang HG. A security-improved scheme for virtual TPM based on KVM. Wuhan University Journal of Natural Sciences, 2015, 20(6):505-511.
Chen XQ, Gao XP, Wan H, Wang SM, Long X. Application-Transparent live migration for virtual machine on network security enhanced hypervisor. China Communications, 2011, 8(3):32-42.
Shetty J, Anala MR, Shobha G. A survey on techniques of secure live migration of virtual machine. Int'l Journal of Computer Applications, 2012, 39(12):34-39.
Nagin K, Hadas D, Dubitzky Z, Glikson A, Loy I, Rochwerger B, Schour L. Inter-Cloud mobility of virtual machines. In: Proc. of the Int'l Conf. on Systems and Storage. 2011. 1-12.
Patil VP, Patil GA. Migrating process and virtual machine in the cloud: Load balancing and security perspectives. Int'l Journal of Advanced Computer Science & Information Technology, 2012, 1(1).
Bin Sulaiman NA, Masuda H. Evaluation of a secure live migration of virtual machines using ipsec implementation. In: Proc. of the Int'l Conf. on Advanced Applied Informatics. Iiai: IEEE, 2014. 687-693.
Fan W, Kong B, Zhang ZJ, Wang TT, Zhang J, Huang WQ. Security protection model on live migration for KVM virtualization. Ruan Jian Xue Bao/Journal of Software, 2016, 27(6):1402-1416(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5009.htm[doi:10.13328/j.cnki.jos.005009]
范伟, 孔斌, 张珠君, 王婷婷, 张杰, 黄伟庆.KVM虚拟化动态迁移技术的安全防护模型.软件学报, 2016, 27(6):1402-1416. http://www.jos.org.cn/1000-9825/5009.htm[doi:10.13328/j.cnki.jos.005009]
Wang W, Zhang Y, Lin B, Wu XX, Miao K. Secured and reliable VM migration in personal cloud. In: Proc. of the Int'l Conf. on Computer Engineering and Technology. 2010. V1-705-V1-709.
Aslam M, Gehrmann C, Bjorkman M. Security and trust preserving VM migrations in public clouds. IEEE, In: Proc. of the Int'l Conf. on Trust, Security and Privacy in Computing and Communications. 2012. 869-876.
http://www.xenproject.org/]]>
https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine]]>
Zhang HG, Han WB, Lai XJ, Lin DD, Ma JF, Li JH. Survey on cyberspace security. Science China Information Sciences, 2015, 58(11):1-43.
Sasy S, Gorbunov S, Fletcher CW. ZeroTrace: Oblivious memory primitives from Intel SGX. In: Proc. of the Symp. on Network and Distributed System Security (NDSS). 2018.