四种攻击方式的原理
一, Flush + Reload
Flush + Reload基于共享内存实现,是一种跨内核、跨虚拟机的Cache 探测方法。在Flush 阶段,攻击者将监控的内存块从cache中驱逐出去,然后在Trigger阶段等待目标用户访问共享内存。在Reload阶段,攻击者重新加载监控的共享内存块。如果在等待的期间,目标虚拟机访问过的内存块不需要重新加载,时间将会较短,因为这些数据已经被缓存在cache中。根据加载时间长短,可判定目标虚拟机访问过的数据。用图来表示可能更清晰一点
二, Flush + Flush
与Flush-Flush攻相比,Flush+ Flush是基于clflush指令执行时间的长短来实施攻击的。
首先,通过flush清空Cache原始数据,然后等待目标进程运行,更新Cache,并刷新共享缓存行,测量刷新时间,根据测量时间判断原始数据是否被缓存。
三, Prime-Probe
首先,攻击者用预先准备的数据填充特定多个cache 组,然后等待目标虚拟机响应服务请求,将cache数据更新,最后重新读取Prime 阶段填充的数据,测量并记录各个cache 组读取时间。图解如下:
四, Evict-Time
首先目标程序运行,并记录其运行时间,使用Evict方法将cache中的程序覆盖然后再次执行程序,并第二次记录执行程序的时间,如果执行时间变长则说明未命中,反之命中
- 下周目标:希望自己能真正实现一次侧信道攻击!