diff options
Diffstat (limited to 'chap/chap4.tex')
-rw-r--r-- | chap/chap4.tex | 46 |
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: 如何添加一个总结性的章节? |