diff options
Diffstat (limited to 'chap/chap3.tex')
-rw-r--r-- | chap/chap3.tex | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/chap/chap3.tex b/chap/chap3.tex index a755996..90e8133 100644 --- a/chap/chap3.tex +++ b/chap/chap3.tex @@ -193,7 +193,7 @@ SafeSpec 原则可以用于在推测式执行中保护缓存和 TLB,方法是 InvisiSpec \supercite{invisispec} 使推测式执行产生的副作用在数据缓存中 不可见,从而可以防御利用推测式执行的攻击。它的目标是阻止由推测式执行的 -装载操作产生的微架构侧信道和隐蔽信道,如缓存占用、缓存行替换算法信息、 +装载操作产生的微体系结构侧信道和隐蔽信道,如缓存占用、缓存行替换算法信息、 缓存一致性状态等。和 SafeSpec 不同,InvisiSpec 支持多处理器。 Spectre 等攻击由暂态指令引起,为了定义 InvisiSpec 的攻击模型, @@ -229,7 +229,7 @@ Speculative Store Bypass & 装载指令和更早的存储指令地址别名\tabu \centering \end{table} -InvisiSpec 的微架构基于两种机制。第一个机制中,不安全的推测式执行的装载 +InvisiSpec 的微体系结构基于两种机制。第一个机制中,不安全的推测式执行的装载 操作将数据读入至推测式执行缓冲区(Speculative Buffer,SB)中,而不读入 缓存,从而不修改缓存存储层次的状态。由于缓冲区中的数据不产生缓存一致性 事务,因此可能造成内存一致性违例。第二个机制解决这个问题,当推测式执行 @@ -404,7 +404,7 @@ InvisiSpec 会增大存储系统中各个缓存之间,和缓存和主存之间 Meltdown 和 Spectre 提供了新了构造数据通道的方式。通过利用错误的推测式 执行,攻击者可以使处理器执行通常无法访问的代码路径。在 Meltdown 中,攻 击者推测式执行一段代码,作为数据通道,它可以非法访问秘密数据,并在异常 -发生之前通过微架构副作用传输至接受者。在 Spectre 中,攻击者使分支预测器 +发生之前通过微体系结构副作用传输至接受者。在 Spectre 中,攻击者使分支预测器 预测错误,使处理器沿着攻击者选择的路径推测式执行,这在受害者中形成了数 据通道。因此,构建数据通道有三种方法: @@ -439,7 +439,9 @@ DAWG 的目标是阻止任何攻击者和受害者安全域之间的基于缓存 的路之内。在此之上,缓存所带的元数据,如替换策略的状态,也要在保护域内 定义,并安全地划分。 -图\ref{fig:dawg-cache}展示了 DAWG 缓存的结构。 +图\ref{fig:dawg-cache}展示了 DAWG 缓存的结构。处理器中增加几个 MSR,用 +于记录处理器当前所在的保护域,和保护域的策略。每个逻辑核在访问存储器时 +均带有一个域标识字段。 除了硬件修改之外,DAWG 还需要软件的支持,用于管理程序的保护域,和每个 域对应的安全策略。 @@ -535,7 +537,7 @@ Conditional Speculation \supercite{conditional-speculation} 是一种检测 推测式执行中的潜在的泄露数据的访存指令,并阻止其执行的方法。为了检测可 能在推测式执行中泄露数据的指令,此工作提出安全依赖(security dependence)的概念,类似于数据依赖和控制依赖,这种新的依赖性用于描述泄 -漏微架构信息具有潜在安全风险的推测性执行的指令。对于信道 $c$,指令 $j$ +漏微体系结构信息具有潜在安全风险的推测性执行的指令。对于信道 $c$,指令 $j$ 安全依赖于指令 $i$,如果: \begin{itemize} @@ -702,12 +704,12 @@ SpectreGuard\supercite{spectreguard} 是一种以数据为中心的软硬件结 的Spectre 防御方案。这种方案考虑到对于软件开发人员来说,识别程序中的秘 密数据(如密钥)比识别可能受到攻击的 Spectre 组件代码容易。因 此,SpectreGuard 在操作系统中提供接口,使程序可以标记敏感的内存区域,硬 -件上只需要简单的微架构扩展,就可以阻止 Spectre 攻击。和已有的防御方案相 +件上只需要简单的微体系结构扩展,就可以阻止 Spectre 攻击。和已有的防御方案相 比,它不需要依靠编译器识别程序中可能受攻击的代码,也不需要复杂的硬件修 改。 Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将秘密数据转发至 -依赖于这个数据的指令,执行依赖于这个数据的指令,通过微架构隐蔽信道泄露 +依赖于这个数据的指令,执行依赖于这个数据的指令,通过微体系结构隐蔽信道泄露 秘密。数据的泄露在第二、三步进行,如果秘密数据被装载,但不被转发,秘密 也不会泄露给攻击者。 @@ -716,7 +718,7 @@ Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将 内存区域时,才需要延迟转发。当秘密数据不经常访问时,总体开销可以忽略。 敏感数据的标记通过在页表中添加一个位实现,在软件中可以扩展操作系统 -的mmap, mprotect 等接口,或通过运行库、编译器、连接器实现。在微架构中, +的mmap, mprotect 等接口,或通过运行库、编译器、连接器实现。在微体系结构中, 指令执行后,执行结果将转发至后续依赖于这个指令的指令,而如果指令是访问 了敏感区域的指令,则推迟它的转发。 @@ -735,7 +737,7 @@ Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将 % Data Oblivious ISA(OISA)是一种 ISA 扩展,用于阻止信息通过侧信道泄露。 % 设计原则: % \begin{itemize} -% \item ISA的安全性和微架构无关 +% \item ISA的安全性和微体系结构无关 % \item ISA不会阻止现代微处理器的优化技术 % \end{itemize} % @@ -755,7 +757,7 @@ Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将 由于 Meltdown 型攻击和 Spectre 型攻击利用的暂态指令不同,因此防御方案 也不同。 -对于 Meltdown 型攻击,防御方法相对简单。只要使产生异常的指令在微架构层 +对于 Meltdown 型攻击,防御方法相对简单。只要使产生异常的指令在微体系结构层 次上无法访问体系结构层次上无法访问的数据,即可以阻止 Meltdown 型攻击。 在现有的处理器中,需要使用 KAISER 等防御方案,会造成一定性能的损失。 |