summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2019-05-15 08:55:18 +0800
committerIru Cai <mytbk920423@gmail.com>2019-05-15 08:55:18 +0800
commitf2e79906f0681735649a4991fdd45742ee65b999 (patch)
treea75572ddb7c1f38435c946f9b92c71b593ea6dcd
parent264d2f866382b7409cc9ff6eb1620373822e0071 (diff)
downloaddissertation-f2e79906f0681735649a4991fdd45742ee65b999.tar.xz
upd
-rw-r--r--chap/chap3.tex21
1 files changed, 9 insertions, 12 deletions
diff --git a/chap/chap3.tex b/chap/chap3.tex
index 045e9a8..85885cd 100644
--- a/chap/chap3.tex
+++ b/chap/chap3.tex
@@ -161,19 +161,11 @@ SafeSpec 防止推测式执行的产生的值影响提交状态,从而阻止
替换影子状态中的条目,使得接收者发现其推测式执行状态丢失。如果在影子状
态满时阻塞执行,接收者可以发现它的执行时间变长。
-SafeSpec 的一个问题是如果一个长延迟指令,例如从内存中读取数据的指令,
-在执行过程中被取消,它的状态需要丢弃。因此,如果一个长延迟指令的结果返回,
+%SafeSpec 的一个问题是如果一个长延迟指令,例如从内存中读取数据的指令,
+%在执行过程中被取消,它的状态需要丢弃。因此,如果一个长延迟指令的结果返回,
+%而没有匹配的事务,则丢弃这个结果。
-
-如果指令已经启动了高延迟操作,例如从内存中读取,我们必须确保在收到内存
-后可以丢弃内存中的响应。 执行的指令推测性地将任何结果状态存储到阴影结
-构。 因此,如果收到长等待时间回复并且没有匹配的事务,我们只是丢弃这些
-值。 然而,也可能希望在系统中较低地过滤这些事务,使得提交的事务直接提
-交,并且压缩的事务在适当的位置被取消。 为了控制此过滤器的大小,我们可
-以在分支粒度中包含一个带有事务和跟踪操作的分支ID。 过滤器还可用于标记
-已提交的分支,以便与其对应的内存响应直接提交到永久结构。
-
-\Todo: SafeSpec for caches and TLB
+%\Todo: SafeSpec for caches and TLB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{InvisiSpec}
@@ -761,6 +753,11 @@ Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将
次上无法访问体系结构层次上无法访问的数据,即可以阻止 Meltdown 型攻击。
在现有的处理器中,需要使用 KAISER 等防御方案,会造成一定性能的损失。
+SafeSpec 和 InvisiSpec 也将防御 Meltdown 型攻击作为它们的目标之一,但
+是在现有的 Meltdown 型攻击中,泄露数据的隐蔽信道由攻击者构造,攻击者可
+以利用缓存之外的信道泄露数据,因此只阻止缓存信道不能有效地防御
+Meltdown 型攻击。
+
Spectre 攻击的防御相对复杂。对于软件防御方案,在分支后添加串行化指令或
数据依赖,阻止推测式执行的发生,会有 30\% 以上的性能下降。
\supercite{spec-load-hardening} 使用静态分析工具