diff options
Diffstat (limited to 'chap/chap4.tex')
-rw-r--r-- | chap/chap4.tex | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/chap/chap4.tex b/chap/chap4.tex index e9f03dc..f47c8ad 100644 --- a/chap/chap4.tex +++ b/chap/chap4.tex @@ -1,9 +1,44 @@ \chapter{可抵抗Spectre攻击的微架构的设计与实现} +本章讲解本文提出的一种防御 Spectre 攻击的方法,该方法使用动态信息流追 +踪的方法,检测 Spectre 组件指令流中可能泄露秘密数据的访存指令,并使用 +InvisiSpec 的方法执行这些访存指令。 + \section{威胁模型} -\section{InvisiSpec} +本文对攻击者做如下假设:攻击者知道受害者程序的代码、进程中的地址分布信 +息,攻击者和受害者可以在同一进程,共享同一处理器核,或在不同处理器核上。 + +本文设计的方法用于防御利用控制流推测式执行的 Spectre-PHT, Spectre-BTB, +Spectre-RSB 攻击,此方法可以扩展至 Spectre-STL 攻击。攻击者在 Spectre +攻击中使用高速缓存作为隐蔽信道,其他信道不在本文的考虑范围。本文不考虑 +其他的侧信道攻击。本文针对攻击者通过 Spectre 攻击获取内存中秘密数据的 +情形,不考虑攻击者通过攻击获取寄存器中秘密数据的情形。 + +\section{基于动态信息流追踪的Spectre检测方法} + +动态信息流追踪(Dynamic Information Flow Tracking)\supercite{dift}是 +一种硬件安全策略,通过识别可疑的信息流,并限制可疑信息的使用,保护程序 +的安全。它最早用于防止攻击者利用缓冲区溢出攻击执行恶意代码,也可以用于 +检测跨站脚本攻击、SQL注入等攻击。\supercite{raksha} + +DIFT 可以作为 Spectre 攻击的检测手段之一。Spectre 的论文中指出处理器可 +以追踪数据是否在推测式执行中获取,进而阻止在后续可能泄露这个数据的操作 +中使用,作为阻止数据进入隐蔽信道的方法。\supercite{spectre} +CSF\supercite{context-sensitive-fencing} 中的译码级信息流追踪框架 DIFT, +用于追踪处理器使用的数据是否来源于用户输入,从而处理器可以根据此信息判 +断是否需要插入 fence 微码。OISA\supercite{oisa} 在指令系统的定义中即包 +含了 DIFT 技术,用于追踪一个数据是否为秘密数据。 + +本文使用 DIFT 检测 Spectre 组件中泄露数据的 load 指令。 + +%TODO + +\section{InvisiSpec的详细设计} -\section{基于信息流追踪的Spectre检测方法} +本文使用 InvisiSpec 执行检测为不安全的 load 指令。相对于阻止该 load 指 +令的执行,使用 InvisiSpec 执行该指令,可以使依赖于这个指令的指令可以继 +续执行,减少性能损失。以下分析 InvisiSpec 的详细设计,在下一节中分析将 +Spectre 检测技术和 InvisiSpec 结合的方法。 \section{可抵抗Spectre攻击的微架构的实现} |