TLB攻击防护策略分析


Secure and Scalable TLB Partitioning 防御方案

本方案是一种面向组相联TLB的集合级隔离架构,核心是通过安全域-非安全域划分、SID强绑定、空闲资源动态复用,在彻底防御TLB时序侧信道攻击的同时,平衡资源利用率与性能开销,解决传统静态分区资源浪费、随机化防御概率性失效的痛点。

一、 核心防御原理

TLB时序侧信道攻击的核心前提是攻击者与受害者共享TLB集合,且攻击者可观测受害者的TLB命中/缺失时序差异。本方案通过以下核心思路从根源上破坏攻击前提:

  1. 集合级域隔离:将组相联TLB的所有集合(Set)划分为安全域(S域)非安全域(NS域),S域供安全敏感进程使用,NS域供普通进程使用。通过硬件强制隔离,让不同安全等级进程的TLB集合无交集。
  2. SID唯一绑定机制:为每个安全进程分配全局唯一的安全域标识(SID),通过分区查找表将SID与S域内固定数量的专属Set强绑定,确保安全进程仅能访问自身绑定的Set,实现进程间严格隔离。
  3. 空闲资源动态复用:当S域Set处于空闲状态时,允许非安全进程并行查找和复用;当有安全进程申请时,立即清空该Set并恢复隔离,实现“安全不降级、资源不浪费”。

二、 设计分析

方案功能依赖4个关键组件协同实现,硬件开销极低且兼容主流架构:

  1. 分区查找表
    • 硬件维护的核心表,每个条目对应一个S域Set,包含 Set ID SID 状态(空闲/已分配)三个字段。
    • 仅内核可通过特权指令修改,用户进程无访问权限,确保隔离规则不被篡改。
  2. SID管理机制
    • 安全进程通过内核自定义系统调用申请SID,内核原子化分配全局唯一的32位SID并存入进程PCB;普通进程默认SID=0,无法访问S域已分配Set。
    • 原子分配机制保证无重复SID,防止攻击者伪造身份越权访问。
  3. 并行查找机制(仅非安全进程)
    • 系统初始化时为每个NS域Set配对一个固定S域Set(如NS Set0↔S Set4),配对关系静态不变。(普通进程VA映射到S域时可通过配对关系转换set)
    • 非安全进程访问TLB时,并行查找“NS域Set+配对S域Set”,仅当S域Set空闲时才参与查找,已分配的S域Set会被硬件屏蔽。
  4. 动态分配与释放机制
    • 分配:有空闲S域Set时,内核顺序遍历查找表选第一个空闲Set;无空闲时,随机选择已分配Set清空后重新绑定新SID。
    • 释放:安全进程结束后,内核将其绑定的S域Set标记为空闲并清空,供后续复用。

三、 防御流程演示

方案对安全进程和非安全进程设计差异化TLB访问流程,核心差异在于查找范围的决定因素(SID vs VA组索引)

1. 安全进程完整流程

安全进程的TLB操作完全由SID主导,与VA组索引无关,流程如下:

  1. SID申请与Set绑定
    • 安全进程启动,调用内核系统调用申请安全域;内核原子分配唯一SID并存入PCB。
    • 内核查找分区查找表:有空闲S域Set则顺序选取,无空闲则随机选已分配Set清空。
    • 更新分区查找表:将选中Set的SID设为当前进程SID,状态改为 已分配,完成强绑定。
  2. TLB查询
    • 进程发起TLB访问,硬件从PCB读取SID,查询分区查找表获取专属S域Set列表,屏蔽所有非绑定Set
    • 硬件遍历专属Set列表内的所有Way,匹配 VPN+ASID:匹配成功则命中返回PPN,失败则触发TLB Miss。
  3. TLB Miss填充与替换
    • Miss后MMU遍历页表获取 VPN-PPN映射,硬件忽略VA组索引,直接将条目填入专属Set的空闲Way。
    • 若专属Set无空闲Way,执行域内替换策略(如LRU),禁止跨Set替换。

2. 非安全进程完整流程

非安全进程默认SID=0,核心逻辑是并行查找+动态复用空闲S域Set,流程如下:

  1. 默认状态初始化
    • 进程启动时内核将其PCB的SID设为0,无访问S域已分配Set的权限。
  2. 并行TLB查询
    • 进程发起TLB访问,硬件按 VPN%set_size计算组索引,定位对应的NS域Set,同时选中其配对的S域Set。
    • 查询分区查找表判断S域Set状态:空闲则并行查找两个Set,任意一个匹配 VPN+ASID即命中;已分配则屏蔽S域Set,仅查NS域Set。
  3. TLB Miss填充与替换
    • Miss后MMU获取映射,优先填入NS域Set;若NS域Set无空闲,则填入配对的空闲S域Set。
    • 替换操作仅在NS域Set或空闲S域Set内执行。
  4. 特殊场景:S域Set被分配给安全进程
    • 若普通进程正在复用某S域Set,该Set需分配给安全进程时,内核先清空Set内所有条目,再更新分区查找表将状态改为 已分配,硬件自动屏蔽普通进程对该Set的访问。

四、 安全性分析

本方案通过硬件强制的集合级隔离,从根源上破坏TLB时序侧信道攻击的核心前提,同时通过多重机制强化安全性。

1. 破坏攻击核心前提

  • 消除集合共享:安全进程的专属Set被SID强绑定,攻击者(无论属于NS域还是其他S域)无法访问受害者的Set,无法驱逐受害者的TLB条目。
  • 屏蔽时序观测:跨域的TLB操作完全不可见,攻击者的访问时序仅反映自身Set状态,无法观测受害者的命中/缺失延迟,无法推断敏感信息(如加密密钥、内核地址)。

2. 典型攻击场景防御效果

攻击场景 防御效果 核心原理
非安全进程攻击安全进程 完全防御 攻击者被限制在NS域,无法访问安全进程的专属S域Set,无任何观测路径
安全进程攻击其他安全进程 完全防御 不同安全进程的SID绑定不同S域Set,Set无交集,无法跨进程访问
定点回收Set的侧信道攻击 有效防御 S域Set耗尽时随机选择回收目标,攻击者无法预测,无法通过定点回收制造信息泄露

3. 附加安全保障机制

  • 域内替换限制:所有TLB替换操作仅在进程所属Set范围内执行,禁止跨域替换,避免替换行为泄露跨进程信息。
  • SID原子性与唯一性:SID由内核原子分配,存入内核空间的PCB,用户进程无法篡改或伪造,确保绑定关系不被破坏。
  • 硬件层面强制隔离:分区查找表的访问、Set的屏蔽/启用均由硬件实现,不依赖软件逻辑,避免软件漏洞导致的隔离失效。

4. 方案局限性

  • 安全进程数量受限:安全进程的并发数受限于S域的总Set数量,若系统存在大量安全进程,频繁的Set清空与重绑定会带来性能开销。
  • GPU架构适配困难:方案基于CPU组相联TLB设计,GPU的TLB层级更复杂(如共享L3 TLB),需大幅修改设计才能适配。
  • Set分配无法动态调整:每个安全进程分配的Set数量固定,无法根据进程的实际工作量动态调整,存在资源分配不合理的风险。

文章作者: Yssx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yssx !
评论
  目录