summaryrefslogtreecommitdiff
path: root/chap/chap4.tex
diff options
context:
space:
mode:
Diffstat (limited to 'chap/chap4.tex')
-rw-r--r--chap/chap4.tex46
1 files changed, 37 insertions, 9 deletions
diff --git a/chap/chap4.tex b/chap/chap4.tex
index d6df685..455e2b6 100644
--- a/chap/chap4.tex
+++ b/chap/chap4.tex
@@ -1,4 +1,4 @@
-\chapter{可抵抗Spectre攻击的微架构的设计与实现}\label{sec:mywork}
+\chapter{针对 Spectre 攻击的微架构设计}\label{sec:mywork}
本章讲解本文提出的一种防御 Spectre 攻击的方法,该方法使用动态信息流追
踪的方法,检测 Spectre 组件指令流中可能泄露秘密数据的访存指令,并使用
@@ -22,6 +22,8 @@ Spectre-RSB 攻击,此方法可以扩展至 Spectre-STL 攻击。攻击者在
\section{基于动态信息流追踪的Spectre检测方法}
+\Todo: 这一节是否可以写到3页?
+
动态信息流追踪(Dynamic Information Flow Tracking)\supercite{dift}是
一种硬件安全策略,通过识别可疑的信息流,并限制可疑信息的使用,保护程序
的安全。它最早用于防止攻击者利用缓冲区溢出攻击执行恶意代码,也可以用于
@@ -37,6 +39,12 @@ CSF\supercite{context-sensitive-fencing} 中的译码级信息流追踪框架 DI
本文使用 DIFT 检测 Spectre 组件中泄露数据的 load 指令。详细设计如下:
+\Todo: 解释为什么使用这种方法,和其他相似方法(DLIFT, TPBuf, SG(Full))的比较
+
+\Todo: 增加结构示意图和代码描述
+
+\Todo: 使用更加详细的描述
+
\begin{itemize}
\item 为每个物理寄存器添加一位标记,表示这个寄存器的数据是否来自于推测
式执行中从内存读取的数据
@@ -68,7 +76,19 @@ void victim(size_t x, uint8_t k) {
问可能泄露 \verb|array1[x]| 的数据。因此,如果一条控制指令依赖于被标记
的寄存器,则对它进行标记,其后的所有 load 指令都认为不安全。
-\section{可抵抗 Spectre 攻击的微架构的实现}
+\Todo: 解释怎样处理以上的情形
+
+\section{使用推测式执行缓冲区}
+
+\Todo: 说明在检测到不安全的访存指令后,推迟它的执行和用 InvisiSpec 的 SpecBuf 执行的区别
+
+\Todo: 为什么只对部分指令使用,对推测式执行中的部分指令使用 InvisiSpec 是否需要修改
+
+\Todo: 本文使用的基于 DIFT 的检测方法和 InvisiSpec 结合
+
+\section{针对 Spectre 攻击的微架构在 gem5 中的实现}
+
+\Todo: 这节介绍怎样在 gem5 中实现我的工作
以下介绍这种可抵抗 Spectre 攻击的微架构在 gem5 模拟器中的实现。首先分
析 gem5 中乱序执行处理器的实现,然后分别介绍 InvisiSpec 和本文使用的
@@ -76,6 +96,8 @@ DIFT 方案在 gem5 中的实现。
\subsection{gem5 的乱序执行处理器}
+\Todo: 做一个 gem5 流水线的示意图?
+
gem5 的乱序执行处理器实现在 FullO3CPU 类中,它又用类实现类处理器的以下
流水级:取指(Fetch)、译码(Decode)、重命名(Rename)、发射/执行/回
写(IEW)、提交(Commit)。
@@ -101,14 +123,20 @@ gem5 的发射、执行和回写三个阶段由一个类 DefaultIEW 实现,它
gem5 的提交阶段由 DefaultCommit 类实现,它提交 ROB 队列头部的指令,更
新 ROB 的状态。
-\subsection{InvisiSpec 的实现}
+\subsection{InvisiSpec的LSQ的实现}
+
+\Todo: InvisiSpec 所用的 load 指令执行逻辑在 gem5 LSQ 中的实现
-% 本文使用 InvisiSpec 执行检测为不安全的 load 指令。相对于阻止该 load 指
-% 令的执行,使用 InvisiSpec 执行该指令,可以使依赖于这个指令的指令可以继
-% 续执行,减少性能损失。以下分析 InvisiSpec 的详细设计,在下一节中分析将
-% xSpectre 检测技术和 InvisiSpec 结合的方法。
+\subsection{推测式执行缓冲区的实现}
-% InvisiSpec 使用推测式执行缓冲区保存推测式执行中 load 指令得到的数据,
-% 这部分代码在。
+\Todo: InvisiSpec 的 SpecBuf 在 gem5 中的实现
+
+\subsection{InvisiSpec对缓存一致性协议的修改}
+
+\Todo: InvisiSpec 的 SpecBuf 在 gem5 中的实现
\subsection{动态信息流追踪的实现}
+
+\Todo: 本文所用的 DIFT 方案在 gem5 中的实现,和已有 InvisiSpec 代码的结合
+
+\Todo: 如何添加一个总结性的章节?