Trust Nothing: RTOS Security without Run-Time Software TCB (Extended Version)

本文提出了一种结合令牌能力架构与 FPGA 实现的新型方案,通过将 Zephyr 实时操作系统的所有运行时组件(包括调度器、分配器和 DMA 驱动)及外设完全去信任化,成功构建了无需运行时软件可信计算基(TCB)且无需修改外设硬件的安全嵌入式系统。

Eric Ackermann, Sven Bugiel

发布于 Tue, 10 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文讲述了一个名为 Skadi 的操作系统和 Bredi 的硬件芯片设计,它们联手解决了一个嵌入式设备(比如智能手表、路由器、工业控制器)面临的大难题:如何在不信任任何软件、甚至不信任硬件外设的情况下,保证设备绝对安全?

为了让你更容易理解,我们可以把整个系统想象成一座高度戒备的“智能城市”

1. 现状:混乱的旧城市(传统嵌入式设备)

想象一下现在的嵌入式设备就像一座没有围墙、没有警察、也没有身份证的城市

  • 应用程序是市民,操作系统内核是市政府,外设(如网卡、DMA 控制器)是进城的各种卡车。
  • 问题:如果一个小偷(恶意软件)混进了市政府(内核漏洞),或者一辆卡车(外设)突然发疯(硬件被黑),整个城市就完了。因为市政府拥有所有钥匙,卡车可以直接冲进任何民宅(内存)偷东西。
  • 现有的防御:以前的防御手段就像给市政府配了个保镖(MMU 内存管理单元)。但这有个致命弱点:你必须完全信任市政府。如果市政府自己疯了,或者保镖被收买了,城市就毫无防备。而且,现有的方案通常只能防住“市民”或“卡车”中的一类,很难同时防住所有。

2. 新方案:北境城(Northcape)与“令牌”系统

这篇论文提出了一种全新的理念,叫 Northcape(北境),并在硬件上实现了它(Bredi),在软件上构建了城市(Skadi)。

核心思想:不再信任任何人,只信任“令牌”(Capability)。

想象一下,在这个新城市里:

  • 没有“市政府”这个特权阶级:所有的软件模块(调度器、内存分配器、驱动程序)都是平等的“小社区”。
  • 没有万能钥匙:没有任何人拥有打开所有门的钥匙。
  • 令牌(Capability Token):这是唯一的通行证。
    • 如果你想进“图书馆”(内存区域),你必须手里拿着图书馆发给你的特定令牌
    • 这个令牌不仅告诉你“能进”,还告诉你“能进哪一层”、“能读不能写”、“只能给谁用”。
    • 关键点:这个令牌是硬件生成和验证的。如果你手里没有令牌,或者令牌过期了,哪怕你是市长(内核),硬件也会直接把你挡在门外。

3. 三大创新点(如何构建这座城)

A. 硬件层(Bredi):智能安检门

作者设计了一种新的芯片架构(Bredi),就像在城市的所有路口安装了智能安检门

  • 自动验证:任何软件或硬件(包括网卡、DMA)想要访问内存,都必须把“令牌”交给安检门。
  • 防伪造:令牌里包含了一个随机的“暗号”(Nonce),就像防伪水印。黑客很难猜出这个暗号,所以伪造令牌几乎不可能。
  • 隔离外设:即使是网卡这种“卡车”,如果它没有合法的令牌,它连内存的大门都摸不到,更别提搞破坏了。

B. 软件层(Skadi):原子化社区

基于 Zephyr 操作系统,作者把它打散成了一个个互不信任的小社区(Subsystems)。

  • 没有大内核:传统的操作系统有一个巨大的“核心”,一旦核心被攻破,全盘皆输。Skadi 把核心拆碎了,变成了一个个小模块(调度器、内存分配器、驱动等)。
  • 互相猜忌:每个小模块只知道自己该做的事,并且只拥有完成这件事所需的最小令牌
    • 比如,“内存分配器”只能申请内存,它不能去读“网络驱动”的数据。
    • 如果“网络驱动”被黑客攻破了,黑客只能控制网络,无法拿到“内存分配器”的令牌,因此无法破坏系统其他部分。
  • 启动即销毁:系统启动时,有一个临时的“建筑队长”(Loader)负责把各个社区建好并分发令牌。一旦建好,建筑队长立刻自毁。这意味着系统运行时,没有任何软件是“受信任”的,所有模块都在互相监督。

C. 实时性:紧急通道

通常,为了安全,系统会变慢。但作者还考虑了“软实时”需求(比如工业控制不能卡顿)。

  • 不可屏蔽的中断(NMI):就像城市里有一条绝对优先的紧急通道。即使系统被攻击者卡住了,或者某个模块在死循环,这条通道依然能保证紧急任务(如中断处理)被执行,防止系统彻底死机。

4. 生活中的比喻:餐厅的变革

为了更直观,我们可以把嵌入式设备比作一家餐厅

  • 传统模式

    • 主厨(内核):拥有所有权限,可以进厨房、仓库、收银台。如果主厨被收买或发疯,餐厅就完了。
    • 服务员(应用):只能端菜,但如果主厨把钥匙给了服务员,服务员也能进仓库。
    • 外卖员(外设):如果外卖员是坏人,他可能直接冲进厨房偷东西。
  • Skadi + Bredi 模式

    • 没有主厨:餐厅被分成了“切菜组”、“炒菜组”、“收银组”。
    • 令牌门禁
      • “切菜组”手里只有切菜刀的令牌,进不去收银台。
      • “收银组”手里只有收银机的令牌,进不去厨房。
      • 外卖员:如果他没有“取餐窗口”的特定令牌,连厨房门都进不去,更别提偷东西。
    • 互不信任:如果“切菜组”被黑客控制了,黑客只能切坏菜,无法偷走收银台的现金,因为切菜组没有收银台的令牌。
    • 启动后消失:开业前,店长(Loader)把各组安排好,然后店长立刻辞职并销毁所有备用钥匙。从此以后,店里没有“老板”,只有互相制衡的“小组”。

5. 总结与意义

这篇论文的核心贡献在于:

  1. 打破了“必须信任内核”的魔咒:实现了真正的“无运行时可信软件基”(No Run-Time Software TCB)。
  2. 软硬结合:不仅改写了操作系统,还设计了专门的硬件(FPGA 实现)来强制执行这些规则。
  3. 安全与性能兼得:虽然为了安全牺牲了一点点性能(就像安检需要时间),但在大多数实际应用场景中,速度依然足够快,且安全性是质的飞跃。

一句话总结
这就好比给未来的智能设备穿上了一层由硬件强制执行的“防弹衣”,即使里面的软件全是坏人,或者外面的设备全是间谍,只要他们手里没有合法的“令牌”,就绝对无法破坏系统的核心安全。这为未来高安全需求的物联网设备(如 5G 基站、自动驾驶汽车)奠定了一个坚实的基础。