summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2019-05-08 16:11:05 +0800
committerIru Cai <mytbk920423@gmail.com>2019-05-08 16:11:05 +0800
commit33eed330c57290e7834702e1d719538640e4bea9 (patch)
tree8c902a9fb2ae5edeaafc0cc97621590df7374896
parent05a0d7753a2bc32d51d6e8424a7141417efcd860 (diff)
downloaddissertation-33eed330c57290e7834702e1d719538640e4bea9.tar.xz
upd
-rw-r--r--chap/chap1.tex4
-rw-r--r--chap/chap2.tex34
2 files changed, 30 insertions, 8 deletions
diff --git a/chap/chap1.tex b/chap/chap1.tex
index e4ec1f6..4b26c79 100644
--- a/chap/chap1.tex
+++ b/chap/chap1.tex
@@ -49,10 +49,10 @@ DRAM、crossbar等组件,通过使用Ruby存储系统,还可以模拟自定
本文的组织结构如下:
-第\ref{sec:intro}章~\nameref{sec:intro}。阐述本文的选题背景和研究意义、研究平台与环境,并简述论文
+第一章~\nameref{sec:intro}。阐述本文的选题背景和研究意义、研究平台与环境,并简述论文
的组织结构。
-第\ref{sec:attack}章~\nameref{sec:attack}。分析已经发现的 Meltdown 和
+第二章~\nameref{sec:attack}。分析已经发现的 Meltdown 和
Spectre 攻击的各个变体。
第三章~\nameref{sec:defense}。对已经提出的 Meltdown 和
diff --git a/chap/chap2.tex b/chap/chap2.tex
index df129b4..0dd4296 100644
--- a/chap/chap2.tex
+++ b/chap/chap2.tex
@@ -37,15 +37,19 @@ Diffie-Hellman,RSA 等密码的私钥。\supercite{TimingAttack} 这是最早
\section{Meltdown和Spectre攻击}
-Meltdown\supercite{meltdown} 和 Spectre\supercite{spectre} 是最早发现
-的两个利用瞬时指令的攻击。此后发现了更多的 Meltdown 和 Spectre 的变体。
-为了找出更多的攻击类型和分析它们的防御方案,Claudio Canella 等人对这些
-攻击及其防御做了系统性的研究\supercite{systematic},将所有瞬时执行攻击
-分为 Meltdown型攻击和 Spectre 型攻击两类。
+处理器在执行指令遇到异常,或者推测式执行了错误的指令后,会回卷错误执行
+的指令,丢弃它们对体系结构状态的修改,这些被回卷的指令称为瞬时指令
+(transient
+instruction)。Meltdown\supercite{meltdown} 和
+Spectre\supercite{spectre} 是最早发现的两个利用瞬时指令的攻击。此后发现
+了更多的 Meltdown 和 Spectre 的变体。为了找出更多的攻击类型和分析它们的
+防御方案,Claudio Canella 等人对这些攻击及其防御做了系统性的研
+究\supercite{systematic},将所有瞬时执行攻击分为 Meltdown型攻击
+和 Spectre 型攻击两类。
\subsection{Meltdown型攻击}
-Meltdown型攻击利用的是处理器异常产生的瞬时指令,这些指令使用了体系结构
+Meltdown 型攻击利用的是处理器异常产生的瞬时指令,这些指令使用了体系结构
层次上不可访问的数据,从而绕过硬件的安全策略,泄露体系结构层次上不可访
问的数据。
@@ -58,6 +62,24 @@ Meltdown型攻击利用的是处理器异常产生的瞬时指令,这些指令
可以读取内核地址空间的数据,在产生异常前,攻击者构造的瞬时指令序列可以
将读取到的数据通过隐蔽信道发送给攻击者。
+以下是一段 Meltdown 攻击的示例代码,通过它可以读取内核地址空间的数据:
+
+\begin{minted}{nasm}
+xor rax, rax
+retry:
+mov al, byte [rcx] ; 读取内核空间的数据
+shl rax, 0xc
+jz retry
+mov rbx, qword [rbx + rax] ; 访问探测数组
+\end{minted}
+
+以上 X86 指令读取了以 rcx 为地址的内核空间的数据,在用户态下,这个读取
+内核空间数据的指令会产生异常,但是在处理器产生异常之前,这条指令可以将
+内核空间的数据读至寄存器,并且其后的指令也会执行,访问 rbx 指向的探测数
+组。在处理器回卷了产生异常的指令和其后执行的指令后,高速缓存中仍然保留
+了探测数组和内核数据相关的元素,从而攻击者可以通过扫描探测数组的每一
+项,观察访问时间,以推测内核空间数据的值。
+
\subsubsection{Foreshadow}
Foreshadow\supercite{foreshadow} 是一种可以读取 Intel SGX enclave 中秘