当前位置: 首页 > news >正文

Klotski: Efficient Obfuscated Execution against Controlled-Channel Attacks

标题:Klotski: Efficient Obfuscated Execution against Controlled-Channel Attacks
作者:Pan Zhang,Chengyu Song,Heng Yin,Deqing Zou,Elaine Shi and Hai Jin
发布:ASPLOS【计算机体系结构顶会】
时间:2020

摘要

Intel Software Guard eXtensions(SGX)为安全敏感计算提供了一个基于硬件的可信执行环境。在可信域(飞地)内运行的程序受到保护,免受其他软件的直接攻击,包括操作系统(OS)、系统管理程序和低级固件等特权软件。

然而,最近的研究表明,SGX容易受到一组侧信道攻击,这些攻击允许攻击者破坏飞地执行的机密性,例如受控信道攻击。

不幸的是,现有的防御要么提供了不完整的保护,要么带来了太多的性能开销。

在这项工作中,我们提出了Klotski,这是一种有效的模糊执行技术,通过在安全性和性能之间进行可调的权衡来击败受控通道攻击。从高层来看,Klotski模拟了一个安全的内存子系统。它利用增强的ORAM协议将代码和数据加载到两个具有可配置大小的软件缓存中,并在可配置的间隔后重新随机化。更重要的是,Klotski采用多种优化来减少由基于软件的地址转换和软件缓存替换引起的性能开销。评估结果表明,Klotski对受控信道攻击是安全的,其性能开销远低于以前的解决方案。

引言

可信执行环境(TEE)旨在保护应用程序执行的机密性和完整性,使其免受不受应用程序开发人员物理控制的潜在敌对平台(如公共云)上的各种安全威胁。此类威胁包括恶意软件、恶意或受损的操作系统(OS)、流氓云管理员等。软件[16,24,32]和硬件[4,21,33]都可以提供TEE。在这些解决方案中,Intel Software Guard eXtensions(SGX)[33]因其在商品Intel CPU中的可用性(自Skylake微体系结构以来)和强大的基于硬件的安全保证而成为最有前途的解决方案。具体来说,在SGX保护的TEE(也称为飞地)内运行的应用程序只需要信任处理器,这是一个比基于软件的解决方案小得多的受信任计算基础(TCB)。与此同时,英特尔也做出了重大努力,正式验证SGX的硬件规范及其加密操作的实现[26]。由于这些原因,各种基于SGX的应用程序开发,包括数据分析[34,40]、机器学习[36]、Tor[29]、容器[6]和库操作系统,以支持遗留应用[7,46,52]。

不幸的是,SGX也有弱点。特别是,侧通道攻击超出了其设计的威胁模型,研究人员已经证明了针对在飞地内运行的应用程序的几种类型的侧通道攻击的可行性,包括基于页面故障的攻击(也称为控制通道攻击)[45,56]、基于缓存的攻击[9,19,23,42,54]、基于分支预测的攻击[30],和瞬态攻击[10,14,31,41]。在这些攻击中,我们认为受控信道攻击是最关键的,因为大多数其他细粒度攻击[10,14,23,30,31,41,53,54](除了Meltdown[31])成本更高。因此,对手通常依靠受控信道攻击来精确定位感兴趣的功能,并且仅在执行目标功能时才发起细粒度攻击

受控通道攻击是可能的,因为(1)攻击者可以观察内存访问模式[51],(2)应用程序的内存访问模式依赖于输入。因此,可以通过解决其中任何一个根本原因来击败受控信道攻击。

用户空间页面故障检测方法[44,45]旨在防止攻击者通过故意注入的页面故障获取页面访问模式。不幸的是,它们对不依赖于页面故障的受控信道攻击无效(例如,基于访问位的攻击[54])。

SGX Shield[43]试图通过内存布局随机化来混淆内存访问。但由于它在加载时只随机化一次,因此可以通过在线评测【应该是分支预测攻击】来击败它[30]【[30]是branch shadowing】。

Oblivious execution(疏忽执行技术)[2,3,37,39,45]对在线评测是安全的,但会带来更高的性能开销。例如,deterministic multiplexing(确定性复用)[45]的运行时性能开销超过4000倍,多程序路径执行[37]的开销为9倍,OBFSCURO[2]的开销为简单基准测试的51倍。

在这项工作中,我们的目标是通过在安全保证和性能开销之间进行可调的权衡来击败受控信道攻击。在高层次上,我们提出的系统Klotski充当内存子系统。它由两个软件缓存(一个执行vCache和一个数据vCache)、一个软件内存管理单元(sMMU)和一个虚拟主内存组成。与物理CPU类似,所有执行的指令都是从执行vCache中提取的,所有数据都是从数据vCache中读取/写入的。sMMU将我们称之为逻辑地址的编译时虚拟地址转换为运行时虚拟地址(即硬件MMU的线性地址)。该机制允许我们将内存块加载到vCache的任何插槽中。为了在执行过程中混淆内存访问模式,sMMU使用Ring ORAM协议[38]来访问主内存。此外,由于“客户端”ORAM操作,包括对元数据的访问(例如,隐藏和位置图)也容易受到侧通道攻击,Klotski使用额外的保护措施,以确保在我们的威胁模型下,所有此类行动都不会被遗忘。最后,通过随机替换策略和强制刷新对vCache进行重新随机化

虽然上面的设计是安全的,并且类似于以前的工作[2,3,39],但简单的实现会带来非常高的性能开销。Klotski的另一个重要贡献是几种优化技术。首先,Klotski通过缓存结果来减少地址转换的次数。类似于硬件转换后备缓冲区(TLB),Klotski利用程序局部性来避免冗余的地址转换。其次,Klotskii改进了程序的局部性,以减少缓存替换的数量,包括对齐循环以避免交叉缓存块循环体,以及将常量重新定位到同一代码块。最后,Klotski通过可配置的参数提供了性能和安全性之间的可调权衡。在spectrum的一端,当开发人员选择较小的vCache大小(例如,4KB)时,Klotski可以保证不经意的执行,代价是更高的性能开销(大约10倍)。另一方面,开发人员可以选择使用更大的vCache大小(例如,足够工作集使用)来减少性能开销,代价是降低安全保证。然而,在实践中,随着vCache的重新随机化,对于大多数应用程序来说,即使是减少的安全保证也是合理的(见§6)。

我们已经基于Intel SDK for Linux、LLVM工具链和musl-libc实现了Klotski。我们的实验评估表明:

(1)Klotski对飞地程序的已知受控信道推断攻击是有效的,

(2)Klotsky与飞地程序具有良好的兼容性,

(3)在提供合理的安全保证的同时,Klotski在实际程序上施加的性能开销可以降低到1.3倍。

贡献

新的基于ORAM的防御控制信道攻击

我们设计并实现了一种新的模糊执行技术,以保护飞地程序免受受控通道攻击。我们的安全评估表明,我们的设计能够防止我们的威胁模型下的所有攻击

优化技术

我们开发了几种优化技术来减少开销。评估还表明,我们的优化技术非常有效,可以将性能提高6.7倍。对于实际应用,Klotski的性能也是可以接受的,只有2.3倍,在安全性方面有很好的平衡。

开源实现

我们实现了一个端到端的工具链,支持各种飞地程序。源代码和文档将在接受此工作后向公众开放(https://github.com/nczhang88pan/KlotskiSGX.git)。

背景

Intel SGX

SGX提供两种安全保障:机密性和完整性。

首先,它防止属于飞地的代码和数据在飞地之外被访问,包括特权软件,如操作系统和系统管理程序。

其次,它使用内存加密[22]来防止诸如窥探和冷启动之类的内存攻击。

它还维护飞地内存的完整性措施,以防止恶意篡改和重放攻击。当飞地内发生硬件异常/中断时,处理器在调用系统软件的异常处理程序之前生成异步飞地退出(AEX)。SGX首先将飞地的执行状态保存到状态保存区(SSA),并将所有寄存器重置为预定义值,以避免泄露机密。例如,当发生页面故障时,SGX将清除故障地址的最低12位。然后将控制权转移到异常处理程序。最后,在完成该过程之后,处理程序恢复飞地程序

(待更新)

http://www.lryc.cn/news/173099.html

相关文章:

  • 阿里云无影云电脑角色AliyunServiceRoleForGws什么意思?
  • 操作系统--------调度算法篇
  • 宝塔composer 安装laravel依赖出现的问题
  • OpenCV自学笔记二十四:支持向量机
  • 网络初识
  • 极坐标和直角坐标的雅克比矩阵推导
  • 经管博士科研基础【25】概率论中的相关基础概念
  • 计算机网络的相关知识点总结(一)
  • 下载github.com上的依赖资源
  • 编写 GPT 提示词的公式 + 资源分享
  • 用HTML、CSS和JavaScript制作的通用进制转换器
  • ArcGIS 10.3软件安装包下载及安装教程!
  • 【数据增强】
  • Ae 效果:CC Force Motion Blur
  • 2023华为杯研究生数学建模竞赛CDEF题思路+模型代码
  • FP独立站之黑科技:AB站收款、斗篷CLOAK
  • 【Linux网络编程】gdb调试技巧
  • ElementUI之登录与注册
  • 报错处理:Error: Redis server is running but Redis CLI cannot connect
  • RocketMQ 源码分析——Producer
  • ISTQB术语表
  • 小米笔试题——01背包问题变种
  • SkyWalking内置MQE语法
  • Springboot2 Pandas Pyecharts 量子科技专利课程设计大作业
  • RabbitMQ里的几个重要概念
  • 23. 图论 - 图的由来和构成
  • 拼多多API接口解析,实现根据ID取商品详情
  • 【JavaScript】解构
  • 现代卷积网络实战系列2:训练函数、PyTorch构建LeNet网络
  • rust特性