diff options
Diffstat (limited to 'chap/chap4.tex')
-rw-r--r-- | chap/chap4.tex | 38 |
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 装载指令执行流程的分析,对 +执行流水线作出的修改,实现装载指令安全执行的方法。 |