Attack 概述
传统攻击(CONVENTIONAL ATTACKS)
在传统攻击中,Attacker 通常:
- 与 Victim 共享硬件资源 (比如说 LLC,BP,Prefetcher 等)
- 可以观察,改变微架构状态
攻击步骤
本文作者将传统攻击分为以下三步,如 Fig 1 所示:
-
定位“漏洞”:该漏洞包括“代码漏洞”(vulnerable code gadgets),即与 secrect 相关的代码片段;也包括“硬件漏洞”,即 Attack 与 Victim 共享的硬件资源,Attack 通过改变与观察共享硬件资源的状态改变,从而执行攻击。
-
观察微架构状态变化:在定位“漏洞”之后,Attacker 需要确定与 Victim 的“冲突域”(collision domain),该“冲突域”会对 Victim 的执行过程造成影响,从而改变微架构状态。
读者或许对“冲突域”这个概念有些困惑,比如说某一个 Cache Set,Attacker 和 Victim 都要占用,那么这个 Cache Set 就是冲突域。同样的, TLB,Prefetcher 等各种硬件资源都会具有类似于 Cache 的结构,因此这些硬件资源也会存在“冲突域”。 -
恢复 Secret 信息: 通过观察微架构的状态变化,Attacker 可以获知 Victim 的内存访问“模式”(pattern),从而可以恢复 Secret 信息。