summaryrefslogtreecommitdiff
path: root/chap/chap3.tex
diff options
context:
space:
mode:
Diffstat (limited to 'chap/chap3.tex')
-rw-r--r--chap/chap3.tex21
1 files changed, 15 insertions, 6 deletions
diff --git a/chap/chap3.tex b/chap/chap3.tex
index 742d095..8fe2c08 100644
--- a/chap/chap3.tex
+++ b/chap/chap3.tex
@@ -38,20 +38,29 @@ retpoline\supercite{retpoline} 是 Google 提出的防御 Spectre-BTB 的方法
完成跳转,从而使用 RSB 而不是 BTB 来进行间接转移的转移预测。
% index masking
-Linux 在使用了数组边界检查的条件代码块中使用 array\_index\_nospec 宏
-\supercite{linux-spec},使得在推测式执行的过程中,数组的索引始终在界内,
-避免了推测式的访问秘密数据。
+Webkit 在数组访问中使用 index masking\supercite{webkit} 方法,它让数组
+下标和一个值进行与操作,去掉下标高位的1,将数组下标控制在一定范围内,
+防止处理器在推测式执行中访问数组指定范围之外的数据。Linux 构造了一个粒
+度更细的 array\_index\_nospec 宏\supercite{linux-spec},使得在推测式执
+行的过程中,数组的索引始终在界内,避免了推测式的访问秘密数据。
% poison value
+Webkit 还使用了指针投毒(pointer poisoning)的方式,它考虑分支用于做类
+型检查的情形。对于不同类型的数据,Webkit 将这种类型的指针和一个类型对
+应的值异或,要使用的时候再异或这个值得到指向数据的指针,如果类型不匹配,
+则得到的指针会指向一个程序无法访问的内存区域。通过这种方法,程序在推测
+式执行中无法通过这种指针访问到程序中的数据,从而避免了秘密数据的泄露。
-% site isolation
+% site isolation, FIXME: needs citing
Google 为 Chrome 浏览器使用了站点隔离(site isolation)技术,使得浏览
器用不同的进程访问不同的网站,从而攻击者无法通过用 Javascript 通过侧信
道攻击获取另一站点相关的数据。
% timer reduction
-降低计时器精度可以降低计时攻击所用侧信道的精度,具体方式包括降低
-Javascript 引擎的计时器的精度。
+降低计时器精度可以降低计时攻击所用侧信道的精度,一个例子是在浏览器中降
+低 Javascript 引擎中 performance.now 等计时器的精度。
+\supercite{webkit} 但是相关研究发现,攻击者可以使用其他方式构造高精度
+的计时器\supercite{js-timer},因此降低计时器精度不是一个有效的防御方法。
\subsection{硬件防御方案}