TLB Partitioning [Articles Reading]

TLB Partitioning [Articles Reading]

Secure and Scalable TLB Partitioning Against Timing Side-Channel Attacks 是一篇关于 TLB(Translation Lookaside Buffer)安全的论文,提出了一种安全且可扩展的 TLB 分区架构,用于防御基于时间的侧信道攻击。

研究背景

TLB 的重要性与安全威胁

TLB 是现代处理器中用于加速虚拟地址到物理地址转换的关键组件,它缓存最近使用的地址映射,显著提高了内存访问效率。然而,TLB 的共享特性使其成为侧信道攻击的潜在目标。

现有攻击技术

近年来,研究人员发现 TLB 可以作为时间侧信道攻击的载体:

  • TLBleed:利用 Intel 超线程技术中 TLB 的共享特性,成功恢复 EdDSA 和 RSA 私钥

  • TLB;DR:通过逆向工程 TLB 结构,提高了攻击效率和速度

  • GPU TLB 攻击:利用 GPU 中 SM(Streaming Multiprocessors)共享 L3 TLB 的特性,突破 NVIDIA MIG 的隔离保证

现有防御方案的局限性

目前针对 TLB 侧信道攻击的防御方案主要有两种:

  1. 分区(Partitioning):如 SP-TLB,将 TLB 分为安全和非安全域,但静态分区导致资源利用率低

  2. 随机化(Randomization):如 RF-TLB 和 TLBCOAT,通过随机化 TLB 条目放置来破坏攻击,但随着攻击技术的发展可能失效

核心设计思想

论文提出了一种安全且可扩展的 TLB 分区架构,主要特点包括:

  1. 基于Set的分区:采用 set-based partitioning 而非 way-based partitioning,提高灵活性和效率

  2. 动态资源复用:当安全域未被使用时,非安全进程可以临时使用这些资源,提高 TLB 利用率

  3. 细粒度隔离:不仅在安全和非安全域之间实现隔离,还在不同安全进程之间实现隔离

详细设计

整体架构

TLB Partitioning

TLB Set被分为两个域:

  • 非安全域(NS):供普通进程使用

  • 安全域(S):保留给安全敏感进程使用

当没有安全进程活跃时,安全域可以被非安全进程使用,以最大化资源利用率。

每个安全域根据其需求在安全域内分配一个或多个固定Sets。所有安全域都分配相同数量的Sets,以简化硬件设计。一旦分配确定,分配给每个安全域的Sets数量保持固定,无法动态更改。例如,在8-set TLB中,非安全域可分配4组,安全域分配4组,每个安全进程接收一组。每个安全域都由唯一的安全域标识符(SID)标识,该标识符存储在进程的PCB(进程控制块)中。进程可以根据需要请求自己的安全域。

分区查找表(Partition Lookup Table)

为了高效管理 TLB Set的分配和隔离,引入了分区查找表,记录每个 TLB Set的分配状态:

Set ID SID Status
4 0 Free
5 0 Free
6 3 Allocated
7 4 Allocated

(在本例中,Set 0–3分配给非安全域,而Set 4–7分配给不同的安全域。Set 0–3属于非安全域,不包含在查找表中,因为只有安全Set需要跟踪分配和所有权。)

  • Set ID:TLB Set的唯一标识

  • SID:安全域标识符,默认值为 0

  • Status:Set的分配状态(Free/Allocated)

TLB 查找机制

安全进程查找

安全进程通过分区查找表使用其 SID 来访问分配给它的特定 TLB Set。

非安全进程查找

非安全进程采用并行查找策略:

  • 同时探测安全Set和对应的非安全Set

  • 如果安全Set未被分配,则两个Set都会被检查

  • 如果安全Set已被分配,则只检查非安全Set

当TLB未命中时,机制会检查一个安全Set及其对应的非安全Set中是否有空闲的条目(假设安全Set未被分配)。如果两组都占用,则随机选出一组替换。

安全域分配与释放

分配过程

  1. 当安全进程启动并需要 TLB Set时,系统从安全域中选择一个 TLB Set

  2. 在分配前,刷新所选Set的内容,防止信息泄露

  3. 如果所有安全 TLB Set已被分配,则随机选择一个已分配的安全Set,刷新其内容并重新分配

TLB Secure Domain Allocation Sequence

释放过程

  1. 当安全域完成执行后,操作系统更新分区查找表,将这些Set标记为未分配

  2. 刷新Set内容,允许释放的 TLB Set被新的安全域或非安全进程重用

TLB Secure Domain De-allocation Sequence

安全性分析

攻击前提的破坏

TLB 时间侧信道攻击依赖两个关键条件:

  1. 攻击者和受害者必须共享相同的 TLB Set

  2. 攻击者能够观察受害者内存访问的时间差异

论文的设计通过严格的Set级隔离直接破坏了这些前提条件:

  • 攻击者被限制在自己的域内,无法访问或驱逐受害者的 TLB 条目

  • 攻击者无法观察与受害者 TLB 命中或错过相关的任何时间信息

代表性攻击场景分析

场景 1:攻击者在非安全域,受害者在安全域

  • 攻击者的访问被限制在非安全 TLB Set

  • 受害者的访问被限制在安全Set

  • 攻击者无法驱逐或监控受害者的 TLB 条目,时间攻击不可行

场景 2:攻击者和受害者在不同的安全域

  • 每个都被分配了专属的 TLB Set

  • 相同的隔离保证适用

  • 攻击者可能推断的唯一信息是安全 TLB Set是否已分配,但这种元信息过于粗粒度,不足以泄露敏感数据

替换策略对安全性的影响

设计确保 TLB 替换策略的选择不会引入额外的安全风险:

  • 所有替换操作严格限制在分配给每个安全域的Set内

  • 无论使用何种替换策略,TLB 条目的驱逐和插入都只在相应域的分配Set内执行

  • 跨域替换被分区机制严格禁止

实现与评估

实验设置

功能验证

  • 修改 Linux 内核(x86 架构)以支持基本的 SID 管理

  • 实现自定义系统调用,原子地分配和分配新的 SID 给调用进程

  • 使用 QEMU 进行基于仿真的测试

Gem5 模拟

  • 扩展 gem5 x86 TLB 实现,添加两种配置:

    1. 组相联 TLB

    2. 安全且可扩展的 TLB 设计

  • 配置为 16 组、4 路组相联 TLB,反映典型的现代处理器配置

性能评估

系统调用开销

SID 分配系统调用的开销与标准系统调用相当:

系统调用 平均延迟(周期)
SID 分配 3359
getpid() 3234
clock_gettime() 2212
fork() 4288897

安全域性能影响

不同安全域大小下的 TLB 未命中率:

基准测试 8 组 4 组 2 组 1 组
helloworld 0.61% 0.63% 1.63% 7.31%
sha256 <0.01% <0.01% <0.01% <0.01%
aes 0.01% 0.01% 0.02% 0.10%
md5 0.24% 0.25% 0.70% 2.79%
blowfish <0.01% <0.01% 0.01% 0.03%
rsa <0.01% <0.01% <0.01% <0.01%

非安全域性能影响

不同非安全域大小下的 TLB 未命中率:

基准测试 全部 NS 域 1/2 NS 域 1/4 NS 域
blackholes 0.03% 0.04% 0.04%
bodytrack 0.49% 0.73% 1.19%
canneal 2.48% 4.21% 8.82%
fluidanimate 0.03% 0.03% 0.05%
raytrace 0.04% 0.04% 0.04%
streamcluster 0.72% 0.98% 1.21%
swaptions 0.03% 0.03% 0.12%

可扩展性比较

特性 SP/RF-TLB TLBCOAT 我们的设计
多安全进程
安全集重用
严格隔离
利用率
可扩展性

硬件要求

设计引入的硬件开销最小:

  • 主要硬件要求是一个小的分区查找表,跟踪每个 TLB Set的分配状态和所有权

  • 可以使用小型 SRAM 或寄存器阵列高效实现

  • 查找表驻留在硬件中,不映射到用户空间,只有操作系统可以访问或修改

局限性与讨论

安全域分区的局限性

  1. 分配不适应实际进程需求,可能导致配置不足或过度配置

  2. 安全进程的数量受到 TLB Set数量的限制

  3. 假设只有一小部分进程需要安全域,这与典型使用场景一致

对其他架构和 GPU 的适用性

  • 虽然实验集中在 x86 架构,但基于Set的分区核心思想在很大程度上与架构无关,可以适应其他 CPU 架构

  • 适应 GPU 更具挑战性,需要支持更多并发域并针对 GPU 特定的性能要求进行优化

总结

论文提出了一种可扩展的基于分区的 TLB 架构,用于防御 TLB 时间侧信道攻击。通过支持多个安全进程之间的分区,并允许非安全进程在安全域未使用时利用 TLB 资源,设计实现了强大的安全保证和高资源利用率。

实验结果表明,该架构在提供强大安全保证的同时,开销较低。这项工作强调了架构隔离在缓解微架构侧信道中的重要性,并为现代处理器中安全高效的 TLB 管理提供了实用解决方案。

主要贡献

  1. 总结了 CPU 和 GPU 中 TLB 的安全弱点,指出共享结构和有限隔离使其容易受到基于时间的侧信道攻击

  2. 提出了一种可扩展的 TLB 分区设计,实现安全和非安全域之间以及不同安全进程之间的细粒度隔离,有效缓解基于 TLB 的时间侧信道攻击

  3. 在真实 Linux 系统和 gem5 模拟器上实现了设计,使用标准基准测试评估了性能,证明该方法比现有解决方案具有更好的可扩展性,同时保持低开销