Recovering a Full AES-128 Key Across Tenant Boundaries via DDR4 Row-Buffer Timing on Cloud FPGAs
本文证明了在共享云端 FPGA 上的完全无特权共同租户,可以通过利用 DDR4 行缓冲(row-buffer)时序侧信道,通过逆向工程银行映射(bank mapping)以及跨多次加密的统计聚合,克服“每银行一个插槽”的限制,从而从受害者处恢复完整的 AES-128 主密钥。
原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在现代数字世界中,我们常常想象我们的私人数据被锁在一个安全的保险库中,由层层软件和数字墙与他人的窥视隔离开来。这就是云计算的承诺:不同的用户可以共享相同的强大硬件,而无需看到彼此的工作。然而,计算机存储信息的物理现实却讲述了一个不同的故事。当计算机执行计算时,它通常需要从一个大型列表中查找数值,就像查阅字典寻找定义一样。为了快速完成这一操作,计算机需要打开其内存的一个特定部分,即所谓的行缓冲区(row buffer),以保持该列表处于就绪状态。如果计算机需要查找同一部分的另一个项目,它必须关闭当前的列表并打开一个新的列表,这个过程会多耗费极小的一段时间。这种时间上的差异虽然微乎其微,但却留下了痕迹。正如湿沙地上的脚印会显露某人的行踪一样,访问内存所需的时间可以揭示正在使用哪些数据。几十年来,安全专家一直知道这些微小的时序线索可以被用来从单台计算机中窃取秘密,但问题在于,这种技巧是否能在分隔不同用户的共享云服务器的无形边界之间奏效。
北卡罗来纳大学夏洛特分校的研究人员现在已经证明,仅利用内存访问的时序,确实有可能从共享云服务器上的邻居那里窃取完整的密钥。他们的研究重点是一种被称为现场可编程门阵列(FPGA)的特定类型云硬件,这是一种用于加速复杂任务的可重构芯片。在典型的云设置中,多个用户被放置在同一块物理卡上以节省成本。虽然软件确保了用户 A 无法直接读取用户 B 的文件,但两名用户仍然共享位于主处理器之外的相同物理内存芯片。研究人员表明,一个没有任何特殊权限、无法访问受害者数据且对密钥一无所知的用户,仍然可以恢复其邻居使用的整个加密密钥。他们通过仔细测量自己的计算机在邻居同时进行加密操作时读取内存所需的时间来实现这一点。
这项挑战远比仅仅监听邻居的活动要困难得多。在标准计算机缓存中,每一件数据都会留下其独特的足迹,允许攻击者同时看到密钥的所有十六个部分。然而,这些云服务器中使用的内存芯片表现得不同。它们有一个结构性的限制,即每个内存部分只能记住它最后打开的那个项目。当受害者加密一条消息时,他们在一行中查找十六个不同的值。由于内存部分一次只能保持一个打开的项目,前十五次查找会立即被第十六次查找所覆盖。当攻击者尝试进行监听时,前十五个部分的证据已经消失了,只留下最后一个部分是可见的。这造成了一个障碍,使得标准的黑客技术变得毫无用处,因为攻击者只能看到十六字节密钥中的一个字节,这不足以破解加密。
为了克服这一点,研究人员设计了一种聪明的策略,利用了内存芯片包含十六个独立部分(每个部分都有自己的内存缓冲区)这一事实。他们不再试图在单个部分中监听所有十六个部分,而是重新排列了秘密数据,使得密钥的十六个部分分别存在于十六个不同的内存部分中。这样一来,当受害者查找所有十六个值时,他们同时打开了所有十六个部分,且其中任何一个都不会覆盖其他部分。随后,攻击者构建了一个定制工具,可以快速检查这十六个部分,以查看哪一个仍然处于打开状态。通过使用许多不同的测试消息重复这个过程,攻击者可以收集足够的线索来重建完整的秘密密钥。研究人员在 Xilinx Alveo U250 卡上测试了这种方法,这是数据中心中使用的一种常见硬件。他们发现,通过在运行受害者加密程序的旁边运行自己的程序,他们可以恢复所有测试的十九个密钥中的整个主密钥,即使受害者正在运行一个完整的十轮加密过程。
这次攻击的成功依赖于两个主要发现。首先,研究人员必须弄清楚内存控制器是如何决定将特定数据用于哪个内存部分的。这种映射关系并不直观,且每种类型的硬件都不同。团队通过测量访问不同地址所需的时间来反向工程这一映射关系,从而从外部有效地绘制出内存布局。其次,他们必须证明他们检测到的信号是真实的,而非随机噪声。成功访问与失败访问之间的时间差异极其微小,仅持续约四个时钟周期,或大约三十二纳秒。尽管信号如此微弱,研究人员表明,通过多次尝试进行平均处理,模式就会变得清晰。在他们最真实的测试中,攻击者和受害者运行着完全独立的程序且没有任何协作,攻击者成功地从一个使用经过验证的标准加密算法进行数据加密的受害者那里恢复了完整密钥。
这项工作并不意味着目前所有的云计算都是不安全的,但它揭示了共享硬件管理方式中的一个特定漏洞。研究人员指出,目前大多数商业云实例都是为单个用户专用的,这可以防止此类攻击。然而,随着行业向更高效、更共享的硬件方向发展以降低成本,风险也在增加。该研究强调,逻辑隔离(即保持软件分离)不足以保护物理资源。内存芯片本身保留了访问历史,而这个历史可以被邻居读取。研究人员提出了几种修复方法,例如将秘密数据保存在芯片内部快速、私有的内存中,而不是共享的外部内存,或者将数据存储位置随机化,使时序线索变得毫无意义。他们还提出,云服务提供商可以监控内存访问模式,以检测是否有用户试图监视他人。
这项研究的影响不仅限于一种加密类型。用于窃取密钥的方法依赖于内存工作的基本方式,这意味着它可能适用于其他使用类似查找表的秘密保存算法。研究人员强调,他们的发现是基于实际硬件实验而非计算机模拟,这使得结果具有高度的可靠性。他们在五十个不同的随机密钥和十九个不同的加密场景下测试了该攻击,并且每次都成功了。一旦初始设置完成,恢复整个过程仅需数秒,这对于任何允许多用户共享同一物理内存的未来云环境来说,都是一个实际存在的威胁。
最终,这项研究是一个警告,即计算机硬件的物理世界有着自身的规则,这些规则是软件无法逾越的。正如两个共用房间的人即使看不见对方,也能听到对方的脚步声一样,两个共享云服务器的用户也可能能够听到彼此内存访问的时序。研究人员已经证明,只要有足够的耐心和正确的工具,这些微弱的回声可以被放大成清晰的图像。随着云服务提供商不断将更多用户打包进更少的芯片中以提高效率,理解这些物理侧信道对于设计真正安全的系统至关重要。解决方案不在于建立更高的数字围墙,而在于理解其下方的物理内存行为,并确保一个用户的行为历史无法被另一个人读取。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。