gpt4 book ai didi

security - 刷新和重新加载缓存侧信道攻击

转载 作者:行者123 更新时间:2023-12-03 21:47:52 28 4
gpt4 key购买 nike

我正在尝试了解 Flush + Reload 缓存侧信道攻击。
据我所知,攻击利用了可以将非特权数据加载到缓存的事实(在利用分支预测、推测执行等时)。然后,攻击者使用探针阵列来访问内存,假设加载速度快的内存位于缓存中( secret 数据的一部分)。
我发现不清楚的一件事是攻击者如何能够遍历非特权内存的虚拟内存?例如 - 迭代内核虚拟内存或其他进程的内存。

最佳答案

首先,你应该看看我对原因的描述 lookup tables don't run in constant time ,因为我有缓存和标记如何工作​​的图片。
缓存位于 MMU 之间和 CPU 以及 MMU 是创建虚拟内存的原因;因此缓存攻击实际上是虚拟内存的一个独立功能。它们是强制缓存刷新的功能,然后选择缓存将如何重新加载,因为您正在寻找时间信息。缓存之间的外部获取是泄漏信息的原因。 (注意,这基本上是一个 x86 问题,因为它不允许缓存锁定,这与 1990 年以来的大多数 CPU 不同。另一个警告是我只为非 x86 架构制作硬件,所以如果我对缓存有误,请告诉我锁定关键数据)。
作为一般示例,我们有一个 1k 字节的缓存,我们将使用 AES s-box 作为查找表,因此有 256 个条目。

  • 通过从内存中读取 2k 字节,通过不同的进程强制刷新缓存刷新。
  • AES 进程开始运行并通过总线获取代理将数据 sbox 数据放入缓存
  • 然后,我们从内存中读取 1023 字节不同数据的另一个进程,以覆盖除 AES 条目之外的所有条目,并查看该数据何时因总线读取而变慢

  • 现在是我们攻击虚拟内存的 MMU 版本。如果您查看我链接的答案,您会看到有缓存标签。现在让我们假设一个简单的例子,我有两个 20 位(1MiB 地址空间)的进程。 MMU 使这两个进程具有相同的虚拟表,从 0xYYY00000 开始,其中 YYY 是内存中的实际前缀。如果我知道 MMU 如何映射数据,并且由于内存重叠,我可以根据在缓存中创建的标记信息创建结构化攻击。
    Bernstein's Cache-timing attacks on AES 中有更多关于如何在软件方面构建这些攻击的详细信息。 .

    关于security - 刷新和重新加载缓存侧信道攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63656794/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com