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 侧信道攻击的防御方案主要有两种:
分区(Partitioning):如 SP-TLB,将 TLB 分为安全和非安全域,但静态分区导致资源利用率低
随机化(Randomization):如 RF-TLB 和 TLBCOAT,通过随机化 TLB 条目放置来破坏攻击,但随着攻击技术的发展可能失效
核心设计思想
论文提出了一种安全且可扩展的 TLB 分区架构,主要特点包括:
基于Set的分区:采用 set-based partitioning 而非 way-based partitioning,提高灵活性和效率
动态资源复用:当安全域未被使用时,非安全进程可以临时使用这些资源,提高 TLB 利用率
细粒度隔离:不仅在安全和非安全域之间实现隔离,还在不同安全进程之间实现隔离
详细设计
整体架构

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未被分配)。如果两组都占用,则随机选出一组替换。
安全域分配与释放
分配过程
当安全进程启动并需要 TLB Set时,系统从安全域中选择一个 TLB Set
在分配前,刷新所选Set的内容,防止信息泄露
如果所有安全 TLB Set已被分配,则随机选择一个已分配的安全Set,刷新其内容并重新分配

释放过程
当安全域完成执行后,操作系统更新分区查找表,将这些Set标记为未分配
刷新Set内容,允许释放的 TLB Set被新的安全域或非安全进程重用

安全性分析
攻击前提的破坏
TLB 时间侧信道攻击依赖两个关键条件:
攻击者和受害者必须共享相同的 TLB Set
攻击者能够观察受害者内存访问的时间差异
论文的设计通过严格的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 实现,添加两种配置:
组相联 TLB
安全且可扩展的 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 或寄存器阵列高效实现
查找表驻留在硬件中,不映射到用户空间,只有操作系统可以访问或修改
局限性与讨论
安全域分区的局限性
分配不适应实际进程需求,可能导致配置不足或过度配置
安全进程的数量受到 TLB Set数量的限制
假设只有一小部分进程需要安全域,这与典型使用场景一致
对其他架构和 GPU 的适用性
虽然实验集中在 x86 架构,但基于Set的分区核心思想在很大程度上与架构无关,可以适应其他 CPU 架构
适应 GPU 更具挑战性,需要支持更多并发域并针对 GPU 特定的性能要求进行优化
总结
论文提出了一种可扩展的基于分区的 TLB 架构,用于防御 TLB 时间侧信道攻击。通过支持多个安全进程之间的分区,并允许非安全进程在安全域未使用时利用 TLB 资源,设计实现了强大的安全保证和高资源利用率。
实验结果表明,该架构在提供强大安全保证的同时,开销较低。这项工作强调了架构隔离在缓解微架构侧信道中的重要性,并为现代处理器中安全高效的 TLB 管理提供了实用解决方案。
主要贡献
总结了 CPU 和 GPU 中 TLB 的安全弱点,指出共享结构和有限隔离使其容易受到基于时间的侧信道攻击
提出了一种可扩展的 TLB 分区设计,实现安全和非安全域之间以及不同安全进程之间的细粒度隔离,有效缓解基于 TLB 的时间侧信道攻击
在真实 Linux 系统和 gem5 模拟器上实现了设计,使用标准基准测试评估了性能,证明该方法比现有解决方案具有更好的可扩展性,同时保持低开销