summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2019-05-30 15:47:56 +0800
committerIru Cai <mytbk920423@gmail.com>2019-05-30 15:47:56 +0800
commitf21f693bd7d324e0597535f3be9f77008663761d (patch)
tree309bb2261a93fb87b03e06ff47e22bc718d0df8e
parenta02ff84a3b835f516e4e646b03773a49d5c3685b (diff)
downloaddissertation-f21f693bd7d324e0597535f3be9f77008663761d.tar.xz
refine statements
-rw-r--r--chap/chap3.tex17
1 files 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}