diff options
Diffstat (limited to 'chap/chap3.tex')
-rw-r--r-- | chap/chap3.tex | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/chap/chap3.tex b/chap/chap3.tex index 90e8133..d888b48 100644 --- a/chap/chap3.tex +++ b/chap/chap3.tex @@ -90,7 +90,7 @@ Webkit 在数组访问中使用索引掩码(index masking)\supercite{webkit} 在数组大小范围内。 % poison value -Webkit 还使用了指针投毒(pointer poisoning)\supercite{webkit}的方式, +Webkit 还使用了指针投毒(pointer poisoning)\supercite{webkit}的方法, 它考虑分支用于做类型检查的情形。对于不同类型的数据,Webkit 将这种类型的 指针和一个类型对应的值异或,要使用的时候再异或这个值得到指向数据的指针, 如果类型不匹配,则得到的指针会指向一个程序无法访问的内存区域。通过这种 @@ -408,11 +408,11 @@ Meltdown 和 Spectre 提供了新了构造数据通道的方式。通过利用 预测错误,使处理器沿着攻击者选择的路径推测式执行,这在受害者中形成了数 据通道。因此,构建数据通道有三种方法: -\begin{enumerate} +\begin{itemize} \item 数据通道在受害者的代码中已经存在,例如对 RSA 的攻击 \item 攻击者编写了这个数据通道,如 Meltdown \item 攻击者从受害者已有的代码中合成数据通道 -\end{enumerate} +\end{itemize} 这个框架可以用于除缓存状态之外的侧通道,描述通过分支预测器或 TLB 状态造 成的数据泄露。在未来,可能有更多种类的构造数据通道的方法。 @@ -447,7 +447,7 @@ DAWG 的目标是阻止任何攻击者和受害者安全域之间的基于缓存 域对应的安全策略。 在 zsim 模拟器中使用 SPEC CPU2006, PARSEC, GAPBS 进行模拟,相对于 -Intel CAT,在不同的评测程序和划分方式下,大多数程序性能下降为 4\%\~7\%. +Intel CAT,在不同的评测程序和划分方式下,大多数程序性能下降为 4\% 至 7\%. \subsubsection{Context-Sensitive Fencing} @@ -485,6 +485,12 @@ Decoding (CSD)\supercite{context-sensitive-decoding},一种微码翻译机制 的扩展,用于动态按需自定义微操作指令流。CSF 利用 CSD,在微指令流中注入 fence 等微码,阻止不安全指令的推测式执行。 +CSD 是一种根据执行上下文,把指令翻译为不同的自定义的微码的技术。操作系 +统、运行时系统等软件可以通过配置 MSR,设定不同的微码翻译模式。它可以在 +不重新编译的情况下,使不安全的程序变为安全的程序,把优化性能的代码变为 +功耗优化的代码。系统软件可以利用已有的微码更新功能将自定义的微码更新至 +寄存器。CSD 可以通过多种事件触发自定义微码翻译模式。 + CSF 由以下几个关键部件组成: \begin{itemize} \item 微码自定义机制 CSD:使处理器精确地在指令流中插入 fence,减轻推测 @@ -645,7 +651,7 @@ X 对应的一列将会重置,意味着待发射指令和 X 的之间的安全 险过滤器,检测这些指令中安全的指令。在这些攻击中,Spectre 组件的执行中 包含两个特殊的访存指令,记为 A 和 B,它们有如下的行为: -\begin{enumerate} +\begin{itemize} \item A 推测式地访问敏感数据,B 推测式地访问攻击者和受害者共享的内存区 域,用于构造受害者和攻击者之间的侧信道。通常秘密数据的内存区域和用于 构造侧信道的共享内存区域在不同的内存页,因此它们访问不同的页。 @@ -655,17 +661,17 @@ X 对应的一列将会重置,意味着待发射指令和 X 的之间的安全 要 B 在缓存中不命中。 \item 指令 B 依赖于指令 A,A的结果用于计算共享内存区域的索引。这种设计 也是攻击者推断处秘密数据要点。 -\end{enumerate} +\end{itemize} 在 TPBuf 过滤器中,以上行为模式称为 S-pattern. 如果观察到推测式执行的 指令序列具有以下特征,则认为它具有 S-pattern: -\begin{enumerate} +\begin{itemize} \item 至少有两个指令 A 和 B 访问不同的内存页 \item 指令 B 导致一级缓存缺失 \item B 依赖于 A \item A 和 B 之间可能有多个指令 -\end{enumerate} +\end{itemize} TPBuf 它记录了所有推测式的存储器访问请求,当一个新的请求在一级缓存中缺 失时,其页地址将会和 TPBuf 中其他访问的页地址比较,如果有至少一个访问访 |