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位。然后将控制权转移到异常处理程序。最后,在完成该过程之后,处理程序恢复飞地程序。
(待更新)
相关文章:
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 Soft…...
阿里云无影云电脑角色AliyunServiceRoleForGws什么意思?
阿里云无影云电脑服务关联角色是指角色名称:AliyunServiceRoleForGws,并赋予角色权限策略:AliyunServiceRolePolicyForGws的过程,简单来说,就是允许无影云电脑服务访问您VPC、CEN和NAS中的资源,使用该权限查…...
操作系统--------调度算法篇
目录 一.先来先服务调度算法(FCFS) 二.短作业优先调度算法(SJF) 2.1.SJF调度算法缺点 三.优先级调度算法 3.1优先级调度算法的类型 1.非抢占优先级调度算法 2.抢占优先级调度算法 3.2优先级的类型 3.1静态优先级 3.2动态…...
宝塔composer 安装laravel依赖出现的问题
环境宝塔、PHP版本8.0.2、laravel9 问题1:PHP Fatal error: Uncaught Error: Call to undefined function Composer\XdebugHandler\putenv() 办法:把PHP版本disable_functions这个中的putenv去掉,这个意思就是putenv被PHP对应的版本禁用了&…...
OpenCV自学笔记二十四:支持向量机
在OpenCV中,支持向量机(Support Vector Machine,简称SVM)算法的实现包含在ml模块中。SVM是一种常用的监督学习算法,主要用于分类问题。 SVM的原理:通过在特征空间中找到一个最优超平面,将不同类…...
网络初识
一 IP 地址 概念: IP 地址主要用于表示网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址 格式 IP 地址是一个32为的二进制数,通常被分割为4个“8位二进制数“(也就是4个字节&…...
极坐标和直角坐标的雅克比矩阵推导
我们经常需要在一些问题中研究坐标系的关系,这里讲讲最常见的极坐标和直角坐标的雅克比矩阵的推导。以二维坐标为例,三维坐标也是同理。 1. 直角坐标和极坐标 直角坐标表示为 ( x , y ) (x,y) (x,y),极坐标表示为 ( ρ , φ ) (\rho,\varph…...
经管博士科研基础【25】概率论中的相关基础概念
1. Support 在概率论中,"support"(支撑集)是指随机变量可能取值的集合。对于离散型随机变量,支撑集包含了所有可能的取值;而对于连续型随机变量,支撑集是指其密度函数或概率质量函数非零的区域。…...
计算机网络的相关知识点总结(一)
1.谈一谈对OSI七层模型和TCP/IP四层模型的理解? 不管是OSI七层模型亦或是TCP/IP四层模型,它们的提出都有一个共同的目的:通过分层来将复杂问题细化,通过各个层级之间的相互配合来更好的解决计算机中出现的问题。 说到分层…...
下载github.com上的依赖资源
下载github.com上的依赖资源(需要反复试才能成功,所以单独安装) export GIT_TRACE1 export GIT_CURL_VERBOSE1 pip install githttps://github.com/PanQiWei/AutoGPTQ.git -i https://pypi.mirrors.ustc.edu.cn/simple --trusted-hostpypi.mi…...
编写 GPT 提示词的公式 + 资源分享
GPT 能够给我们带来很大的帮助,因此我们要好好利用它。我们希望 GPT 输出令我们满意的内容,影响 GPT 输出内容的因素有模型和输入(Prompt,提示词)。 模型:我们可以选择不同的 GPT 产品,它们的模…...
用HTML、CSS和JavaScript制作的通用进制转换器
随着编程和计算机科学越来越受欢迎,我们经常需要进行进制转换。本文将介绍一个简洁、美观、适用于移动设备的进制转换工具,并详细讨论其实现。 目录 🌍 用HTML、CSS和JavaScript制作的通用进制转换器 1.项目图片展示 2. 技术栈 3. 主要功…...
ArcGIS 10.3软件安装包下载及安装教程!
【软件名称】:ArcGIS 10.3 【安装环境】:Windows 【下载链接 】: 链接:https://pan.baidu.com/s/1K5ab7IHMYa23HpmuPkFa1A 提取码:oxbb 复制这段内容后打开百度网盘手机App,操作更方便哦 软件解压码点击原文…...
【数据增强】
【数据增强】 1 数据增强的情形2 数据增强的方法 1 数据增强的情形 当数据比较小,难以获取新的训练数据时,可以考虑数据增强,如随机裁剪部分,随机左右上下翻转、随机旋转一个角度、随机亮度变化等微小变化,数据的多样…...
Ae 效果:CC Force Motion Blur
时间/CC Force Motion Blur Time/CC Force Motion Blur CC Force Motion Blur (CC 强制运动模糊)主要用于为动态图像添加强制的运动模糊效果,增加动态画面的流畅感和真实感。 相对于时间轴面板上的“运动模糊”开关,CC Force Moti…...
2023华为杯研究生数学建模竞赛CDEF题思路+模型代码
全程更新华为杯研赛CDEF题思路模型及代码,大家查看文末名片获取 华为杯C题思路分析 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作…...
FP独立站之黑科技:AB站收款、斗篷CLOAK
最近一段时间经常有不少小伙伴来咨询我独立站的相关的业务,因为很多独立站卖家觉得独立站不好做,再加上跨境平台禁止特货类产品的销售(如FP产品、成人用品、电子烟、灰黑类产品等等),但这类产品市场需求大,…...
【Linux网络编程】gdb调试技巧
这篇博客主要要记录一下自己在Linux操作系统Ubuntu下使用gbd调试程序的一些指令,以及使用过程中的一些心得。 使用方法 可以使用如下代码 gcc -g test.c -o test 或者 gcc test.c -o test -g的选项最好添加,如果不添加,l指令无法被识别 …...
ElementUI之登录与注册
目录 一.前言 二.ElementUI的简介 三.登录注册前端界面的开发 三.vue axios前后端交互--- Get请求 四.vue axios前后端交互--- Post请求 五.跨域问题 一.前言 这一篇的知识点在前面两篇的博客中就已经详细详解啦,包括如何环境搭建和如何建一个spa项目等等知识…...
报错处理:Error: Redis server is running but Redis CLI cannot connect
嗨,读者朋友们!今天我来跟大家分享一个我在运维过程中遇到的一个关于Linux上运行Redis服务时的报错及解决方法。 报错信息如下: Error: Redis server is running but Redis CLI cannot connect 这个报错信息表明Redis服务器已经运行ÿ…...
RocketMQ 源码分析——Producer
文章目录 消息发送代码实现消息发送者启动流程检查配置获得MQ客户端实例启动实例定时任务 Producer 消息发送流程选择队列默认选择队列策略故障延迟机制策略*两种策略的选择 技术亮点:ThreadLocal 消息发送代码实现 下面是一个生产者发送消息的demo(同步发送&#…...
ISTQB术语表
此术语表为国际软件测试认证委员会(ISTQB)发布的标准术语表。此表历经数次修改、完善,集纳了计算机行业界、商业界及政府相关机构的见解及意见,在国际化的层面上达到了罕有的统一性及一致性。参与编制此表的国际团体包括澳大利亚、…...
小米笔试题——01背包问题变种
这段代码的主要思路是使用动态规划来构建一个二维数组 dp,其中 dp[i][j] 表示前 i 个产品是否可以组合出金额 j。通过遍历产品列表和可能的目标金额,不断更新 dp 数组中的值,最终返回 dp[N][M] 来判断是否可以组合出目标金额 M。如果 dp[N][M…...
SkyWalking内置MQE语法
此文档出自SkyWalking官方git https://github.com/apache/skywalking docs/en/api/metrics-query-expression.md Metrics Query Expression(MQE) Syntax MQE is a string that consists of one or more expressions. Each expression could be a combination of one or more …...
Springboot2 Pandas Pyecharts 量子科技专利课程设计大作业
数据集介绍 1.背景 根据《中国科学:信息科学》期刊上的一篇文章,量子通信包括多种协议与应用类型: 基于量子隐形传态与量子存储中继等技术,可实现量子态信息传输,进而构建量子信息网络,已成为当前科研热点&…...
RabbitMQ里的几个重要概念
RabbitMQ中的一些角色: publisher:生产者consumer:消费者exchange个:交换机,负责消息路由,接受生产者发送的消息,把消息发送到一个或多个队列里queue:队列,存储消息virt…...
23. 图论 - 图的由来和构成
文章目录 图的由来图的构成Hi, 你好。我是茶桁。 从第一节课上到现在,我基本上把和人工智能相关的一些数学知识都教给大家了,终于来到我们人工智能数学的最后一个部分了,让我们从今天开始进入「图论」。 图论其实是一个比较有趣的领域,因为微积分其实更多的是对应连续型的…...
拼多多API接口解析,实现根据ID取商品详情
拼多多是一个流行的电商平台,它提供了API接口供开发者使用。要根据ID获取商品详情,您需要使用拼多多API接口并进行相应的请求。 以下是使用拼多多API接口根据ID获取商品详情的示例代码(使用Python编写): import requ…...
【JavaScript】解构
解构(Destructuring)是 JavaScript 中一种强大的语法特性,它允许你从数组或对象中提取值并赋值给变量,使代码更加简洁和易读。JavaScript 中有两种主要的解构语法:数组解构和对象解构。 数组解构 数组解构用于从数组…...
现代卷积网络实战系列2:训练函数、PyTorch构建LeNet网络
4、训练函数 4.1 调用训练函数 train(epochs, net, train_loader, device, optimizer, test_loader, true_value)因为每一个epoch训练结束后,我们需要测试一下这个网络的性能,所有会在训练函数中频繁调用测试函数,所有测试函数中所有需要的…...
网站选项卡如何做自适应/杭州seo顾问
https://access.redhat.com/documentation/en-us/reference_architectures/current/ 搜索oracle即可。...
解决wordpress主题缺少style.css无法安装的方法/谷歌seo推广培训班
一、docker是什么 1、为什么会有docker 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后…...
牛商网做的网站怎么样/怎么网络推广
这个是Ralph kimball ETL的书籍,其中第10章主要讲如何管理数据仓库团队,ETL团队是属于数据仓库团队的;第一章和第二章是概况性的介绍,强烈建议大家都看下1/2/10章,对于大家形成对数据仓库和ETL共同的认识。 下面和大家…...
网站如何做企业电子宣传册/产品营销网站建设
1、 数据库建表如何加密:采用哈希函数散列的方式将密码进行加密,此过程不可逆. 插入数据: --创建表; ----用户表; CREATE TABLE tb_User (No CHAR(10) NOT NULL PRIMARY KEY ,Password VARBINARY(128) NOT …...
个性网站制作/百度搜索引擎推广步骤
我有一个表单验证问题。下面是提交时发生的逻辑(至少是其中的一部分)。在for循环中,我们检查一个站点访问者可以注册的可能事件数组。如果用户没有检查任何事件(这些是复选框,因为用户可以注册多个事件),我们应该在下面输入第二条if语句&…...
东圃网站建设/国家新闻最新消息今天
应用示例:这里我们假设Master-Slave已经建立。#启动master服务器。[rootStephen-PC redis]# redis-cli -p 6379redis 127.0.0.1:6379>#情况Master当前数据库中的所有Keys。redis 127.0.0.1:6379> flushdbOK#在Master中创建新的Keys作为测试数据。redis 127.0.…...