summaryrefslogtreecommitdiff
path: root/chap
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2019-05-17 11:21:29 +0800
committerIru Cai <mytbk920423@gmail.com>2019-05-17 11:21:29 +0800
commit8f7058d77051ee65b724114d3f64585e56b11ec9 (patch)
treefdce349a6c4f8c1d7854ef7a89dc9b8e42b555a7 /chap
parentb760658a92b9a237c65416aeafb07eadd361dca6 (diff)
downloaddissertation-8f7058d77051ee65b724114d3f64585e56b11ec9.tar.xz
upd
Diffstat (limited to 'chap')
-rw-r--r--chap/abs.tex45
-rw-r--r--chap/chap1.tex19
-rw-r--r--chap/chap2.tex78
-rw-r--r--chap/chap5.tex148
-rw-r--r--chap/origin.tex2
5 files changed, 157 insertions, 135 deletions
diff --git a/chap/abs.tex b/chap/abs.tex
index 8131207..080c963 100644
--- a/chap/abs.tex
+++ b/chap/abs.tex
@@ -2,31 +2,30 @@
% Public domain.
\begin{cabstract}
- 现代微处理器设计主要考虑性能和功耗。随着软硬件变得越来越复杂,安全在
- 计算机系统的设计中逐渐受到重视。Meltdown 和 Spectre 攻击的发现,表明
- 处理器微体系结构的优化,虽然不影响程序的正确运行,但是可能破坏系统的安全
- 性。其中 Spectre 攻击利用处理器的推测式执行,通过暂态指令的执行构造隐
- 蔽信道,将程序中的秘密信息泄露给攻击者,破坏了程序的安全保证和系统的
- 隔离性。由于推测式执行是处理器优化执行性能的重要手段,在防御 Spectre
- 攻击的同时,减少防御手段带来的性能下降,是一个复杂的问题。
+ 现代微处理器设计主要需要考虑性能和功耗。但随着软硬件系统越来越复杂,
+ 安全性在处理器设计中越来越重要。熔断(Meltdown)和幽灵(Spectre)攻
+ 击的发现,表明处理器微体系结构的优化,虽然不影响程序的正确运行,但是
+ 可能带来安全性的问题。其中 Spectre 攻击利用处理器的推测式执行,通过
+ 暂态指令的执行构造隐蔽信道,将程序中的秘密信息泄露给攻击者,破坏了程
+ 序的安全保证和系统的隔离性。由于推测式执行是微处理器设计中提升性能的
+ 重要手段,在防御 Spectre攻击的同时,减少防御手段带来的性能下降,是一
+ 个重要的问题。
- 本文基于 gem5 模拟平台,设计了一种用于防御 Spectre 攻击的微体系结构,并
- 对其进行评估。主要工作内容如下:
- \begin{itemize}
- \item 调研现有的侧信道攻击、Meltdown 和 Spectre 攻击技术,深入分析这
- 些攻击技术的原理。
+ 本文基于模拟平台,针对推测式执行侧信道攻击设计实现了一种防御结构。主
+ 要工作内容如下:
+ \begin{enumerate}
+ \item 调研 Meltdown 和 Spectre 攻击技术,分析其技术原理。
\item 调研现有的 Meltdown 和 Spectre 防御方案,分析这些方案的设计思
- 想、实现方法、安全性和开销
- \item 设计一种用于防御 Spectre 攻击的微体系结构,并在 gem5 中模拟。该微架
- 构基于动态信息流追踪技术,它用于检测推测式执行中的指令是否直接或间
- 接依赖一个推测式执行中从内存装载的值,进而可能泄露数据。本文将这种
- 技术和已有的安全装载数据的方案 InvisiSpec 结合使用,并在 gem5 中实
- 现了这些模型。
- \item 评测这种微体系结构的安全性和性能。在 gem5 中模拟这种微体系结构,用构造
- 的验证程序进行测试,表明设计的微体系结构满足本文的安全特性。用 SPEC
- CPU2006 进行性能评测,平均性能开销为 8.5\%,优于只使用动态信息流追
- 踪检测技术或只使用 InvisiSpec 的模型的性能。
- \end{itemize}
+ 想、实现方法、安全性和性能开销。
+ \item 设计一种针对 Spectre 攻击的防御结构,并在模拟平台中实现。该结
+ 构动态追踪信息流,检测推测式执行的指令与推测的内存读取之间的依赖关
+ 系,标记存在数据泄露风险的指令。进一步地,针对有风险的内存读取指令,
+ 采用安全的数据装载方案,避免在高速缓存状态中留下暂态执行的痕迹。
+ \item 基于模拟平台对该防御结构进行评估。利用构造的攻击程序进行测试,
+ 表明该防御结构可以防御测试中的攻击,满足安全性要求。利用 SPEC
+ CPU2006 进行性能评测,平均性能开销为 8.5\%,需要安全执行的推测式数
+ 据读取显著减少,降低了防御的性能开销。
+ \end{enumerate}
\end{cabstract}
\begin{eabstract}
diff --git a/chap/chap1.tex b/chap/chap1.tex
index 4a0e94e..7ddf6b6 100644
--- a/chap/chap1.tex
+++ b/chap/chap1.tex
@@ -51,8 +51,8 @@ Tomasulo 算法\supercite{tomasulo},可以识别指令之间的依赖关系,
它的 ROB 使得流水线中可以同时存在 224 个微操作,它的分支预测器可以预测
分支的方向和目标地址,使处理器在预测的目标处取出指令至指令缓存。
-2018 年公布的 Meltdown\supercite{meltdown} 和
-Spectre\supercite{spectre} 攻击使人们发现,虽然处理器在执行指令产生异
+2018 年公布的“熔断”(Meltdown)\supercite{meltdown}和“幽灵”(Spectre)
+\supercite{spectre} 攻击使人们发现,虽然处理器在执行指令产生异
常,或推测式执行错误后,通过恢复可以使体系结构层次上的状态保持正确,但
是这些错误执行的指令在微体系结构中产生了副作用,并且可能泄露系统中的秘
密数据,破坏了系统的安全。在 Meltdown 和 Spectre 之后,研究者发现了更
@@ -100,20 +100,25 @@ gem5 是一个模拟平台,由 GEMS\supercite{gems} 和 M5\supercite{m5} 两
MIPS, RISC-V 等指令系统。作为一个开源的模拟器,学术界和工业界都为 gem5
的开发做出贡献,使得 gem5 称为体系结构研究中最流行的模拟器之一。
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=0.8\textwidth]{gem5_cpu.pdf}
+ \caption{gem5 支持的 CPU 模型\supercite{gem5-tutorial}}
+ \label{fig:gem5_cpu}
+\end{figure}
+
gem5 的灵活性使得研究者可以根据需要选择不同的系统模型,取得模拟速度和精
度的平衡。gem5 支持以下模型的配置:
-\begin{itemize}
-\item CPU 模型:gem5 支持四种不同的 CPU 模型。AtomicSimpleCPU 模拟一个
- 单周期处理器,模拟速度最快。TimingSimpleCPU 在此之上增加对存储访问时
- 间的模拟。O3CPU 则是一个详细的乱序执行处理器模型。
+\begin{enumerate}
+ \item CPU 模型:如图\ref{fig:gem5_cpu},gem5 支持多种不同的 CPU 模型。AtomicSimpleCPU 模拟一个单周期处理器,模拟速度最快。TimingSimpleCPU 在此之上增加对存储访问时间的模拟。O3CPU 则是一个详细的乱序执行处理器模型。此外,gem5 还支持使用 KVM 虚拟化技术模拟 CPU 的执行。
\item 系统模式:gem5 可以用系统调用模拟(SE)和全系统(FS)两种模式进
行模拟,前者模拟大多数的系统调用,无需对操作系统和设备进行模拟,而后
者则模拟了操作系统和设备,同时执行用户态和内核态的指令。
\item 存储系统:gem5 包含两种存储系统模型,来自 M5 的 Classic 模型容易
配置且模拟速度快,而来自 GEMS 的 Ruby 模型则提供了一个可以精确模拟缓
存一致性模型的存储系统模拟框架。
-\end{itemize}
+\end{enumerate}
gem5 模拟器使用 C++ 编写,并集成了 Python,模拟器的核心功能由 C++ 实现,
而 Python 用于初始化、配置和控制模拟器。为了支持多种指令系统和缓存一致
diff --git a/chap/chap2.tex b/chap/chap2.tex
index 86ab846..7f6b4f8 100644
--- a/chap/chap2.tex
+++ b/chap/chap2.tex
@@ -38,7 +38,7 @@ Diffie-Hellman,RSA 等密码的私钥。\supercite{TimingAttack} 这是最早
的数据,通过测量访问时间推断受害者是否访问了这个共享的地址
\end{itemize}
-\section{Meltdown和Spectre攻击}
+\section{Meltdown 和 Spectre 攻击的各种变体}
处理器在执行指令遇到异常,或者推测式执行了错误的指令后,会回卷错误执行
的指令,丢弃它们对体系结构状态的修改,这些被回卷的指令称为暂态指令
@@ -50,13 +50,13 @@ Spectre\supercite{spectre} 是最早发现的两个利用暂态指令的攻击
究\supercite{systematic},将所有暂态执行攻击分为 Meltdown型攻击
和 Spectre 型攻击两类。
-\subsection{Meltdown型攻击}
+\subsection{Meltdown 型攻击}
Meltdown 型攻击利用的是处理器异常产生的暂态指令,这些指令使用了体系结构
层次上不可访问的数据,从而绕过硬件的安全策略,泄露体系结构层次上不可访
问的数据。
-\subsubsection{Meltdown}
+\subsubsection{“熔断”(Meltdown)攻击}
内存隔离是现代操作系统的核心安全功能之一。操作系统确保用户程序无法访问
其他程序的内存或内核的内存。这种隔离是现代计算环境的基石,使得系统上可
@@ -152,21 +152,21 @@ Meltdown 打破了处理器内存隔离功能提供的所有安全保障。这
度、TLB 和高速缓存大小、DRAM 速度等,可以以 3.2KB/s 到 503KB/s 的速度
读取内核内存。因此,大量系统受到影响。
-\subsubsection{Foreshadow}
+\subsubsection{“预兆”(Foreshadow)攻击}
% foreshadow introduction
由于现代广泛使用的操作系统和应用程序的大小可以轻松地达到数百万行代码,
并且单个漏洞通常会破坏所有安全保证,所以在安全上很难信任现有的操作系统
和应用程序。为了应对这些挑战,学术界和工业界开发了可信执行环境
(Trusted Execution Environment, TEE),其中包含一个处理器常规执行环境
-之外的非分层保护模型,用于隔离应用程序,称为 enclave. TEE 利用只含有处
-理器和微码的最小可信计算基础(Trusted Computing Base),来保证相互不信
-任的 enclave 的保密性和完整性。 每个 enclave 的私有处理器和内存状态只可
-以由其内部运行的代码访问,并且在任何特权级别(包括潜在的恶意操作系统和
-虚拟机管理程序)上运行的所有其他 enclave 和软件都无法访问。除了强大的内
-存隔离外,TEE 通常还提供一个证明(attestation)原语,从而可以本地或远程
-地在运行时从密码学上验证特定的 enclave 已经加载到真正的(因而被认为是安
-全的)TEE 处理器上。
+之外的非分层保护模型,用于隔离应用程序,称为隔离区(enclave)。 TEE 利
+用只含有处理器和微码的最小可信计算基础(Trusted Computing Base),来保
+证相互不信任的隔离区的保密性和完整性。 每个隔离区的私有处理器和
+内存状态只可以由其内部运行的代码访问,并且在任何特权级别(包括潜在的恶
+ 意操作系统和虚拟机管理程序)上运行的所有其他隔离区和软件都无法访
+问。除了强大的内存隔离外,TEE 通常还提供一个证明(attestation)原语,
+从而可以本地或远程地在运行时从密码学上验证特定的隔离区已经加载到真
+正的(因而被认为是安全的)TEE 处理器上。
随着 2013 年 Intel 软件防护扩展(Software Guard eXtention,
SGX)\supercite{sgx}的发布,硬件强制的 TEE 隔离和证明可以在现成的x86处
@@ -180,28 +180,28 @@ Whisper Systems 依靠 SGX 在 Signal 网络中实现隐私友好的联系人发
然而,当前的 SGX 实现并没有满足它的安全目标。Foreshadow 攻击利用现
代 Intel 处理器中的乱序执行机制,可以从处理器的缓存中泄露明文
-的 enclave 数据。Foreshadow 攻击的核心是利用 Meltdown 攻击相同的处理器
+的隔离区数据。Foreshadow 攻击的核心是利用 Meltdown 攻击相同的处理器
漏洞,即处理器的访问控制逻辑允许攻击者在瞬态的乱序执行指令回滚之前,使
用未授权内存访问的结果。然而,Meltdown 攻击针对传统的分层保护域,
而 Foreshadow 考虑了一种非常不同的攻击模型,攻击者的目标不是从用户空间
-读取内核内存,而是破坏最先进的地址空间内 enclave 保护域,它不在已经部署
+读取内核内存,而是破坏最先进的地址空间内隔离区保护域,它不在已经部署
的用于防御 Meltdown 的内核页表隔离技术的保护之内。Foreshadow 使用了一
种新的漏洞利用方法,并且基本的攻击完全可以由无特权的攻击者使用,而无需
用 root 权限访问受害者机器。对于有 root 权限的攻击者,还可以使用一组可
选的内核级优化技术,进一步降低 Foreshadow 攻击的噪声。
Foreshadow 对 Intel SGX 所追求的安全模型产生了深远的影响,在没有微码补
-丁的情况下,当前的SGX处理器无法保证 enclave 的数据保密性,也无法证
-明enclave 执行的完整性,包括英特尔自己的 enclave 架构。此外,尽管 SGX
+丁的情况下,当前的SGX处理器无法保证隔离区的数据保密性,也无法证
+明隔离区执行的完整性,包括英特尔自己的隔离区架构。此外,尽管 SGX
希望内核级别的攻击者,但现有的 SGX 处理器甚至无法在没有特权的用户空间
-攻击者面前保护 enclave 中的秘密数据。
+攻击者面前保护隔离区中的秘密数据。
所有先前已知的针对 SGX 的攻击都依赖于软件特定的侧信道泄露或软件漏
-洞。 人们普遍认为,精心编写的 enclave 可以通过坚持良好的编码实践,例如
+洞。 人们普遍认为,精心编写的隔离区可以通过坚持良好的编码实践,例如
不使用依赖秘密数据的分支,来防止信息泄露。Intel 认为这些攻击都没有破
-坏 SGX 的安全保证,防止侧信道攻击应该是 enclave 开发者的责任。 然
+坏 SGX 的安全保证,防止侧信道攻击应该是隔离区开发者的责任。 然
而,Foreshadow 否定了这一论点,因为它完全依赖于基本的 Intel x86 处理器
-的行为,并且不利用任何软件漏洞,甚至不需要知道受害者 enclave 的源代码。
+的行为,并且不利用任何软件漏洞,甚至不需要知道受害者隔离区的源代码。
% foreshadow attack
\begin{figure}[htbp]
@@ -217,9 +217,9 @@ Foreshadow 对 Intel SGX 所追求的安全模型产生了深远的影响,在
如果在虚拟机环境中,则需要如图 \ref{fig:addr-tran} 所示,增加一个扩展
页表(Extended Page Table,EPT)的访问过程,将客户机的物理地址翻译为底
层物理机的物理地址。最后,启用了 Intel SGX 的处理器还会进一步检查地址
-翻译的结果,确保这个地址翻译遵守硬件强制的 enclave 访问控制限制。如果
+翻译的结果,确保这个地址翻译遵守硬件强制的隔离区访问控制限制。如果
这三个独立的阶段报告一个访问违例,则处理器抛出一个页错误,控制流转向异
-常处理代码,而对于 SGX,大多数的 enclave 内存违例会被处理器忽视,将内
+常处理代码,而对于 SGX,大多数的隔离区内存违例会被处理器忽视,将内
存装载指令得到的值设为 abort page 的值 -1.
在体系结构层次上,以上的地址翻译过程在文档中有精确的描述。现代处理器为
@@ -236,13 +236,13 @@ Foreshadow 对 Intel SGX 所追求的安全模型产生了深远的影响,在
路的物理地址标签对比,在某一个有效的缓存路存在正确的物理地址时,此时一
级缓存命中,数据返回至处理器的执行单元。
-Foreshadow\supercite{foreshadow} 是一种可以读取 Intel SGX enclave 中秘
+Foreshadow\supercite{foreshadow} 是一种可以读取 Intel SGX 隔离区中秘
密数据的 Meltdown 型攻击。如果对 SGX 使用 Meltdown 攻击,攻击者读取未授
-权的 enclave 内存,不会产生异常,而是读出 abort page 值 -1. 但是 abort
+权的隔离区内存,不会产生异常,而是读出 abort page 值 -1. 但是 abort
page 只在页权限检查通过后发生,攻击者可以将该页 present 位清除,即将该
页设为不存在,此时处理器便会产生异常,但由于一级缓存使用虚拟地址索引,
因此仍然可以从一级缓存读取该虚拟地址中的数据,从而暂态指令可以泄露 SGX
-enclave 中的数据。
+隔离区中的数据。
通过将一个页设为不存在,绕过地址翻译,从一级缓存读取数据的攻击方
式,Intel 将其称为L1终端错误(L1 Terminal
@@ -269,7 +269,7 @@ Foreshadow-OS 利用了这种错误造成的暂态执行的指令。虽然访问
于 4KB 的页(例如,2MB 或 1GB),攻击者可以通过无意的映射访问最大页面大
小的内存范围。由于所有软件本质上共享相同的物理地址空间,因此元数据创建
的虚拟到物理映射可能指向属于操作系统内核,VMM 内存,SGX
-enclave,或 SMM 内存的数据。在操作系统通过 munmap 系统调用释放内存时,
+隔离区,或 SMM 内存的数据。在操作系统通过 munmap 系统调用释放内存时,
将页表项清零的常见情况下,攻击者可以访问存储在物理地址 0x00 的数据。
实验结果表明,在一个 i7-6820HQ CPU 上,Foreshadow-OS 通过利用瞬态执行,
@@ -304,7 +304,7 @@ Foreshadow 攻击使用在可以直接控制客户机器物理地址和一级缓
缓存中的任何秘密。
-\subsubsection{LazyFP}
+\subsubsection{延迟浮点寄存器状态还原(LazyFP)攻击}
% introduction
LazyFP\supercite{lazyfp} 是一个 Meltdown 类型的攻击,它可以跨越进程和虚
@@ -829,16 +829,22 @@ flag 的缓存状态会发生变化。如果 \verb|bitstream[x]| 为 1,则 flag
\subsection{SgxPectre}
SgxPectre \supercite{sgxpectre} 将 Spectre 攻击用于泄露 Intel SGX 环境
-中的数据。通过在 SGX enclave 之外污染 enclave 的 BTB 和 RSB,改变 SGX
-enclave 中的控制流,将秘密数据泄露至 SGX 之外。
-
-\subsection{MeltdownPrime 和 SpectrePrime}
-
-MeltdownPrime 和 SpectrePrime \supercite{meltdownprime} 是一种使用
-Prime+Probe 方式进行 Meltdown 和 Spectre 攻击的形式。通过利用缓存一致
-性协议的缓存行失效机制,可以达到和 Flush+Reload 方式的同等精度。
+中的数据。执行隔离区内的代码时,使用的分支预测器仍然受隔离区外代码影响,
+并且暂态执行的代码可以在隔离区外产生可见的缓存状态更改。因此攻击者可以从
+推断出隔离区内的内存或寄存器的数据,破坏了 SGX 保证的保密性。
+SgxPectre 通过在 SGX 隔离区之外污染隔离区的 BTB 和 RSB,改变 SGX
+隔离区中的控制流,将秘密数据泄露至 SGX 之外。
+
+% \subsection{MeltdownPrime 和 SpectrePrime}
+%
+% MeltdownPrime 和 SpectrePrime \supercite{meltdownprime} 是一种使用
+% Prime+Probe 方式进行 Meltdown 和 Spectre 攻击的形式。通过利用缓存一致
+% 性协议的缓存行失效机制,可以达到和 Flush+Reload 方式的同等精度。
\section{小结}
本章首先介绍侧信道攻击,接着分类介绍各个变体的 Meltdown 型攻击和
-Spectre 型攻击,最后介绍 NetSpectre 等攻击的其他利用形式。
+Spectre 型攻击,其中 Meltdown 型攻击利用来自异常的暂态指令,主要的攻击
+有 Meltdown, Foreshadow 和 LazyFP,Spectre 型攻击利用错误的推测式执行
+产生的暂态指令,根据执行预测的部件分为 Spectre-PHT, Spectre-BTB,
+Spectre-RSB 和 Spectre-STL,最后介绍 NetSpectre 等攻击的其他利用形式。
diff --git a/chap/chap5.tex b/chap/chap5.tex
index e16fe51..2c83fe3 100644
--- a/chap/chap5.tex
+++ b/chap/chap5.tex
@@ -64,14 +64,12 @@ L2 Cache & 2MB, 16路组相联, 8周期延迟\tabularnewline
\section{评测指标}
-本文评测每种微体系结构设计的安全性和性能。安全性表现为是否受 Spectre 攻击的
-影响,本文构造测试程序测试微体系结构的安全性。性能指标使用每个微体系结构设计运
-行基准程序,和 Baseline 的运行时间的比值,平均性能取这些比值的几何平均
-数。
+本文评测每种微体系结构设计的安全性和性能。安全性表现为是否受 Spectre
+攻击的影响,本文构造测试程序测试微体系结构的安全性。性能指标使用每个微
+体系结构设计运行基准程序,和 Baseline 的运行时间的比值,平均性能取这些
+比值的几何平均数。
-\section{评测结果与分析}
-
-\subsection{微体系结构安全性测试}
+\subsection{功能验证}
本文构造一个测试程序对每种配置的处理器进行安全性的测试,用于验证实现的
方案可以防御 Spectre 攻击。
@@ -91,7 +89,7 @@ L2 Cache & 2MB, 16路组相联, 8周期延迟\tabularnewline
攻击得到 X 的值 123. 而在其他配置中,array2 的所有位置都发生缓存缺失,
从而攻击者无法得出 X 的值,说明这些配置都能防御 Spectre 攻击。
-\subsection{SPEC CPU2006的性能评测}
+\section{SPEC CPU2006 的性能评测与分析}
本文对 21 个 SPEC CPU2006 基准测试进行评测,基准测试的数据集使用 ref
集。所有的基准程序均用 GCC 8.3.0 编译,编译优化选项为 -O2,并且和
@@ -159,7 +157,8 @@ Glibc 2.24 静态链接。
%% \end{table}
图\ref{fig:is_spec06_result}是每种配置的处理器运行 SPEC CPU2006 相对于
-Baseline 的运行时间。
+Baseline 的运行时间。其中 cactusADM 和 lbm 由于每种配置的相对运行时间
+都接近 1,故未列入图中。
\begin{figure}[htbp]
\centering
@@ -175,74 +174,87 @@ Baseline 的运行时间。
6 个在 10\% 至 20\%. 性能开销最大的是 omnetpp, 所有安全的方案都会造成
94\% 以上的性能开销。
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=\textwidth]{specload_ratio.eps}
+ \caption{SPEC CPU2006 中 SpecLoad 在所有操作中的比例}
+ \label{fig:specload}
+\end{figure}
+
+%% \begin{table}[htbp]
+%% \begin{tabular}{|c|c|c|c|}
+%% \hline
+%% 基准测试 & IS & IS+DIFT & SpecLoad 减少量\tabularnewline
+%% \hline
+%% \hline
+%% astar & 34.80\% & 19.79\% & 43.13\%\tabularnewline
+%% \hline
+%% bwaves & 10.75\% & 0.23\% & 97.89\%\tabularnewline
+%% \hline
+%% bzip2 & 12.12\% & 5.49\% & 54.74\%\tabularnewline
+%% \hline
+%% cactusADM & 0.51\% & 0.13\% & 74.51\%\tabularnewline
+%% \hline
+%% calculix & 9.89\% & 3.06\% & 69.04\%\tabularnewline
+%% \hline
+%% GemsFDTD & 6.29\% & 0.13\% & 97.91\%\tabularnewline
+%% \hline
+%% gobmk & 12.61\% & 2.60\% & 79.38\%\tabularnewline
+%% \hline
+%% gromacs & 0.76\% & 0.06\% & 92.74\%\tabularnewline
+%% \hline
+%% h264ref & 5.43\% & 0.94\% & 82.68\%\tabularnewline
+%% \hline
+%% hmmer & 9.52\% & 4.82\% & 49.35\%\tabularnewline
+%% \hline
+%% lbm & 1.39\% & 0.00\% & 100.00\%\tabularnewline
+%% \hline
+%% leslie3d & 5.98\% & 0.11\% & 98.23\%\tabularnewline
+%% \hline
+%% libquantum & 1.99\% & 0.00\% & 99.99\%\tabularnewline
+%% \hline
+%% mcf & 10.56\% & 2.11\% & 79.99\%\tabularnewline
+%% \hline
+%% milc & 3.22\% & 0.10\% & 97.04\%\tabularnewline
+%% \hline
+%% namd & 2.67\% & 0.84\% & 68.73\%\tabularnewline
+%% \hline
+%% omnetpp & 5.94\% & 1.94\% & 67.37\%\tabularnewline
+%% \hline
+%% sjeng & 13.19\% & 2.72\% & 79.35\%\tabularnewline
+%% \hline
+%% soplex & 9.68\% & 4.63\% & 52.22\%\tabularnewline
+%% \hline
+%% sphinx3 & 6.63\% & 1.41\% & 78.68\%\tabularnewline
+%% \hline
+%% zeusmp & 6.70\% & 0.03\% & 99.58\%\tabularnewline
+%% \hline
+%% \end{tabular}
+%% \centering
+%% \caption{SPEC CPU2006 中 SpecLoad 在所有操作中的比例}
+%% \label{tab:specload}
+%% \end{table}
+%%
为了观察使用基于信息流追踪的检测机制的效果,可以统计 IS 和 IS+DIFT 方
-案中 SpecLoad 请求的数量。表\ref{tab:specload}列出两种方案中,SpecLoad
+案中 SpecLoad 请求的数量。图\ref{fig:specload}列出两种方案中,SpecLoad
请求的数量和程序的总操作数(gem5 模拟后得出的 sim\_ops 结果)的比例。
-\begin{table}
-\centering
-\begin{tabular}{|c|c|c|c|}
-\hline
-基准测试 & IS & IS+DIFT & SpecLoad 减少量\tabularnewline
-\hline
-\hline
-astar & 34.80\% & 19.79\% & 43.13\%\tabularnewline
-\hline
-bwaves & 10.75\% & 0.23\% & 97.89\%\tabularnewline
-\hline
-bzip2 & 12.12\% & 5.49\% & 54.74\%\tabularnewline
-\hline
-cactusADM & 0.51\% & 0.13\% & 74.51\%\tabularnewline
-\hline
-calculix & 9.89\% & 3.06\% & 69.04\%\tabularnewline
-\hline
-GemsFDTD & 6.29\% & 0.13\% & 97.91\%\tabularnewline
-\hline
-gobmk & 12.61\% & 2.60\% & 79.38\%\tabularnewline
-\hline
-gromacs & 0.76\% & 0.06\% & 92.74\%\tabularnewline
-\hline
-h264ref & 5.43\% & 0.94\% & 82.68\%\tabularnewline
-\hline
-hmmer & 9.52\% & 4.82\% & 49.35\%\tabularnewline
-\hline
-lbm & 1.39\% & 0.00\% & 100.00\%\tabularnewline
-\hline
-leslie3d & 5.98\% & 0.11\% & 98.23\%\tabularnewline
-\hline
-libquantum & 1.99\% & 0.00\% & 99.99\%\tabularnewline
-\hline
-mcf & 10.56\% & 2.11\% & 79.99\%\tabularnewline
-\hline
-milc & 3.22\% & 0.10\% & 97.04\%\tabularnewline
-\hline
-namd & 2.67\% & 0.84\% & 68.73\%\tabularnewline
-\hline
-omnetpp & 5.94\% & 1.94\% & 67.37\%\tabularnewline
-\hline
-sjeng & 13.19\% & 2.72\% & 79.35\%\tabularnewline
-\hline
-soplex & 9.68\% & 4.63\% & 52.22\%\tabularnewline
-\hline
-sphinx3 & 6.63\% & 1.41\% & 78.68\%\tabularnewline
-\hline
-zeusmp & 6.70\% & 0.03\% & 99.58\%\tabularnewline
-\hline
-\end{tabular}
-\caption{SPEC CPU2006 中 SpecLoad 在所有操作中的比例}
-\label{tab:specload}
-\end{table}
-
可以看出,几乎所有的基准程序中,DIFT 可以过滤一半以上被认为不安全的装
载操作,其中 bwaves, GemsFDTD, libquantum, milc 中,推测式执行中的装载
指令只有 3\% 以下需要用安全的方式执行,因此使用 Fence+DIFT 即可以获得
-与 Baseline 几乎同等的性能。在 IS+DIFT 性能开销最大的 omnetpp 中,
-SpecLoad 的数量只减少了 67\%,而性能开销接近 20\% 的 calculix 和 astar,
-SpecLoad 减少的数量也在 70\% 以下。
+与 Baseline 几乎同等的性能。
+
+在 IS+DIFT 性能开销最大的 omnetpp 中,SpecLoad 的数量只减少了 67\%,而
+性能开销接近 20\% 的 calculix 和 astar,SpecLoad 减少的数量也在 70\%
+以下。而在 calculix 和 astar 中,对不安全的装载指令,用 InvisiSpec 策
+略执行,比阻止这些指令的执行,有明显的性能提升。
%\Todo: 评测结果的分析
\section{小结}
本章先介绍了评测环境,列出了各个处理器配置的基本参数。其后给出了评测指
标,包括安全性的测试和性能测试的指标。最后给出了安全测试的方法和结果,
-以及用 SPEC CPU2006 进行性能评测得出的性能结果与分析。
+以及用 SPEC CPU2006 进行性能评测得出的性能结果与分析。功能验证表明,本
+文使用的基于 DIFT 的检测方法和 InvisiSpec 装载指令执行策略,都能阻止
+Spectre 攻击泄露内存中的数据。通过将这两种方法结合,防御 Spectre 攻击
+的性能开销为 8.5\%.
diff --git a/chap/origin.tex b/chap/origin.tex
index 49d25b5..0002589 100644
--- a/chap/origin.tex
+++ b/chap/origin.tex
@@ -34,7 +34,7 @@
% 学校书面要求本页面不要页码,但在给出的 Word 模版中又有页码且编入了目录。
% 此处以 Word 模版为实际标准进行设定。
- \specialchap{北京大学学位论文原创性声明和使用授权说明}
+ \specialchap*{北京大学学位论文原创性声明和使用授权说明}
\mbox{}\vspace*{-3em}
\section*{原创性声明}