diff options
author | Iru Cai <mytbk920423@gmail.com> | 2019-05-02 16:41:06 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2019-05-02 16:41:06 +0800 |
commit | 0babd3f3251fc26ea2f1cebdca2b3830ee045a24 (patch) | |
tree | 638d0fde9ae9cd783ca0a1c1a5d8854324be3bed | |
parent | 59ebb50b73ea4f32a7f4eaec327604b1ee68eb6e (diff) | |
download | dissertation-0babd3f3251fc26ea2f1cebdca2b3830ee045a24.tar.xz |
related work finished?
-rw-r--r-- | chap/chap2.tex | 59 | ||||
-rw-r--r-- | chap/chap3.tex | 51 | ||||
-rw-r--r-- | chap/chap6.tex | 4 | ||||
-rw-r--r-- | thesis.bib | 57 |
4 files changed, 160 insertions, 11 deletions
diff --git a/chap/chap2.tex b/chap/chap2.tex index ec9c53f..0326ef9 100644 --- a/chap/chap2.tex +++ b/chap/chap2.tex @@ -3,8 +3,38 @@ \chapter{Meltdown和Spectre攻击} +本章首先介绍侧信道攻击,之后对已有的 Meltdown 和 Spectre 攻击的各种变 +体进行分类讲解,最后简单地介绍已有攻击的其他使用形式。 + \section{侧信道攻击} +侧信道攻击是利用计算的过程对环境产生的影响,从而获取秘密数据的技术。 +1996年,Paul Kocher 发现通过对私钥的操作进行计时,可以找出 +Diffie-Hellman,RSA 等密码的私钥。\supercite{TimingAttack} 这是最早的 +侧信道攻击的研究。之后研究者发现了更多侧信道,如功耗 +\supercite{MOP2010}、电磁辐射\supercite{EMpower}、温度 +\supercite{hutter}、噪声\supercite{acoustic}等。 + +现代计算机系统采用多种优化手段,优化可以作用于处理的数据的值、数据的位 +置、数据存放位置的访问频率等,攻击者可以通过这些优化产生的效果,推断出 +计算机系统处理的秘密数据的值。基于软件的微架构侧信道攻击 +\supercite{gruss}利用微架构优化造成的时间区别,这种攻击不需要物理访问 +计算机系统,只需要在系统上运行代码。 + +高速缓存计时攻击是一种重要的侧信道攻击的方式。当高速缓存中存在一个地址 +的数据时,访问这个地址的时间更短,利用这个性质,攻击者可以得知一个地址 +是否曾经被访问过。缓存计时攻击的常见形式有: + +\begin{itemize} +\item Evict+Time: 攻击者清除一个缓存组,然后对一个算法的运行进行计时, + 检查它的运行时间是否受到影响 +\item Prime+Probe: 受害者运行一段程序后,攻击者访问缓存某一组的每一路, + 观察访问时间是否有变化 +\item Flush+Reload: 攻击者利用 x86 的 clflush 等指令清除一个共享内存地 + 址对应的缓存行,在受害者运行一段程序后,攻击者重新装载该行对应的地址 + 的数据,通过测量访问时间推断受害者是否访问了这个共享的地址 +\end{itemize} + \section{Meltdown和Spectre攻击} Meltdown\supercite{meltdown} 和 Spectre\supercite{spectre} 是最早发现 @@ -51,7 +81,6 @@ Foreshadow-NG\supercite{foreshadowNG} 利用这种攻击方法,可以绕过操 后,触发异常,操作系统才对浮点寄存器进行保存和恢复。 LazyFP\supercite{lazyfp} 攻击利用这个异常,利用这个方法,攻击者可以读 出一个处理器核此前运行的使用了浮点寄存器的程序中的浮点寄存器的值。 -\parencite{lazyfp} \subsection{Spectre型攻击} @@ -59,6 +88,12 @@ Spectre 型攻击利用处理器对控制流或数据流的预测,并进行推 瞬时指令。Spectre 型攻击中,瞬时指令访问的是程序在体系结构层面能访问的 数据,可以绕过软件定义的安全策略,如边界检查等。 +推测式执行的常见形式是控制流的推测式执行。控制流的推测式执行依赖于转移 +预测技术,包含了分支的预测、间接转移目标地址的预测和函数返回地址的预测, +对应于 Spectre 攻击中 Spectre-PHT, Spectre-BTB, Spectre-RSB. 此外,处 +理器预测 load 指令和程序序列之前访问地址未知的 store 指令地址不冲突, +推测式执行这样的 load 指令,它对应 Spectre-STL. + \subsubsection{Spectre-PHT} Spectre-PHT 利用分支预测器,攻击者可以训练转移预测器,使得转移预测器执 @@ -67,7 +102,10 @@ Spectre-PHT 利用分支预测器,攻击者可以训练转移预测器,使 Spectre v1 是 Spectre-PHT 类型的 Spectre 攻击。 推测式缓冲区溢出(Speculative Buffer Overflow) -\supercite{spec-buffer-overflow} 是 Spectre-PHT 的另一种形式。 +\supercite{spec-buffer-overflow} 是 Spectre-PHT 的另一种形式。它可以在 +瞬时执行指令流中绕过边界检查,造成缓冲区溢出,从而攻击者可以用类似于缓 +冲区溢出的方式,使程序在推测式执行的过程中,执行攻击者指定的指令流,泄 +露秘密数据。 \subsubsection{Spectre-BTB} @@ -112,10 +150,23 @@ Prime+Probe 方式进行 Meltdown 和 Spectre 攻击的形式。通过利用缓 \subsection{NetSpectre} -NetSpectre \supercite{netspectre} 是通过网络使用 Spectre 的攻击方法。 +NetSpectre \supercite{netspectre} 是通过网络使用 Spectre 的攻击方法, +这种攻击方式将 Spectre 由本地攻击扩展到远程攻击,使得不会运行攻击者控 +制的代码的设备也受到 Spectre 攻击的威胁。 + +在 NetSpectre 攻击中,攻击者利用两中 NetSpectre 组件,一个是泄露组件 +(leak gadget),通过改变微架构状态,泄露秘密数据;一个是传送组件 +(transmit gadget),它将微架构状态的改变通过网络传送给攻击者,攻击者 +可以通过网络数据包的延迟,推断出微架构状态,从而获取秘密数据。 + +NetSpectre 可以在局域网,或者 Google cloud 等云平台中使用。利用 +Evict+Reload 缓存信道,每小时可以泄露 15 比特。利用基于 AVX 的隐蔽信道, +可以每小时泄露 60 比特。 \subsection{SgxPectre} -\supercite{sgxpectre} +SgxPectre \supercite{sgxpectre} 将 Spectre 攻击用于泄露 Intel SGX 环境 +中的数据。通过在 SGX enclave 之外污染 BTB,可以改变 SGX enclave 中的控 +制流,进行 Spectre-BTB 攻击。 % vim:ts=4:sw=4 diff --git a/chap/chap3.tex b/chap/chap3.tex index 5859187..0f34701 100644 --- a/chap/chap3.tex +++ b/chap/chap3.tex @@ -57,18 +57,35 @@ Javascript 引擎的计时器的精度。 \subsubsection{SafeSpec} -\supercite{safespec} 提出了一种设计准则:使用临时结构保存推测式执行产 +SafeSpec\supercite{safespec} 提出了一种设计准则:使用临时结构保存推测式执行产 生的状态,而不影响处理器的主要微架构状态。在实现中,SafeSpec 为缓存和 TLB 添加了影子结构,推测式执行的指令对缓存和 TLB 修改临时写入至相应的 影子结构,直到此前分支正确或指令提交时,再将影子结构的数据更新至主结构。 \subsubsection{InvisiSpec} -\supercite{invisispec} +InvisiSpec\supercite{invisispec} 和 SafeSpec 类似,使用一个称为推测式 +执行缓冲区(Speculative Buffer)的结构存放推测式执行的 load 指令从存储 +系统中获取的数据,直到这条指令安全的时候再让它更新缓存。和 SafeSpec 不 +同的是,InvisiSpec 考虑了缓存一致性和存储一致性的问题,在 load 指令确 +认安全之后,增加一个验证的步骤,确认使用没有违反存储一致性。 + +在 gem5 模拟器下, 使用 SPEC CPU2006 和 PARSEC 对 InvisiSpec 进行评测, +以 Spectre 为威胁模型,在 TSO 内存模型下,InvisiSpec 平均性能损失为 +21\%,而使用 fence 性能下降 74\%. \subsubsection{DAWG} -\supercite{dawg} +Dynamic Allocated Way Guard(DAWG)\supercite{dawg} 是一种防御缓存侧信道 +攻击的缓存设计。DAWG让不同的程序使用不同的安全域,一个安全域中的程序只 +能使用缓存中的某些路,和 Intel CAT 允许程序在缓存任意一路命中不同, +DAWG 不允许程序在安全域规定的路之外中发生缓存命中。 + +在 zsim 模拟器中使用 SPEC CPU2006, PARSEC, GAPBS 进行模拟,相对于 +Intel CAT,在不同的评测程序和划分方式下,大多数程序性能下降为 4\%\~7\%. + +DAWG 的主要缺点是需要操作系统的支持。此外,DAWG 不能防御 NetSpectre 等可 +在同一安全域内进行的攻击。 \subsubsection{Context-Sensitive Fencing} @@ -79,7 +96,6 @@ Decoding (CSD)\supercite{context-sensitive-decoding},一种微码翻译机制 fence 等微码,阻止不安全指令的推测式执行。为了降低 fence 的性能开销, CSF 还提出了3种新的用于防御 Spectre 的 fence. - CSF 由以下几个关键部件组成: \begin{itemize} \item 微码自定义机制 CSD:使处理器精确地在指令流中插入 fence,减轻推测 @@ -93,7 +109,32 @@ CSF 防御 Spectre 的开销在 8\% 以下。 \subsubsection{Conditional Speculation} -\supercite{conditional-speculation} +Conditional Speculation\supercite{conditional-speculation} 是一种检测 +推测式执行中的潜在的泄露数据的访存指令,并阻止其执行的方法。为了检测可 +能泄露数据的访存指令,此工作提出安全相关(security dependence)的概念, +对于信道 $c$,指令 $j$ 安全依赖于指令 $i$,如果: + +\begin{itemize} +\item 在程序序列中,指令 $j$ 在 $i$ 之前 +\item $j$ 在 $i$ 之前推测式地执行,并且 $j$ 会通过信道 $c$ 泄露数据 +\end{itemize} + +存在安全相关的指令可能泄露数据,处理器对其做出标记。为了减少阻止存在安 +全相关的指令执行造成的性能损失,可以使用两个过滤器进一步检测指令是否可 +以安全执行: + +\begin{itemize} +\item 基于缓存命中的过滤器:如果访存指令在缓存中命中,这样的指令不会修 + 改缓存的内容,从而不会泄露数据,这样的指令可以执行。 +\item 基于可以页的过滤器:考虑 Flush+Reload 等常见的基于共享内存的高速 + 缓存侧信道攻击,在一个 Spectre 组件中,存在两个内存访问操作,一个访 + 问秘密数据,一个泄露秘密数据,泄露数据的访存操作访问了攻击者和受害者 + 共享的内存区域,和秘密数据位于不同的物理页。根据这个性质,在遇到一个 + 被标记的访存指令时,可以检测它是否和访存队列中已有的指令是否访问相同 + 的物理页,判断指令是否安全。 +\end{itemize} + +在 gem5 模拟器中用 SPEC CPU2006 进行评测,平均性能开销为 6.8\%. % \begin{comment} % diff --git a/chap/chap6.tex b/chap/chap6.tex index 08b5e49..4dbaa5e 100644 --- a/chap/chap6.tex +++ b/chap/chap6.tex @@ -1,5 +1,5 @@ \chapter{总结与展望} -\subsection{本文工作总结} +\section{本文工作总结} -\subsection{未来工作展望} +\section{未来工作展望} @@ -402,4 +402,61 @@ This thesis highlights two aspects of the BOOM design: its industry-competitive organization={IEEE} } +% side channel +@inproceedings{TimingAttack, + author = {Kocher, Paul C.}, + title = {Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems}, + booktitle = {Proceedings of the 16th Annual International Cryptology Conference on Advances in Cryptology}, + series = {CRYPTO '96}, + year = {1996}, + isbn = {3-540-61512-1}, + pages = {104--113}, + numpages = {10}, + url = {http://dl.acm.org/citation.cfm?id=646761.706156}, + acmid = {706156}, + publisher = {Springer-Verlag}, + address = {London, UK, UK}, +} + +@book{MOP2010, + author = {Mangard, Stefan and Oswald, Elisabeth and Popp, Thomas}, + title = {Power Analysis Attacks: Revealing the Secrets of Smart Cards}, + year = {2010}, + isbn = {1441940391, 9781441940391}, + edition = {1st}, + publisher = {Springer Publishing Company, Incorporated}, +} + +@misc{EMpower, + author = {Josyula R. Rao and Pankaj Rohatgi}, + title = {EMpowering Side-Channel Attacks}, + howpublished = {Cryptology ePrint Archive, Report 2001/037}, + year = {2001}, + note = {\url{https://eprint.iacr.org/2001/037}}, +} + +@inproceedings{hutter, + title={The temperature side channel and heating fault attacks}, + author={Hutter, Michael and Schmidt, J{\"o}rn-Marc}, + booktitle={International Conference on Smart Card Research and Advanced Applications}, + pages={219--235}, + year={2013}, + organization={Springer} +} + +@inproceedings{acoustic, + title={Acoustic Side-Channel Attacks on Printers.}, + author={Backes, Michael and D{\"u}rmuth, Markus and Gerling, Sebastian and Pinkal, Manfred and Sporleder, Caroline}, + booktitle={USENIX Security symposium}, + pages={307--322}, + year={2010} +} + +@phdthesis{gruss, + author = {Daniel Gruss}, + title = {Software-based Microarchitectural Attacks}, + school = {Graz University of Technology}, + year = 2017, +} + % vim:ts=4:sw=4 |