summaryrefslogtreecommitdiff
path: root/chap/chap3.tex
diff options
context:
space:
mode:
Diffstat (limited to 'chap/chap3.tex')
-rw-r--r--chap/chap3.tex22
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 中其他访问的页地址比较,如果有至少一个访问访