我想了解一下刷新+再发缓存侧通道攻击。据我所知,攻击利用了这样一个事实,即非特权数据可以加载到缓存中(当利用分支预测、推测执行等)。然后,攻击者使用一个探测数组来访问内存,该内存被快速加载到缓存(秘密数据的一部分)上。
有一件事我觉得不清楚,那就是攻击者如何能够迭代虚拟内存,即非特权内存?例如,迭代内核、虚拟内存或其他进程的内存。
发布于 2020-08-30 14:26:30
首先,您应该看看我对为什么使用查找表不会在固定时间内运行的描述,因为我有缓存和标记工作的图片。
缓存位于MMU和CPU之间,而MMU是创建虚拟内存的原因;因此,缓存攻击实际上是虚拟内存的一个独立功能。它们是强制缓存刷新,然后选择缓存将如何重新加载的函数,因为您正在寻找时间信息。缓存之间的外部获取是信息泄漏的原因。(注意,这基本上是一个x86问题,因为它不允许缓存锁定,不像1990年以来的大多数CPU。另一个警告是,我只为非x86架构制作了硬件,所以如果我对关键数据的缓存锁定错误,请让我知道)。
作为一个普通示例,我们有一个1k字节的缓存,我们将使用AES s-box作为查找表,因此有256个条目。
现在是MMU版本,我们攻击虚拟内存。如果您查看我所链接的答案,您将看到有缓存标记。现在,让我们假设一个简单的例子,其中我有两个20位的进程(地址空间的1MiB)。MMU使这两个进程都具有来自0xYYY 00000的相同的虚拟表,其中YYY是内存中的实际前缀。如果我知道MMU是如何映射数据的,并且我可以根据缓存中创建的标记信息创建一个结构化攻击,因为内存是如何重叠的。
关于如何在伯恩斯坦对AES的缓存定时攻击中的软件端构建这些攻击,还有更多的细节。
发布于 2020-09-07 00:07:40
https://stackoverflow.com/questions/63656794
复制相似问题