Intel SGX论文调研

调研了近年来BIG4上Intel SGX相关论文。Intel SGX论文可分为:SGX应用、SGX保护框架和软件改进、Intel SGX攻防。

Intel SGX应用

Intel SGX应用可以为:云、服务端应用,客户端应用。

Intel SGX云、服务端应用相较客户端应用多。目前主要是用Intel SGX加固云、服务器的敏感模块。代表工作有DelegaTEE(SEC’18)【对服务器中的敏感凭证、用户信息等进行保护】、BITE(SEC’19)【对区块链全节点中来自轻节点的地址请求隐私进行保护】、EnclaveDB(S&P’18)【一个用Intel SGX加固的数据库】……

SGX客户端应用较少。SGX Security and Privacy(CCS’17)中举例,开发商向用户客户端的Intel SGX中下放许可证等版权信息。SGX客户端应用包括SGX的分布式客户端应用。

Intel SGX应用能真正体现其价值,目前SGX应用处于发展初期。

Intel SGX保护框架和软件改进

Intel SGX保护框架(Shield Framework)。目前主要为了将应用、容器不改代码地移植到Intel SGX环境中,并且由Intel SGX保护框架向上支持这种移植并提供SGX保护。代表工作有Haven(OSDI’14)【这是微软在Windows系统下的工作,作者在Intel SGX的Enclave中内嵌LibOS,使APP不经修改地二进制级地能够直接在Enclave中运行,基于LibOS的兼容Legacy程序的方案相较其他方案还能支持调用、线程、事件处理、Fork功能】、SCONE(OSDI’16)【基于Shield模块而非LibOS,使容器不经修改地源码级地直接能够运行在Enclave内部】、Ryoan(OSDI'16)【Enclave沙箱。隔绝Enclave,避免Enclave内部向外部有意或无意地泄露信息,比如用于防止应用开发商编写的Enclave从内部悄悄地把Enclave里的用户私密信息传出来给Enclave外部的开发者。Ryoan主要考虑的就是开发者编写的Enclave也可能是不怀好意的。理解这可能需要思路的转变,使用了SGX、Ryoan的开发商(如果他们能证明自己确实用了),可以证明自己无法泄露用户隐私。实际上Ryoan的安全能力也是有限的,虽然它声称也抗系统调用层面的侧信道,但我最近发现了新的侧信道可以突破。】、Panoply(NDSS’17)【基于Shim,将代码量大的库专用一个库Enclave运行,通过Enclave间函数调用实现库调用,这能提升代码重用性,降低TCB】、Graphene-SGX(ATC’17)【内容和架构类似Haven,但是是针对Linux系统的工作,目前支持APP、容器的二进制级移植,后续还将支持EDMM】……

Intel SGX软件层改进。主要为了提升Intel SGX机制中的功能、性能。代表工作有Eleos(EuroSys’17)【本文首先实验证明进出Enclave开销大,然后通过类RPC机制及SUVM(虚拟地址内存上构建新的一层页表机制,实现从SUVM地址到OSVM的转换,存储在不可信端的内存中就会加密保护,类比于硬盘的Swap分区,在Enclave内保存明文内容),尽可能避免Enclave退出,提升性能】、CoSMIX(ATC’19)【Eleos同作者,Eleos的SUVM可以理解为Memory store的一种应用,CoSMIX中,作者通过llvm pass插桩,不需要手改Enclave源码,并且可以做到多层MStore的栈式堆叠以满足各种丰富的安全需求,比如ORAM+In-Enclave Page的双重MStore的应用】、Autarky(Eurosys'20)【也是Eleos作者Meni Orenbach的工作,这篇也是Enclave页表相关的工作,不过这篇针对Controlled-Channel Attack进行防御,首先防御者修改硬件让Enclave内页错误时只向OS报告0地址出现页错误(0地址毫无任何意义,相当于隐藏了页错误具体的页地址),之后需要修改OS,让OS将控制流交还给Enclave内,目的是将页错误交还给Enclave内进行处理(如果OS不交还控制流给Enclave来处理页错误,那么程序将无法继续执行),也就是说需要让Enclave内的错误处理句柄优先与OS的错误处理句柄执行,Enclave内还会构建独立的页信息记录表,用于Enclave内错误处理句柄使用,比如Enclave内处理页错误时发现内部表明明记录某个页Present,但是却出现缺页错误,说明是攻击者恶意清P位发动攻击,此外,Enclave内错误处理优先于OS错误处理还有另一个好处是,Enclave内可以记录AEX频率,因为高频AEX往往意味着攻击可能正在发生】、丁羽的Rust-SGX SDK(CCS’19)【在SGX SDK上增加Rust语言与C语言互相调用的衔接层,使上层开发者可以使用Rust语言开发】、Fortanix的Rust EDP SDK【类似百度的Rust-SGX SDK,但是用Rust语言重写了SGX SDK】

Intel SGX攻防

Intel SGX攻防工作是为了让Intel SGX更加完善。目前很多的SGX攻防工作的思想是从CPU攻防、其他TEE攻防和软件攻防借鉴的。如从Intel SGX架构、微架构、软件栈攻击。

Intel SGX软件层攻防。对SGX SDK等软件层发动攻击,对软件层攻击进行防御。代表工作有Iago attacks(ASPLOS’13)【恶意构造系统调用返回值对Enclave攻击】、A Tale of Two Worlds(CCS’19)【作者首先对SGX SDK中的ABI、API攻击进行了系统性的调研,并且还实现了新型的ABI、API攻击】、COIN Attacks(ASPLOS’20)【首先分析了软件层SGX常见攻击模型,然后基于恶意操控输入、调用排序、并发调用等攻击模型,通过工具自动地挖掘SGX应用漏洞。】……

微架构侧信道,指利用微架构的变化将信息泄露给攻击者。代表工作有Foreshadow(SEC’18)【SGX平台下的Meltdown攻击,Meltdown攻击者触发异常构建瞬态执行窗口,使内核信息泄漏到缓存被攻击者窃取。Foreshadow与Meltdown不同的是,Foreshadow需额外地手动构造异常绕过SGX中止页面语义以构建瞬态执行窗口,进而使Enclave内地信息泄漏到缓存被攻击者窃取】、Strong and efficient cache side-channel protection using hardware transactional memory(SEC’17)【缓存侧信道的防御者使用Intel TSX事务包装敏感代码块,在事务入口处加载冗余缓存,增加缓存侧信道攻击的噪声】……

微架构数据采样(Micro-architectural Data Sampling):可以通过协助性质的或错误的Load指令来泄漏缓冲区的内容,从而绕过CPU的地址和权限检查。RIDL(S&P’19)【攻击者窃取泄漏到微架构LFB的信息,SGX下也有该问题。相较对L1攻击,针对LFB攻击只要更少的地址位匹配】、Fallout、ZombieLoad、Medusa、Cacheout……

超线程攻防。超线程下利用兄弟核的微架构信息泄露进行攻击,及相关防御。Racing in Hyperspace(SP’18)【针对超线程攻击,防御者通过度量防御者的两个线程之间的通讯时长确定两个线程是否在兄弟核上,避免攻击者线程和受害者线程处于兄弟核上】、Varys(ATC’18)……

内存安全攻防。SGX下,以内存安全问题为主的攻防。代表工作有SGX-Shield(NDSS’17)【Enclave内部署加载器将代码加密带入Enclave,并在Enclave内实现ASLR】、SGXBOUNDS(EuroSys’17)【利用EPC的地址比特位中的空余比特位,对缓冲区Load/Store的边界进行检查】、Dark-ROP(SEC’17)【利用侧信道等手段定位Gadgets,通过Gadgets链实现ROP攻击。二进制代码复用攻击】、The Guard’s Dilemma(SEC’18)【源码代码复用攻击,利用程序原有的内存漏洞,实现控制流、栈、寄存器的劫持】……

未初始化的Padding Bits:利用传参数据结构中的Padding Bits实现数据偷偷传输。Leaking Uninitialized...(arXiv’17)【利用E/OCALL参数的Padding Bits将数据传入/出Enclave】……

执行流痕迹——页表痕迹。通过页地址泄露信息反推执行流。Controlled-channel attacks(S&P’15)【攻击者利用页错误泄露页地址,利用页地址链反推Enclave内的控制流】、SGX-PTE(SEC’17)【攻击者利用AD通道反推被访问的PTE或使用缓存侧信道反推被加载进缓存的PTE,进一步反推页地址链及Enclave内的控制流,该攻击方案能够绕过T-SGX的防御】、T-SGX(NDSS’17)【针对Controlled-channel attacks,防御者利用Intel TSX出错回滚的特性,使攻击者只能获取Abort Handler的页地址信息,避免真正的页错误地址的泄露给攻击者。此外,Abort Handler还能记录AEX频率,高频的AEX能暗示攻击可能正在发生】……

执行流痕迹——影子分支。利用分支预测器的共享进行侧信道信息泄露。代表工作有Branch Shadowing(SEC’17)【基于Enclave退出时不刷新分支预测器及Enclave内外共享分支预测器,攻击者通过(地址碰撞的)影子分支反推受害者Enclave内的分支选择,反推Enclave内的控制流】、BranchScope(ASPLOS’18)……

执行流痕迹——指令时延。Nemesis(CCS’18)【攻击者利用APIC时钟中断,单步中断Enclave的二进制代码并计算二进制代码执行时长,通过时延序列反推Enclave内的控制流】……

执行流痕迹——其他防护。ZeroTrace(NDSS'18)【本文针对ORAM低效率问题使用SGX进行性能提升】、OBFUSCURO(NDSS’19)【针对侧信道攻击,防御者将代码、数据的访问模式进行固定,尽可能地避免控制流痕迹的泄露。】……

Enclave线程暂停构建恶意ECALL时序。AsyncShock(ESORICS'16)【利用Ring0权限的暂停原语恶意调度Enclave线程,构建非预期的并发ECALL,触发UAF劫持控制流。】、Game of Threads(ASPLOS'20)【通过页错误暂停原语恶意调度Enclave线程,以实现针对ASGD的神经网络训练过程的攻击】

Intel SGX发展趋势

云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备,使用服务商提供的电脑基建作计算和资源。【维基百科】

云计算非常契合各个实体对计算资源的定制需求,同时是一种典型的远程计算场景。Intel SGX是一种良好的远程计算安全方案,非常有应用前景。不过SGX开发细节有别于传统开发,因此工程实现存在阻力。目前已有部分SGX应用诞生,体现了SGX的价值,未来SGX应用将更加丰富。

Intel SGX目前很多安全细节仍处于讨论之中,随着SGX应用丰富,SGX的安全性将会受到更多的讨论。

此外,其他芯片厂商未来可能也将学习Intel SGX来解决远程计算安全问题,以满足远程计算安全需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值