From 19df8b87f7f46edc669299e6100db4eea5543f65 Mon Sep 17 00:00:00 2001
From: Iru Cai <mytbk920423@gmail.com>
Date: Thu, 9 May 2019 16:33:38 +0800
Subject: upd

---
 chap/chap2.tex | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 101 insertions(+)

(limited to 'chap/chap2.tex')

diff --git a/chap/chap2.tex b/chap/chap2.tex
index ae6ea92..19a604f 100644
--- a/chap/chap2.tex
+++ b/chap/chap2.tex
@@ -58,6 +58,56 @@ Meltdown 型攻击利用的是处理器异常产生的瞬时指令，这些指
 
 \subsubsection{Meltdown}
 
+内存隔离是现代操作系统的核心安全功能之一。操作系统确保用户程序无法访问
+其他程序的内存或内核的内存。这种隔离是现代计算环境的基石，使得系统上可
+以同时运行多个应用程序，和多个用户的进程。
+
+在现代处理器中，内核和用户进程之间的隔离通常由处理器的定义的权限位实现，
+这一位定义了内核的页是否可以被访问。这一位只能在进入内核态时设置，并在
+切换到用户态时清除。这个硬件特性使得操作系统可以将内核映射到每个进程的
+地址空间，在终端处理等事件中，可以高效地从用户进程切换至内核。因此，在
+操作系统的实现中，处理器从用户进程切换到内核时，不会改变内存映射。
+
+Meltdown 是一种新型攻击，它使得任何用户进程可以简单地读取所在机器的整个
+内核内存（包括映射在内核区域中的所有物理内存），从而完全破坏内存隔
+离。Meltdown 不利用任何软件漏洞，适用于所有主流操作系统。Meltdown 利用
+大多数现代处理器中侧信道信息，可以用于 2010 年以来的现代 Intel 处理器，
+也可能可用于其他厂商的处理器。
+
+侧通道攻击通常需要非常具体地了解目标应用程序，并且只用于泄露其中的秘密
+信息，但 Meltdown 允许攻击者在可被攻击的处理器上，通过运行代码获得整个
+内核地址空间的数据，包括任何映射在内核中的物理内存。Meltdown 的简单和
+强大来自乱序执行的副作用。
+
+乱序执行是现代处理器用于提高性能的重要特性，用于隐藏功能单元的延迟，例
+如，读取内存的功能单元需要等待存储器中的数据到达。现代处理器在遇到长延
+迟的执行时，不会停止执行，而是可以乱序操作，将后续的操作调度到空闲的功
+能单元中。然而，这些操作通常有预期之外的副作用，例如，在顺序和乱序执行
+中，时间差异都可能泄露信息。
+
+从安全角度来看，一个观察特别重要：易受攻击的乱序处理器允许非特权态的进
+程将数据从特权（内核或物理）地址载入临时的寄存器中。进一步，处理器可以
+基于该寄存器的值进行计算，例如用这个寄存器的值访问数组。如果一条指令不
+应该执行，通过简单地丢弃访问内存得到的结果，处理器可以确保程序执行的正
+确性。因此，在体系结构层次，即处理器执行计算的抽象定义下，不会出现安全
+问题。
+
+但是，乱序执行中的内存访问会影响缓存，而缓存的状态又可以通过缓存侧通道
+进行检测。因此，攻击者可以通过在乱序执行的指令流中，读取特权态的内存来，
+来得到整个内核内存的数据，并通过微架构隐蔽通道传送出来，然后攻击者在隐
+蔽信道的接收端，找出这个临时寄存器的值。因此，在微架构层次，即实际的
+硬件实现中，存在可利用的安全性问题。
+
+Meltdown 打破了处理器内存隔离功能提供的所有安全保障。这种攻击可以用于现
+代台式机、笔记本电脑以及云服务器。 Meltdown 允许非特权进程读取映射在内
+核地址空间中的数据，包括 Linux，Android 和 OS X 上的整个物理内存，以
+及 Windows 上的大部分物理内存。这些内存可能包含其他进程的物理内存，以及
+内核共享的容器沙箱（如 Docker，LXC）或半虚拟化模式下的 Xen 中，虚拟化管
+理程序的内存，和其他虚拟化实例的内存。Meltdown 攻击的性能取决于处理器速
+度、TLB 和高速缓存大小、DRAM 速度等，可以以 3.2KB/s 到 503KB/s 的速度
+读取内核内存。因此，大量系统受到影响。
+
+% background: address spaces
 为了将不同的进程相互隔离，处理器支持虚拟地址空间，它将虚拟地址翻译为物
 理地址。虚拟地址空间将内存划分为一系列的页，系统通过多级页表将虚拟页翻
 译为物理页。页表是一个多级的结构，存放虚拟页到物理页的映射，同时，它还
@@ -101,6 +151,57 @@ mov rbx, qword [rbx + rax] ; 访问探测数组
 
 \subsubsection{Foreshadow}
 
+% foreshadow introduction
+由于现代广泛使用的操作系统和应用程序的大小可以轻松地达到数百万行代码，
+并且单个漏洞通常会破坏所有安全保证，所以在安全上很难信任现有的操作系统
+和应用程序。为了应对这些挑战，学术界和工业界开发了可信执行环境
+（Trusted Execution Environment, TEE），其中包含一个处理器常规执行环境
+之外的非分层保护模型，用于隔离应用程序，称为 enclave. TEE 利用只含有处
+理器和微码的最小可信计算基础（Trusted Computing Base），来保证相互不信
+任的 enclave 的保密性和完整性。 每个 enclave 的私有处理器和内存状态只可
+以由其内部运行的代码访问，并且在任何特权级别（包括潜在的恶意操作系统和
+虚拟机管理程序）上运行的所有其他 enclave 和软件都无法访问。除了强大的内
+存隔离外，TEE 通常还提供一个证明（attestation）原语，从而可以本地或远程
+地在运行时从密码学上验证特定的 enclave 已经加载到真正的（因而被认为是安
+全的）TEE 处理器上。
+
+随着 2013 年 Intel 软件防护扩展（Software Guard eXtention,
+SGX）\supercite{sgx}的发布，硬件强制的 TEE 隔离和证明可以在现成的x86处
+理器上使用。由于 Intel SGX 承诺的强大安全保障，越来越多的行业参与者将这
+项技术应用于可受攻击者控制的机器上，需要安全执行的各种应用程序中。Open
+Whisper Systems 依靠 SGX 在 Signal 网络中实现隐私友好的联系人发现功
+能。\supercite{signal-sgx} 微软和 IBM 最近都宣布在其云基础架构中支
+持 SGX。各种现成的蓝光播放器以及 4K Netflix 客户端使用 SGX 对高分辨率视
+频流实施数字版权管理（DRM）。新兴的加密货币\supercite{mobilecoin}和的区
+块链\supercite{sawtooth}技术更加依赖于 SGX 的正确性。
+
+然而，当前的 SGX 实现并没有满足它的安全目标。Foreshadow 攻击利用现
+代 Intel 处理器中的乱序执行机制，可以从处理器的缓存中泄露明文
+的 enclave 数据。Foreshadow 攻击的核心是利用 Meltdown 攻击相同的处理器
+漏洞，即处理器的访问控制逻辑允许攻击者在瞬态的乱序执行指令回滚之前，使
+用未授权内存访问的结果。然而，Meltdown 攻击针对传统的分层保护域，
+而 Foreshadow 考虑了一种非常不同的攻击模型，攻击者的目标不是从用户空间
+读取内核内存，而是破坏最先进的地址空间内 enclave 保护域，它不在已经部署
+的用于防御 Meltdown 的内核页表隔离技术的保护之内。Foreshadow 使用了一
+种新的漏洞利用方法，并且基本的攻击完全可以由无特权的攻击者使用，而无需
+用 root 权限访问受害者机器。对于有 root 权限的攻击者，还可以使用一组可
+选的内核级优化技术，进一步降低 Foreshadow 攻击的噪声。
+
+Foreshadow 对 Intel SGX 所追求的安全模型产生了深远的影响，在没有微码补
+丁的情况下，当前的SGX处理器无法保证 enclave 的数据保密性，也无法证
+明enclave 执行的完整性，包括英特尔自己的 enclave 架构。此外，尽管 SGX
+希望内核级别的攻击者，但现有的 SGX 处理器甚至无法在没有特权的用户空间
+攻击者面前保护 enclave 中的秘密数据。
+
+所有先前已知的针对 SGX 的攻击都依赖于软件特定的侧信道泄露或软件漏
+洞。 人们普遍认为，精心编写的 enclave 可以通过坚持良好的编码实践，例如
+不使用依赖秘密数据的分支，来防止信息泄露。Intel 认为这些攻击都没有破
+坏 SGX 的安全保证，防止侧信道攻击应该是 enclave 开发者的责任。 然
+而，Foreshadow 否定了这一论点，因为它完全依赖于基本的 Intel x86 处理器
+的行为，并且不利用任何软件漏洞，甚至不需要知道受害者 enclave 的源代码。
+
+% foreshadow attack
+
 Foreshadow\supercite{foreshadow} 是一种可以读取 Intel SGX enclave 中秘
 密数据的 Meltdown 型攻击。如果对 SGX 使用 Meltdown 攻击，攻击者读取未授
 权的 enclave 内存，不会产生异常，而是读出 abort page 值 -1. 但是 abort
-- 
cgit v1.2.3

