查看原文
其他

论文分享|安全顶会S&P2022:一个实时可信执行环境 RT-TEE

作者: Jinwen Wang, Ao Li, Haoran Li, Chenyang Lu, Ning Zhang

论文链接: https://www.cse.wustl.edu/~lu/papers/sp22-rt-tee.pdf

0

摘要

嵌入式设备在新兴网络物理世界的安全关键系统中变得越来越普遍。虽然可信执行环境(TEE),如ARM TrustZone,已经广泛部署在移动平台中,但很少有人关注实时网络物理系统上的部署,与移动应用程序相比,实时网络物理系统带来了一系列不同的挑战。对于安全关键型网络物理系统,如自主无人机或汽车,目前仅关注机密性和完整性的TEE部署范式是不够的。这些系统中的计算也需要及时完成(例如,在汽车撞到行人之前),更加强调可用性。


为了弥合这一差距,本文提出了RT-TEE:一个实时可信的执行环境;首先,RT-TEE能够在商用的嵌入式平台上使用最少的硬件安全基元来确保可用性。其次,为了平衡实时性能和调度程序的复杂性,本文设计了一个基于策略的事件驱动的分层调度程序。第三,为了降低在安全环境中使用设备驱动程序的风险,本文设计了一个 I/O 参考监视器,该监视器利用软件沙盒和驱动程序消胀来提供对外围设备的细粒度访问控制,同时最大限度地减少可信计算基础 (TCB)。RT-TEE的原型已经在ARMv8-A和ARMv8-M平台上进行了实现并在综合任务和实际 CPS 应用程序上进行了测试。


1

本文的主要贡献

本文的贡献主要有以下几点:

1. 本文设计并实施了一个实时可信执行环境 RT-TEE,能够在存在受损操作系统的情况下确保商用嵌入式处理器的 CPU 和 I/O 实时可用性,满足安全关键型 CPS/IoT 的关键要求。

2. 本文设计并开发了一个基于策略的事件驱动分层调度程序以平衡实时响应能力和最小化可信计算基TCB 。

3. 为了最大限度地减少 TCB 中设备驱动程序的攻击面,本文在驱动程序消胀和沙盒之上开发了 I/O 参考监视器,以确保实时 I/O 可用性。

4. 本文进行了广泛的实验,本文在 ARMv8-A 和 ARMv8-M 处理器上都实现了RT-TEE的原型,并在合成任务集和实际应用中测试了RT-TEE的性能,仿真实验的测试对象涵盖了三个CPS平台:四轴飞行器,飞机和漫游车。本文还在现实生活中的四轴飞行器上部署了RT-TEE,以验证设计的可行性。


2

挑战
为了提供可用性保证,可信计算基TCB 必须对安全/安保关键任务所需的资源进行完整的调解。但是,资源管理通常由现有 TEE 设计中的不受信任操作系统实现。

由于CPS具有很强的时间亲和力,计算资源不仅必须可用,而且还必须是实时的。与普遍认为实时过程必须在很短的时间内完成相反,关键要求是从实时计算的角度来看满足最后期限。这通常使用受信任的实时调度程序完成。一种直接的方法是直接在 TCB 内部为所有安全和非安全进程实现这样的调度程序,但它会显着增加 TCB 的复杂性。另一种方法是始终首先完成安全任务,也称为空闲调度。但是,这种设计可能会导致不必要的不安全任务匮乏,从而损害整体系统性能,因为关键/安全任务可能不需要立即执行;它们只需要在截止日期之前完成。例如,电池检查任务是安全关键任务,但不必立即执行,而无人机上的视频流应用程序不是安全关键任务,但应该适应安全任务不会错过最后期限的程度。

直接使用 TEE 来保护 I/O 资源既不够,也无效。这是不够的,因为并非所有外围设备上都普遍提供设备级保护。以 SPI 总线为例,访问控制是粗粒度的,仅指定安全域是否有权访问总线。它也不是有效的,因为将设备驱动程序迁移到 TCB 将显著增加其复杂性。

3

时间扭曲攻击

实时系统无法满足实时约束会带来安全隐患,为了直观地强调实时调度安全的必要性,本文创新性的提出了一种称为时间扭曲攻击的具体攻击方法,该攻击方法利用动态电压和频率缩放(DVFS),即使CPS的控制器没有错误并受到TEE保护,时间扭曲攻击也可以破坏系统的稳定性。


DVFS是一种无处不在的能量管理技术,可在处理器速度和能耗之间进行权衡。在可调度性测试期间,最坏情况的执行时间是根据特定处理器频率的假设计算的。当它被更改时,最初为安全/关键任务分配的预算将不再足够。由于频率缩放攻击可以通过对不受信任的非安全操作系统占用的不同内核发起攻击,在安全环境执行期间随时发生,因此安全环境还面临着检查时间与使用时间 (ToCToU) 的挑战。这种频率降低会导致对安全环境中时间流逝的误解,并导致控制不稳定。

图1展示了受到时间扭曲攻击的无人机的飞行轨迹的变化情况。

可以看出无人机的轨迹出现了巨大的偏差,这在实际应用中会带来巨大的安全隐患.

4

系统设计

首先本文明确了引导资源可用性的最小要求集,以便设计的其余部分可以构建在硬件抽象层之上。许多 CPS 的基础设计是控制环路,它由传感、控制和致动组成。根据这一要求,RT-TEE必须确保用于控制计算的计算以及用于传感和致动的I / O的完整性和可用性。


用于引导计算可用性的原语有两个基本要求。首先,TCB 必须能够从非安全操作系统重新获得对处理器的控制才能执行计算。这需要一个安全计时器,该计时器不能被非安全操作系统修改,并将处理器直接困在安全环境中。安全计时器还有助于实时响应,因为它允许安全环境及时和确定地获取处理器资源。由于这些功能的重要性,安全定时器在商用嵌入式TEE平台中广泛使用。本文进行了广泛的调查,在支持 ARM TrustZone 的 19 个处理器中,有 21 个提供安全计时器。其次,安全环境还需要保持对处理器的访问以完成必要的计算,因此,TCB 必须能够防止来自非安全操作系统的中断。


CPS也必须在正确的时间感知和启动,以确保与物理世界相互作用期间的安全性。因此,准确计算物理世界中的时间流逝至关重要。安全的物理世界时钟基元可以使用SoC提供的不可变时钟或基于软件的时钟来实现。


在自举计算可用性的基础上,接下来是确保计算可用性的实时属性。本文提出了基于策略的事件驱动的两层分层调度程序,在不增加安全调度程序复杂性的情况下实现更好的整体系统性能,调度器设计如图2所示。第一层是世界调度器,负责调度各个执行环境。第二层是单个执行环境中的操作系统调度程序。


图2

在设计时,系统设计人员必须首先确定安全和非安全环境的实时任务模型,并需要根据安全策略编写相应的中断配置文件,这也将被转换为用于调度的实时非安全任务。然后将合成中断任务和原始任务模型传递给组合调度分析引擎,该引擎将生成世界调度器使用的具体调度参数的解决方案。在运行时,当触发安全计时器中断时,执行将被重定向到世界调度程序,该调度程序将根据调度策略恢复安全环境或非安全环境。当单个环境恢复时,操作系统将在它拥有整个系统的抽象下执行。由于调度程序是事件驱动的,因此在环境恢复之前,它必须预测下一个调度事件。


为了解决原生TEE在I/O设备上的缺陷,本文提出了图3所示的解决方案:


图3


本文提出为每个外设配备两个驱动程序实例。一个实例提供丰富的功能,但不能信任并且是沙盒的。另一个提供最少的功能,但受信任。本文提出了一种消胀技术来实现安全的驱动程序实例,作者指出,CPS在设计上具有高度可预测性,其中大多数设备交互完全相同,将复杂的硬件交互转换为固定 I/O 交互的简单重放,就可以覆盖绝大多数的CPS驱动功能,从而极大程度的降低代码量并且只会在 TCB 上产生少量的运行开销,消胀技术的设计如图4所示:


图4


本文还设计了I/O 参考监视器以确保在驱动程序的安全消胀和非安全沙盒实例之间切换时的安全性。为防止对传感器造成物理损坏,I/O 参考监视器可以验证发送到传感器和执行器的命令中的值是否在验证范围内。I/O 参考监视器还可以保护系统免受系统完全关机和时间扭曲攻击。基于DVFS的时间扭曲攻击依赖于与SoC上的电源管理(PM)和时钟管理(CM)的交互。I/O 参考监视器可以防止恶意使用这些外围设备。


5

实验评估

实验评估

本文使用了两个评估平台,分别对应ARMv8-A和ARMv8-M 架构。对于ARMv8-A,作者在自制的四轴飞行器上进行了评估。对于ARMv8-M,作者在LPC55S69微控制器上进行了评估。对于实际的CPS应用,本文选择了ArduPilot,这是使用最广泛的开源自动驾驶汽车控制器之一。为了尽量减少仿真对控制性能的影响,本文确保平台资源利用率低于容量,并且没有任务错过最后期限。最后,我们使用RPI3作为飞行控制器构建了一架无人机,以证明RT-TEE可行性。


调度开销

调度开销测试中,所有测量值均为平均 100 次运行。任务调用延迟体现了调度程序决定运行哪些任务与实际开始任务执行之间的延迟。原生的TEE中传统的非基于安全的调度机制需要53μ秒和111μ秒分别调用安全内核空间函数和安全用户空间函数。在RT-TEE下需要大约16.51 μ秒和89.35 μ秒。性能提升主要是由于调用安全世界函数的上下文切换开销显著减少。用户任务和内核任务之间的差异主要是由于用户进程设置。为了衡量 RT-TEE 采用的事件驱动调度器的效率,作者在 Linux 中监测了 RT-TEE 分层调度器和非安全操作系统调度器,以记录调度事件计数以及执行一组在安全和非安全环境中执行的实时任务。如图5所示,与传统的基于时间的调度程序相比,事件驱动的调度程序的调度事件减少了 46.13%,调度运行时开销减少了 74.40%。


图5

调度性能

图6显示了空闲调度和分层调度之间的实时性能比较。根据实验结果,作者指出:当安全环境在分层调度中被优先考虑时,分层调度具有更好的实时性能,因为分层调度的任务错过率总是较低;当系统负载低于 80% 时,分层调度总是优于空闲调度。换句话说,只要系统设计为利用率低于80%,本文提出的调度算法就可以更好地响应非安全任务,而不会影响安全工作负载,这是一个合理的假设,因为当系统利用率很高时,许多CPS系统是不可调度的(速率单调系统为69%)。换句话说,当实时任务集是可调度的时候,最好利用分层调度来提供更好的非安全任务响应能力。


图6

调度性能

图6显示了空闲调度和分层调度之间的实时性能比较。根据实验结果,作者指出:当安全环境在分层调度中被优先考虑时,分层调度具有更好的实时性能,因为分层调度的任务错过率总是较低;当系统负载低于 80% 时,分层调度总是优于空闲调度。换句话说,只要系统设计为利用率低于80%,本文提出的调度算法就可以更好地响应非安全任务,而不会影响安全工作负载,这是一个合理的假设,因为当系统利用率很高时,许多CPS系统是不可调度的(速率单调系统为69%)。换句话说,当实时任务集是可调度的时候,最好利用分层调度来提供更好的非安全任务响应能力。


现实应用的评估

本文使用RT-TEE来保护三个实际应用,以显示可行性和潜在的局限性,分别是四轴飞行器上的故障安全控制器和姿态控制器,以及飞机和漫游车平台上的故障安全控制器。本文使用ArduPilot自动测试的CMAC-copter-circuit,CMAC-circuit和CMAC-bigloop分别作为四轴飞行器,飞机和漫游车的任务。

作者记录了自动驾驶汽车的实际位置、速度和加速度,并将其与参考状态进行了比较,从而量化RT-TEE对控制的影响。图7和图8所示是飞行期间的测量结果,可以看出RT-TEE引入的控制偏差在13%以内,可以通过调整姿态控制器的调度来进一步降低控制偏差,在短时间收敛后的稳定系统下的性能与基线相当。


图7

图8


在实际的直升机飞行时使用RT-TEE时,作者测量了 27 个 ArduCopter 任务执行超过 100 次的平均执行时间,ArduCopter 中每个实时任务的平均执行时间反映了 RT-TEE 组件产生的总体运行时开销,例如安全定时器中断处理程序、世界调度、安全任务调度、I/O 引用监视器和 debloated 驱动程序。如图9所示,没有一个实时任务超过其最大执行时间,这表明RT-TEE组件产生的运行时开销在ArduCopter中是可以接受的。


图9

图10显示了RT-TEE在时间扭曲攻击示例下,基线TEE(如OP-TEE)和RT-TEE之间的防御效果。可以观察到,在RT-TEE的保护下,即使在攻击发起后,飞行器的绝对姿态误差仍然很小。

图10

6

总结与展望

本文中介绍了RT-TEE,这是一种实时可信执行环境,旨在满足安全关键型网络物理系统最基本的需求之一:系统可用性。RT-TEE 建立在硬件基元的最小化抽象之上,支持引导可用性。它利用新设计的基于策略的两层事件驱动分层调度程序来提供实时调度,同时最大限度地减少对 TCB 的影响。为了实现 I/O 可用性,本文提出并设计了一个 I/O 参考监视器,用于对硬件/软件交互实施时间(实时)和空间(安全)策略。为了最大程度地减少 I/O 驱动程序对 TCB 的影响,本文还提出了沙盒功能丰富的不受信任驱动程序和功能最小化的受信任的臃肿驱动程序的组合。作者在ARMv8-A和ARMv8-M平台构建了原型,并在真正的无人机上验证了该系统。

本文参考:FSM Lab

脚注对应的参考文献请参见原论文

分享仅供学习参考,若有不当,请联系我们处理。


END

往期推荐


1.学习同态加密:第四代全同态加密经典论文合集
2.笔记分享|浙大暑期密码学课程:Lattice-based Crypto l 和ll3.学习同态加密:第三代全同态加密经典论文合集4.笔记分享|浙大暑期密码学课程:Idealized Model ll


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存