有许多处理缓存攻击的科学出版物。最近,发布了 CacheBleed 攻击,该攻击利用英特尔 Sandy Bridge 架构上的缓存库冲突。大多数定时攻击使用类似的方法:
- 攻击者用他控制的相同随机数据填充缓存。
- 攻击者在他的受害者进行一些计算(例如加密)时等待。
- 攻击者继续执行并测量加载他在步骤 1 中写入缓存的每组数据的时间。如果受害者访问了一些缓存集,它将驱逐攻击者的一些行,攻击者观察到内存增加这些线路的访问延迟。
通过这样做,攻击者可以找出受害者访问了哪些缓存集,甚至是哪些缓存行。
我读过的大多数论文都会自动得出结论,攻击者有可能推断出写入这些缓存位置的数据(例如安全私钥)。这是我不明白的:
如果我知道受害者 V 访问了某个缓存位置,我如何获取他的数据?许多内存地址映射到相同的缓存位置,即使我有完整的内存地址,我也怀疑攻击者可以执行 DMA。
作为参考,您可以参考最近发布的CacheBleed攻击。