summaryrefslogtreecommitdiff
path: root/chap/chap4.tex
diff options
context:
space:
mode:
Diffstat (limited to 'chap/chap4.tex')
-rw-r--r--chap/chap4.tex38
1 files changed, 21 insertions, 17 deletions
diff --git a/chap/chap4.tex b/chap/chap4.tex
index ab8b34f..04ed1c6 100644
--- a/chap/chap4.tex
+++ b/chap/chap4.tex
@@ -18,7 +18,7 @@ Spectre-RSB 攻击,此方法可以扩展至 Spectre-STL 攻击。攻击者在
其他的侧信道攻击。本文针对攻击者通过 Spectre 攻击获取内存中秘密数据的
情形,不考虑攻击者通过攻击获取寄存器中秘密数据的情形。
-\section{基于动态信息流追踪的Spectre检测方法}
+\section{基于动态信息流追踪的 Spectre 检测方法}
动态信息流追踪(Dynamic Information Flow Tracking)\supercite{dift}是
一种硬件安全策略,通过识别可疑的信息流,并限制可疑信息的使用,保护程序
@@ -283,13 +283,13 @@ gem5 的提交阶段由 DefaultCommit 类实现,它提交 ROB 队列头部的
此在状态机中添加一个状态 IX,表示接收了 SpecLoad 之后缓存缺失,向下级存
储系统发送读请求,还未得到响应。
-InvisiSpec 中,一级缓存处理 Load 和 Expose 的部分状态如
+InvisiSpec 中,一级缓存处理 SpecLoad 和 Expose 的部分状态如
图\ref{fig:invisispec_mesi}所示。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{invisispec_mesi.eps}
- \caption{InvisiSpec 一级缓存处理 Load 和 Expose 请求}
+ \caption{InvisiSpec 一级缓存处理 SpecLoad 和 Expose 请求}
\label{fig:invisispec_mesi}
\end{figure}
@@ -300,17 +300,17 @@ InvisiSpec 中,一级缓存处理 Load 和 Expose 的部分状态如
% hit based
-而对于只在缓存命中时执行装载指令的方案,设计相对简单。它只需要处理
-SpecLoad 请求。
+%% 而对于只在缓存命中时执行装载指令的方案,设计相对简单。它只需要处理
+%% SpecLoad 请求。
-在这种情形下,不需要添加额外状态。缓存行在任一状态下,接收 SpecLoad 时
-状态不变。缓存命中时,则执行 spec\_load\_hit 将缓存行中的内容返回至处
-理器。
+%% 在这种情形下,不需要添加额外状态。缓存行在任一状态下,接收 SpecLoad 时
+%% 状态不变。缓存命中时,则执行 spec\_load\_hit 将缓存行中的内容返回至处
+%% 理器。
-而在缓存缺失时,则在其中添加一个 spec\_load\_miss 操作,它向处理器返回
-一个缓存缺失的响应。LSQ 在写回的过程中处理这个响应,为其对应的缓存缺失
-的指令设置表\ref{tab:inst_status}中的 FenceDelay 属性,并通知指令队列需
-要推迟这条访存指令的执行。
+%% 而在缓存缺失时,则在其中添加一个 spec\_load\_miss 操作,它向处理器返回
+%% 一个缓存缺失的响应。LSQ 在写回的过程中处理这个响应,为其对应的缓存缺失
+%% 的指令设置表\ref{tab:inst_status}中的 FenceDelay 属性,并通知指令队列需
+%% 要推迟这条访存指令的执行。
\subsection{执行流水线的修改}
@@ -354,10 +354,10 @@ FenceDelay & 指令被阻止执行,直到确认安全,在 InvisiSpec 之外
\label{tab:inst_status}
\end{table}
-在每一周期,处理器扫描 ROB 中的每条指令,更新流水线中每条指令
-的 PrevBrsResolved 状态。在 LSQ 中,对于每一个未完成的 load 指令,根据
-指令之前是否存在未决分支,判断指令是否安全,设定 ReadyToExpose 属性,取
-消 FenceDelay 标志。
+在每一周期,处理器扫描 ROB 中的每条指令,更新流水线中每条指令的
+PrevBrsResolved 状态。在 LSQ 中,对于每一个未完成的装载指令,根据指令
+之前是否存在未决分支,判断指令是否安全,设定 ReadyToExpose 属性,取消
+FenceDelay 标志。
\subsection{动态信息流追踪的实现}
@@ -380,5 +380,9 @@ FenceDelay & 指令被阻止执行,直到确认安全,在 InvisiSpec 之外
了 PrevBrsResolved 属性,或者(2)AfterTaintedBranch 未设置,并且源寄存
器均未被标记。
+\section{本章小结}
-\Todo: 如何添加一个总结性的章节?
+本章前两节介绍本文设计的基于信息流追踪的 Spectre 组件的检测方法,讨论
+了执行可能泄露数据的装载指令的几种方法。第三节介绍了在 gem5 中实现这些
+技术的方法,包括对 gem5 流水线的分析,gem5 装载指令执行流程的分析,对
+执行流水线作出的修改,实现装载指令安全执行的方法。