From f21f693bd7d324e0597535f3be9f77008663761d Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Thu, 30 May 2019 15:47:56 +0800 Subject: refine statements --- chap/chap3.tex | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/chap/chap3.tex b/chap/chap3.tex index 5cde315..8c68272 100644 --- a/chap/chap3.tex +++ b/chap/chap3.tex @@ -7,7 +7,7 @@ Meltdown 和 Spectre 及其多种变体被发现后,研究者提出了多种 Meltdown 型攻击利用了暂态指令可以读取体系结构层次上不可访问的数据,并且 用此数据做计算。因此一种防御方式是使体系结构层次上不可访问的数据,在微 -架构层次上仍然不可访问。 +架构层次上仍然不可访问。\supercite{systematic} KAISER\supercite{kaiser} 是一种已经部署在 Linux 内核上的一种防御 Meltdown 攻击的方案。它的作用是在用户空间中去除内核空间的地址映射,使 @@ -21,13 +21,16 @@ Meltdown 攻击的方案。它的作用是在用户空间中去除内核空间 Spectre 型攻击的防御方案可以分为三类:阻止推测式执行、防止暂态指令访问 秘密数据、切断隐蔽信道或降低隐蔽信道的精度。研究者在软件和硬件方面都提 -出了防御方案。 +出了防御方案。\supercite{systematic} + +阻止推测式执行的方式包括在程序中插入串行化指令、为泄露数据的指令添加数据依赖。 +防止暂态指令访问秘密数据的方法包括索引掩码(index masking)、指针投毒(pointer poisoning)、站点隔离(site isolation)等方法。 +切断隐蔽信道的方法包括降低计时器精度,以及 InvisiSpec, DAWG 等切断缓存信道的微架构设计。以下将已有的防御方法分为软件方法和硬件方法,对它们进行分析。 \subsection{软件防御方案} Intel 和 AMD 都提出了在分支指令后插入 lfence 指令阻止推测式执行的方 -法。\supercite{intel-spectre}\supercite{amd-spectre}lfence 指令在此作 -为一条串行化指令使用,可以在 lfence 指令提交前阻止新的指令执行,从而阻 +法\supercite{intel-spectre}\supercite{amd-spectre}。在 Spectre 的防御中,该指令作为一条串行化指令使用,阻止新的指令在 lfence 提交前执行,从而阻 止了程序在推测式执行中对秘密数据进行操作。 由于 lfence 性能开销大,LLVM 提出推测式装载加固(Speculative Load @@ -67,7 +70,7 @@ retpoline\supercite{retpoline} 是 Google 提出的防御 Spectre-BTB 的方法 % TODO:增加 retpoline 的代码? % index masking -Webkit 在数组访问中使用索引掩码(index masking)\supercite{webkit} 方 +Webkit 在数组访问中使用索引掩码\supercite{webkit} 方 法,它让数组下标和一个值进行与操作,去掉下标高位的1,将数组下标控制在 一定范围内,防止处理器在推测式执行中访问数组指定范围之外的数据。Linux 使用了一个粒度更细的索引掩码\supercite{linux-spec}, @@ -90,7 +93,7 @@ Webkit 在数组访问中使用索引掩码(index masking)\supercite{webkit} 在数组大小范围内。 % poison value -Webkit 还使用了指针投毒(pointer poisoning)\supercite{webkit}的方法, +Webkit 还使用了指针投毒\supercite{webkit}的方法, 它考虑分支用于做类型检查的情形。对于不同类型的数据,Webkit 将这种类型的 指针和一个类型对应的值异或,要使用的时候再异或这个值得到指向数据的指针, 如果类型不匹配,则得到的指针会指向一个程序无法访问的内存区域。通过这种 @@ -98,7 +101,7 @@ Webkit 还使用了指针投毒(pointer poisoning)\supercite{webkit}的方 秘密数据的泄露。 % site isolation -Google 为 Chrome 浏览器使用了站点隔离(site isolation)技术,使得浏览 +Google 为 Chrome 浏览器使用了站点隔离技术,使得浏览 器用不同的进程访问不同的网站,从而攻击者无法通过用 Javascript 通过侧信 道攻击获取另一站点相关的数据。\supercite{here-to-stay} -- cgit v1.2.3