想象一下,你计算机的内存(DRAM)是一座拥有数百万本书籍(行)堆放在书架上的巨型图书馆。多年来,为了节省空间,这座图书馆变得越来越小、越来越拥挤。但存在一个问题:如果你过度摇晃某个特定的书架,旁边书架上的书籍可能会从书脊上脱落并变得混乱。这被称为RowHammer。这是一种安全漏洞,黑客可以通过剧烈“摇晃”某个书架,意外地改变相邻书架中的数据,从而窃取机密或破坏系统。
本文介绍了一种保护这座图书馆的新颖且更聪明的方法,称为PrISM。以下是其工作原理,使用简单的类比进行说明:
旧方案的缺陷
为了阻止摇晃,图书馆管理员曾尝试过两种主要方法,但两者都存在重大缺陷:
“完美计数器”方案(PRAC):
想象一位图书管理员站在每一个书架旁边,手里拿着一个计数器。每当有人抽出一本书,他们就会点击计数器。如果某个书架被摇晃的次数过多,他们会立即停止图书馆的运行以进行修复。
- 缺陷: 这极其缓慢。图书管理员必须为每一次抽书动作停下来点击计数器,即使该书架只是被正常使用。这将一座快速的图书馆变成了一座缓慢的图书馆。此外,为每个书架配备一个计数器需要占用大量空间(昂贵的硬件)。
“随机猜测”方案(MINT):
为了节省时间,管理员尝试了另一种策略。他们不再监视每一个书架,而是每小时随机挑选一个书架进行检查。如果发现有问题,就进行修复。
- 缺陷: 如果图书馆很平静,这种方法效果很好。但如果黑客持续地摇晃某个特定书架,随机挑选者可能会因为运气不好而一直错过那个书架。为了解决这个问题,管理员不得不更频繁地检查书架(从每小时一次改为每十分钟一次),即使没有人发动攻击。这使得图书馆对所有用户(包括无辜用户)都变慢了。
新方案:PrISM(“历史侦探”)
作者提出了PrISM,它结合了“随机猜测”的速度与侦探的智慧。
工作原理:
PrISM 不再只是随机挑选一个书架进行检查,而是每小时挑选几个书架进行采样。它会维护一个小型的“便签”列表(称为采样历史队列),记录它最近看到但尚未修复的书架。
- “交集”技巧:
想象黑客正在摇晃第 500 号书架。
- 第 1 小时: PrISM 挑选第 500 号书架进行检查。此时它尚未被摇晃到危险程度,因此 PrISM 只是在便签列表上写下“第 500 号书架”。
- 第 2 小时: PrISM 挑选了一组新的书架。纯属巧合,它再次挑选了第 500 号书架。
- 警报: PrISM 查看其便签列表,发现“第 500 号书架”已经存在,于是说道:“啊哈!这个书架反复出现。它被摇晃得太厉害了!”随后,它仅针对该特定书架呼叫紧急修复。
为什么这更好?
- 对普通用户: 如果你只是正常阅读书籍,你的书架不会连续两次出现在便签列表上。PrISM 不会打扰你。图书馆保持快速。
- 对攻击者: 如果黑客试图反复摇晃某个书架,他们无法隐藏。最终,他们的书架会两次出现在列表上,PrISM 就会抓住他们。
- 无需计数器: PrISM 不需要为每个书架配备计数器。它只需要一个微小、廉价的列表(大约一张便利贴的大小)来记录图书馆的每个区域。
结果
本文将这一新系统与旧系统进行了测试比较:
- 速度: PrISM 的速度几乎与完全没有安全措施的图书馆一样快。旧的“完美计数器”系统使速度降低了 14%,而“随机猜测”系统在图书馆繁忙时使速度降低了高达 17%。PrISM 仅使速度降低了约1.5%(有时低至 0.2%)。
- 空间: PrISM 使用极少量的内存来存储其“便签”,使其比旧系统更易于构建且成本更低。
- 安全性: 即使黑客非常激进地摇晃书架,它也能成功阻止他们。
一句话总结
PrISM 就像一名保安,他既不会监视每一个人(太慢),也不会仅仅随机猜测(风险太大)。相反,保安会保留一份他们最近见过的人员短名单。如果在短时间内看到同一个人两次出现在名单上,那时他们就知道出了问题并采取行动。这样既让其他所有人保持图书馆的快速运转,又能抓住捣乱者。
技术摘要:Loaded Dice:解决可扩展概率 RowHammer 防御中的非选择问题
1. 问题陈述
RowHammer 漏洞是指反复激活 DRAM 行会导致相邻受害行发生位翻转,随着 DRAM 技术的演进,该漏洞日益严重。引发翻转所需的最小激活次数(即 RowHammer 阈值 TRH)显著下降,尤其是针对双面攻击(TRH−D)。
现有的缓解策略在安全性、性能和面积开销之间面临权衡:
- 每行激活计数(PRAC): 作为 DDR5 的标准,PRAC 使用每行计数器来精确跟踪激活次数。然而,通过读 - 修改 - 写操作在每次激活时更新这些计数器,会显著增加 DRAM 时序参数(例如 tRP 和 tRC),导致严重的性能下降(例如,平均 slowdown 约 14%),并且由于计数器单元的存在而产生显著的面积开销。
- 概率缓解方案(例如 MINT): 这些方案通过在周期性窗口内随机选择行进行缓解,避免了每行计数器。虽然在高阈值(TRH−D≥1000)下有效,但在较低阈值下会遭受非选择问题。为了确保被频繁锤击的行不会被随机采样反复跳过,这些方案必须静态地提高其缓解率(更频繁地发出刷新管理命令 RFM)。这种固定速率的扩展会降低有效内存带宽,并导致显著的 slowdown(例如,在 TRH−D=250 时为 17.5%),即使在没有攻击的情况下也是如此。
核心挑战在于设计一种能够扩展到较低 TRH−D 的缓解方案,同时避免统一地增加缓解频率,从而在保持安全性的同时为良性工作负载保留性能。
2. 方法论:PrISM
作者提出了PrISM(基于概率交集采样的缓解),这是一种可扩展的片内 DRAM 防御机制,通过关联缓解窗口内的采样行地址来解决非选择问题。
核心机制
PrISM 在固定大小的缓解窗口上运行,但利用**采样历史队列(SHQ)**来跟踪随时间变化的行活动。
- 采样: 在每个窗口中,PrISM 从总共 W 个时隙中随机采样 R 个激活时隙。
- 交集检测: 当某行被采样时,PrISM 检查其是否与 SHQ 中的任何条目匹配。SHQ 存储了前 L 个窗口(回溯窗口)中已采样但尚未缓解的行。
- 缓解请求:
- 默认缓解: 选择一个非交集的采样行作为该窗口的默认缓解候选。
- 额外缓解: 如果采样行与 SHQ 中的条目匹配(即“交集”),则表明存在持续性活动。PrISM 将该行排入待处理缓解队列(PMQ),并通过现有的 JEDEC **Alert 退避(ABO)*协议请求额外*的缓解。
- 服务: PMQ 缓冲等待服务的行。行在默认机会(目标行刷新或主动 RFM)期间被缓解。如果 PMQ 填满,或者某行的激活次数超过延迟阈值(TPMQ),PrISM 会发出 Alert 以触发立即 RFM。
关键设计特性
- 无每行计数器: PrISM 通过不为每一行维护计数器,避免了 PRAC 的面积和时序开销。
- 动态缓解率: 与 MINT 不同(MINT 随着 TRH−D 下降而全局增加缓解率),PrISM 保持较低的默认缓解率。仅当检测到持续性活动(交集)时,才增加缓解频率。
- JEDEC 兼容性: PrISM 重用了现有的 ABO 协议,无需更改 DRAM 阵列或接口。
- 地址映射: 对于超低阈值(TRH−D≤250),PrISM 采用随机化地址映射,以防止具有高空间局部性的良性工作负载触发误报交集。
3. 主要贡献
- 非选择问题的识别: 本文识别了固定速率概率防御在低阈值下失效的统计障碍,提出了一种不依赖统一速率扩展的新方法。
- PrISM 设计: 一种新颖的基于交集的缓解方案,利用 SHQ 关联跨窗口的采样行,仅针对持续性攻击者进行有针对性的额外缓解。
- 安全分析: 作者对最坏情况下的“圆形-X 行”攻击进行建模,以确定不同窗口大小(W)、采样时隙(R)和回溯窗口(L)配置下所支持的最小 TRH−D。
- 全面评估: 本文在 57 个工作负载上评估了 PrISM,对比了 PRAC(特别是 QPRAC)和 MINT,并变化了 TRH−D、内存密集度和系统配置。
4. 结果
使用 Ramulator2 DRAM 模拟器,配合 8 核乱序处理器和 DDR5-8000B 进行的评估表明:
- 性能开销:
- 在 TRH−D=500 时,PrISM 造成的平均 slowdown 仅为0.2%,而 PRAC 为14%,MINT 为7.1%。
- 在超低阈值 TRH−D=250 时,PrISM 实现了**1.5%的平均 slowdown。相比之下,MINT 遭受10.7%**的 slowdown,而 PRAC 仍保持在约 14%。
- 在高内存密集度工作负载上,PrISM 将 slowdown 从 17.5%(TRH−D=250 时的 MINT)降低至 2.5%。
- 存储开销:
- 在 TRH−D=500 时,PrISM 每个 Bank 仅需625B 的 SRAM。
- 这比 Mithril 小 20 倍,比 ProTRR 小 170 倍。即使在 TRH−D=250 时,PrISM 的存储开销也比基于安全计数器的防御方案低一到两个数量级。
- 功耗开销:
- 功耗开销极小,估计约为 DRAM 芯片总功耗的0.6% 到 1.0%,主要归因于 SRAM 结构和小型 TRNG。
- 安全性:
- PrISM 支持低至 250 的 TRH−D,每个 Bank 的目标平均无故障时间(MTTF)为 10,000 年。
- 该系统对拒绝服务(DoS)攻击具有鲁棒性;虽然攻击者可以迫使最坏情况下的 slowdown(在 TRH−D=250 时高达 2.31 倍),但这与现有的内存性能攻击相当。
5. 意义与主张
本文声称,PrISM 代表了 RowHammer 防御的重大进步,它解决了概率方案的可扩展性限制,同时避免了确定性基于计数器方法的高昂成本。
- 可扩展性: PrISM 通过仅在必要时动态增加缓解,成功扩展至低 TRH−D(低至 250),避免了先前概率方法的“固定速率扩展”惩罚。
- 实用性: 通过重用现有的 ABO 协议且无需 DRAM 阵列修改,PrISM 被呈现为近期 DDR5 系统的实用解决方案,而 PRAC 因其高开销导致其采用存在不确定性。
- 效率: 可忽略的性能 slowdown、最小的存储需求和低功耗的结合,使 PrISM 成为 PRAC 和现有概率防御(如 MINT)的优越替代方案,尤其适用于高性能、高内存密集度的工作负载。
作者得出结论,PrISM 提供了安全的 RowHammer 保护,其性能和面积特性使其在当前和未来的 DRAM 技术中具备商业部署的可行性。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。