DAWG: A Defense Against Cache Timing Attacks in Speculative Execution Processors

  1. 摘要:

    • 由于推测式执行的问题,软件的侧信道攻击更加的严重。同时大部分的软件攻击都是利用cache tag的状态作为信息的泄露通道,大部分的软件防御措施可以修补特定的攻击,但是被可以规避
    • 文章建议通过对硬件很小的修改,以抵御广泛的攻击,包括基于推测执行的攻击,从而消除与cache tag状态相关的隐蔽信道攻击的整个攻击面
    • DWAG:Dynamically Allocated Way Guard,用于组相连的结构(包括memory caches)的安全路划分(way partitioning)的一种通用机制
    • DWAG为组相连的结构提供了一个保护域的概念来提供强隔离,当应用缓存时,DAWG完全隔离保护域中的命中,缺失和数据更新
  2. 介绍:

    • 违反隔离(violating isolation):可以在不破化程序执行(violating integrity 完整性违反)的情况下,获取到受害者的信息,例如通过直接/间接读取内存信息、根据程序的控制流判断等。
    • 为了防止数据溢出,必须在保护域之间有很强的隔离,能够阻止数据发射器和接收器不会共享同一个通道。DAWG为组相连结构提供一个保护域的概念,以提供强隔离。DAWG禁止跨保护域的命中,对于cache一致性也有隔离。只有在少数几个例程中,DAWG需要使用推测执行的栅栏来进行保护
    • 论文贡献:
      • 为使用元数据的cache替换策略提供强隔离,因为在路划分的cache中,替换策略也可以泄露信息
      • 提出了一种新的路划分策略(DAWG),能够提供强大的隔离属性,以阻止基于cache状态的侧信道攻击。同时DAWG不需要对操作系统进行太深入的更改。
      • 分析了DAWG的安全性,使用DAWG测试了一些最近的利用推测式执行和cache的侧信道攻击
      • 分析了利用cache partition进行隔离的局限性,同时评估了DAWG的性能影响
  3. 相关工作介绍

    • thread model

      • 文章重点在于阻塞利用缓存的状态进行侧信道攻击的方法,对于其它的侧信道攻击则不受影响,例如:L3 cache slice的争用,L2 cache bank争用,NoC,Dram带宽争用,分支结构,TLB,核内的共享功能的单元
      • 攻击者可以不是特权级别的,受害者可以是特权级别的代码(例如内核)或者是非特权进程
    • 攻击方式:提前设置cache的状态为某一个值,在受害者运行之后,通过观察cache状态的变化来收集受害者信息(还有根据cache的一致性状态和替换策略的元数据的变化)
      • 基于cache tag状态的攻击:通过非特权软件即可,但是需要与受害者共享cache lines。三种方式:flush+reload、prime+probe、evict+reload。
      • 基于cache的元数据(状态等信息)攻击:每个set的替换策略的元数据可以作为一个信道,传递信息。有些策略允许在一个保护域中的访问会影响到另一个保护域中的cache victim选择。安全分区的cache必须保证替换策略的元数据不允许信息跨域分区流动
    • 防护攻击:可以分为五类,每一类对应于攻击的一步
      • 阻止访问私有数据。例如KAISER,在用户模式下,删除内核内存的虚拟地址映射,可以防御meltdown
      • 加大形成data tap的难度。例如随机化代码的虚拟地址,刷新BTB
      • 阻碍data tap的执行。通过权限检查,不进行推测式执行;保持分支预测器的状态在不同的保护域之间的正确划分
      • 减少侧信道的带宽。例如删除高精度测量时间的API
      • 关闭侧信道:阻止攻击者和受害者访问同一个信道,例如使用划分得方式
  4. 论文想法的一些来源

    • 利用页着色划分cache set:不同保护域的数据将不再占用相同的cache set

      • 优点:组划分允许在保护域之间进行通信,并且不会破坏cache的一致性协议
      • 缺点:页着色意味着cache set分配和物理地址分配绑定在了一起,此时在分配cache set时,需要特权软件移动内存中的数据,使得物理地址和分配的cache set相对应
      • 缺点:页着色不能够直接和大页面兼容,因此会降低进程的TLB的范围
    • 细粒度的路划分(CAT,Intel‘s Cache Allocation Technology)
      • CAT可以为每个逻辑进程分配LLC的缓存路,同时CAT保证在一个保护域中的cache填充,不会引起另一个保护域中的cache way被替换出去。但是缓存的命中行为和一般的缓存行为相同
      • 优点:通过QoS机制,CAT动态调整每个进程的路的配置,从而能够更高效的使用LLC,提高系统性能
      • 缺点:CAT的分区不足以阻塞所有基于cache状态的侧信道。攻击者和受害者可能共享着某些页面,通过测量共享地址的load,能够判断cache是否命中。
      • 缺点:CAT管理的cache的替换策略元数据仍旧是在保护域之间共享的
    • 减少从cache中泄露的私有数据
      • SHARP,RIC,PLcache,RFill, RPcache, CATalyst, SecDCP
  5. DAWG的硬件设计

    • 高层设计(high-level design)

      • DAWG的保护域之间缓存路和元数据都不相交,除非保护域可以嵌套,以允许受信任的特权软件访问在其权限范围内分配给保护域的所有路和元数据
      • 硬件结构图:高亮的部分为额外的硬件,每个Core的额外的硬件状态是24bits*支持的硬件线程数,每个cache需要256bits来描述每个保护域的允许命中和填充的缓存路
    • DAWG的隔离策略

      • DAWG的保护域是由软件设定的高级属性,在硬件上通过一些表进行policy配置,用于执行DAWG的cache隔离。这些表保存在DAWG缓存的MSRs寄存器中(特用于模型的寄存器)。系统软件通过更改MSRs的内容来配置每个保护域的策略
      • 在进行cache的访问时,访问请求需要包含可以指明保护域的信息
      • policy的组成:policy_fillmap(一个位向量,用于在cache替换或者填充的时候使用),policy_hitmap(位向量,用于在cache访问的时候使用)
    • DAWG对core的修改

      • 每个逻辑核(硬件线程)必须能够使用正确的dmain_id正确的标记内存访问类型,因此为每个逻辑核的MSR domain_id字段赋予三种可被DAWG识别的访问类型:ifetches(指令缓存访问),loads(只读访问,load,flushes等),stores(会修改cache行状态)
      • Domain_id的位宽会限制同时计划在整个系统中执行的保护域的数量,最小为1(内核/用户)
      • 针对MSR的domain_id,policy_hitmap,policy_fillmap的写操作必须是Fence类型的指令,不能够推测执行
    • DAWG的缓存替换/填充隔离

      • 在DAWG缓冲中的cache miss不会影响到保护域之外的缓存行/路被替换或者填充,从而保证隔离。通过保护域的policy_fillmap来确定哪些路是属于该进程的
      • DAWG同时限制了clflush指令的执行,保证不会跨越保护域
    • DAWG cache的元数据(包括替换策略和cache的一致性状态)隔离

      • 元数据的更新逻辑使用tag比较,从所有路中选择tag命中的更改替换策略的状态
      • DAWG不会通过一致性的元数据泄露,因为一致性状态更改也是受保护域所标记,不会更改其它保护域的cache行
      • 在替换策略上,替换行的选择不能够收到其它保护域的操作影响,并且软件必须能够在保护域的动态调整过程中,修改缓存路的替换元数据
    • DAWG缓存的命中隔离:cache的关键路径会有改动

      • 一个cache访问不能够在未分配的cache way上发生命中(保护域之间有物理地址是共享的)

      • 在DAWG中,tag比较需要将policy_hitmap包含进去,防止跨保护域的命中。在命中之后的元数据更新时,也需要根据policy_hitmap来更新替换策略的状态

    • 保护域之间共享的缓存行

      • DAWG处理不同进程的共享数据的方式是在每个保护域中复制一份副本,分开处理。但是因此就会出现一致性的问题
      • 解决:DAWG需要一个新的特权MSR,该MSR可以在给定地址的情况下,不管保护域如何,使得所有共享的cache line无效
    • 动态的分配每个保护域的路数(根据负载的变化,动态的调整)

      • 为了重新分配DAWG缓存方式,在创建或修改系统保护域时,必须使cache way无效,销毁所有cache tag和元数据中的私有数据。如果是WB cache,则所有脏数据必须写回或者在cache set内交换
      • 为了刷新cache line或者写回 cache line,DAWG在硬件上提供了相应的机制,允许特权软件合理的进行路刷新
  6. DAWG的软件修改

    • DAWG策略的软件管理(domain_id,policy_hitmap,policy_fillmap)

      • DAWG的资源分配:当cache的路数最大为16时,意味着最多同时可并发的保护域只有16个,如果系统需要更多,则需要使用分时复用的方式虚拟化保护域,并且在切换的时候需要刷新所有信息。dawg_policy:表结构,用于跟踪每个保护域的资源(cache ways)。表中记录着domain_id和policy_hitmap, policy_fillmap的映射关系。内核利用该表管理保护域的创建,调整和销毁等操作

      • 安全动态的缓存路重新分配:1) 更新policy_fillmap MSR寄存器的内容,不再允许填充被删除的路

        1. flush所有重新分配的cache ways; 3) 更新policy_hitmap MSR寄存器,从中排除被移除的ways;4) 更新policy_hitmap和policy_fillmap MSR寄存器,从而允许将ways增加到新的保护域中
      • 代码优先级:分别为代码和数据提供分开的预选择器。因为在某些场景中L2 cache中的指令miss率非常高,并且提高代码优先级能够降低不允许跨保护域共享代码的性能影响

    • 内核的变化:为了解决系统调用的问题

      • DAWG增加了带有注解的SMAP(supervisor mode access prevention,允许管理员模式程序在访问用户空间数据时产生陷阱)部分:在现有SMAP的基础上,添加简短的指令序列,对domain_id向MSR的写添加注解:ifetch和store是在内核中进行,而load访问在调用者(用户)的保护域进行,从而实现从用户到内核的数据迁移,并且保留了保护域之间的隔离。在数据移动完成后,domain_id的MSR被恢复,即所有操作都在内核的保护域执行
      • 只读和copy-on-write的跨域共享:针对于一个跨保护域共享的只读页面的写操作会使得OS使用页面所在的保护域的domain_id进行读操作,然后使用写操作的domain_id进行写操作,从而在写操作的所有者的保护域创建一个新的私有的副本
      • 回收共享的物理页面:在删除保护域中的共享页面时,OS必须使得属于该页面的所有cache line无效
  7. 安全分析:

    • DAWG的隔离属性:一个保护域中的程序在执行时的hit/miss不会受到其它保护域的程序行为影响,因此DAWG能够阻碍利用cache tag和metadata的信道的被DAWG隔离的非通信进程

    • 系统调用不会泄露数据

    • DAWG的限制:有些攻击仍旧无法防止。例如接收者调用API函数访问私有数据,然后会影响私有的cache way的状态。然后接受者通过另一个API调用的执行时间长短来提取信息(利用syscall 完成时间信道来传递数据)

DAWG A Defense Against Cache Timing Attacks in Speculative Execution Processors相关推荐

  1. Randomized Last-Level Caches Are Still Vulnerable to Cache Side-Channel Attacks! But We Can Fix It浅析

    Randomized Last-Level Caches Are Still Vulnerable to Cache Side-Channel Attacks! But We Can Fix It 论 ...

  2. NDA:Preventing Speculative Execution Attacks at Their Source

    NDA: Preventing Speculative Execution Attacks at Their Source Main Point & Result Two attacks ty ...

  3. javascript,chrome与幽灵攻击---JavaScript,chrome with Spectre Attacks

    javascript,chrome与幽灵攻击 ----JavaScript,chrome with Spectre Attacks 本文主要介绍曾经沸沸扬扬的CPU幽灵及熔断漏洞,以幽灵漏洞为主.之后 ...

  4. Meltdown: Reading Kernel Memory from User Space论文翻译

    Meltdown: Reading Kernel Memory from User Space翻译 摘要(Abstract) The security of computer systems fund ...

  5.  Meltdown论文翻译【转】

    转自:http://www.wowotech.net/basic_subject/meltdown.html#6596 摘要(Abstract) The security of computer sy ...

  6. Meltdown 论文翻译

    摘要(Abstract) The security of computer systems fundamentally relies on memory isolation, e.g., kernel ...

  7. FPGA2016~2018,FPL2017会议论文整理

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 目录  FPGA2016会议论文 FPGA2017会议论文 FPGA2018会议论文 FPL2 ...

  8. Android平台安全模型(The Android Platform Security Model)

    版权声明:本文为CSDN博主「ashimida@」翻译的文章,转载请附上出处链接和本声明. 本文链接:https://blog.csdn.net/lidan113lidan/article/detai ...

  9. 带你了解5个幽灵攻击与编译器中的消减方法

    摘要:幽灵攻击包括诱使受害者投机性地执行在正确程序执行期间不会发生的操作,并通过侧通道将受害者的机密信息泄露给攻击者. 本文分享自华为云社区<幽灵攻击与编译器中的消减方法介绍>,作者:毕昇 ...

最新文章

  1. c2 链路_POS链路不能打开的解决办法
  2. 如何提高创作型任务的效率?
  3. 计算机专业多媒体技术学什么,计算机多媒体技术需要学习哪些知识
  4. linux 查看历史打印,2019-02-01 Linux查看用户/历史命令
  5. 解决问题:Couldn't open file: data/coco.names
  6. 设置centos上的redis可以被访问
  7. linux系统下常用的打包/解压缩包命令
  8. 关于Maven的7个问题
  9. 魔力服务器修改器,魔力宝贝修改器
  10. 高斯过程分类和高斯过程回归_高斯过程回归建模入门
  11. WPS中的word如何取消英文首字母大写
  12. 带你了解“不拘一格去创新,别出心裁入场景”的锐捷
  13. Django: OperationalError no such table
  14. 收藏一篇访谈并做笔记:《[独家]与周鸿祎谈乔布斯》
  15. cas19660-77-6/Chlorin E6/二氢卟吩 E6;meso-四(4-甲基-3-磺酸苯基)卟啉[简称T(4-MP)PS4];碘化四(4-三甲氨基苯基)卟啉(TTMAPPI)齐岳定制
  16. 10款手机网页模板_手机wap网站模板_html5手机网站模板源码下载(三)
  17. 基于VS Code搭建通用ARM微控制器开发平台
  18. mac 查ip linux,如何通过mac地址查ip,手把手教你Mac怎么查看ip地址
  19. laravel组件单独加载(2):模型 Eloquent ORM
  20. 【OCR】EAST算法讲解及实现

热门文章

  1. LSA/LSI算法原理和实践
  2. 在windows11环境下如何通过主机名ping通其它系统
  3. S1到S9,545名职业选手,有多少人折戟全球总决赛?
  4. 网卡驱动学习五、hostapd 移植测试
  5. 轻松解决 “Error creating bean with name 'indentDao' defined in file”的错误(一)
  6. svn版本库浏览器_WebSVN—在线版本库浏览器
  7. dell 服务器面板显示屏,Dell服务器面板错误码详解
  8. 编程趣味知识:固执的“and”和变通的“or”
  9. 学习笔记:直面配分函数(待完善)
  10. https://www.52pojie.cn/thread-688820-1-1.html