summaryrefslogtreecommitdiff
path: root/chap/chap2.tex
diff options
context:
space:
mode:
Diffstat (limited to 'chap/chap2.tex')
-rw-r--r--chap/chap2.tex40
1 files changed, 35 insertions, 5 deletions
diff --git a/chap/chap2.tex b/chap/chap2.tex
index 9a0b39c..0366d03 100644
--- a/chap/chap2.tex
+++ b/chap/chap2.tex
@@ -397,6 +397,11 @@ Spectre 型攻击利用处理器对控制流或数据流的预测,并进行推
推测式执行这样的 load 指令,它对应 Spectre-STL.
%%%% gtran: branch prediction
+
+\Todo: 关于处理器执行转移指令的背景知识,是否需要?
+
+\Fixme: 需要重新翻译的内容
+
在推测执行期间,处理器猜测分支指令的可能结果。更好的预测通过增加可成功
提交的推测性执行操作的数量来提高性能。
@@ -435,10 +440,14 @@ BTB。
%%%%%%%%%%%%%%%%%%%%%% gtran: attack overview %%%%%%%%%%%%%%%%%%%%%%%5
-幽灵攻击诱使受害者推测性地执行在程序指令的严格序列化有序处理期间不会发
-生的操作,并且通过隐蔽通道将受害者的机密信息泄露给对手。我们首先描述利
-用条件分支错误预测的变体(第IV部分),然后利用对间接分支目标的错误预测
-的变体(第V部分)。
+\verb|TODO|: Spectre 攻击的 attack overview
+
+\Fixme: 重新翻译此部分
+
+Spectre 攻击诱使受害者推测性地执行在程序指令的严格序列化有序处理期间不
+会发生的操作,并且通过隐蔽通道将受害者的机密信息泄露给对手。我们首先描
+述利用条件分支错误预测的变体(第IV部分),然后利用对间接分支目标的错误
+预测的变体(第V部分)。
在大多数情况下,攻击从设置阶段开始,其中攻击者执行操作以误导处理器,以
便稍后进行可利用的错误推测预测。此外,设置阶段通常包括有助于引发推测性
@@ -475,6 +484,13 @@ if (x < array1_size)
%%%%%%%%%%%%%%%%%%%%%%% gtran: spectre v1 %%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\verb|TODO|: Spectre 论文中 Spectre v1 的内容
+
+\verb|TODO|: 解释 Spectre 攻击中这段代码的运行方式,关于在 Javascript 和 eBPF 下的攻击
+
+\Fixme: 重新翻译
+
代码片段以对x的边界检查开始,这对于安全性是必不可少的。特别是,此检查
可防止处理器读取array1外部的敏感内存。否则,越界输入x可能触发异常或者
可能导致处理器通过提供x =(要读取的秘密字节的地址)来访问敏感存储器 -
@@ -602,9 +618,10 @@ eBPF子系统管理存储在内核内存中的数据结构。用户可以请求
和丢弃引用另一个物理内核上的eBPF阵列的eBPF程序来完成的,这会导致内核在
另一个物理内核上递增和递减阵列的引用计数器。这种攻击在Haswell CPU上实
现了大约5000B / s的泄漏率。
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\verb|TODO|: Spectre v1.1的内容,需要更详细地解释攻击原理
推测式缓冲区溢出(Speculative Buffer Overflow)
\supercite{spec-buffer-overflow} 是 Spectre-PHT 的另一种形式。处理器存
@@ -669,6 +686,11 @@ Spectre v2 利用间接转移的推测式执行,用于预测间接转移的主
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% gtran %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\verb|TODO|: Spectre 的论文中关于 Spectre v2 一节的剩余内容,一直到实验结果部
+分
+
+\Fixme: 重新翻译以下内容
+
许多其他攻击是可能的,这取决于对手所知道或控制的状态,对手所寻求的信息
所在的位置(例如,寄存器,堆栈,内存等),对手控制推测执行的能力,指令
序列可用于形成小工具,以及哪些渠道可能会泄漏来自投机操作的信息。例如,
@@ -744,6 +766,10 @@ Prime+Probe 方式进行 Meltdown 和 Spectre 攻击的形式。通过利用缓
%%%%%%%%%%%%%%%%%% gtran %%%%%%%%%%%%%%%%%%%%%%%%%%%
+\verb|TODO|: NetSpectre 的 introduction
+
+\Fixme: 重新翻译此内容
+
迄今为止,在JavaScript [48]和本机代码[15,48,58,75]中已经证明了幽灵攻击,
但是任何允许足够精确的定时测量和某种形式的代码执行的环境都可能实现这些
攻击。对英特尔SGX飞地的攻击表明,飞地也容易受到幽灵攻击[15]。但是,有
@@ -800,6 +826,10 @@ NetSpectre标志着从本地攻击到远程攻击的范式转变。这显着扩
%%%%%%%%%%%%%%%%% gtran %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\verb|TODO|: NetSpectre 的 attack overview
+
+\Fixme: 重新翻译
+
在知道实际条件之前,CPU预测条件的最可能结果,然后继续相应的代码路径。
有几个原因导致在评估时不知道条件的结果,例如条件的部分缓存未命中,尚未
满足的复杂依赖性,或者所需执行单元中的瓶颈。通过隐藏这些延迟,如果条件