尽管可信执行环境(TEE)(如ARM TrustZone)已广泛应用于移动平台,但在对具有实时性要求的网络物理系统(CPS)上的研究部署却很少。今天给大家分享一篇发表于2022年S&P会议上的文章:RT-TEE。
TEE本身的关注点在于系统资源的机密性与完整性,而实时系统更加关注于系统资源的可达性,即所有的任务必须得在设定的截止时间内完成(也被称作硬实时系统),那么在截止时间内,任务所需的资源都必须是可达的,否则将引发现实中的事故(例如自动驾驶需要在撞击前刹车或转弯)。资源的安全关键性与其的可达实时性并不是一致的,例如电池检查是一项安全事务但却不需要立马去做,而视频流处理却是一项非安全事务但要立马完成。
本文提出RT-TEE来让TEE能够部署在实时系统中,主要包含三个部分的主要改进:引导可达性,实时处理器可达性,和实时I/O可达性。文章的架构如下图所示:
文章的主要贡献如下:
1. 设计并实现了一个实时可信执行环境RT-TEE,能够满足现有商品级嵌入式处理器的CPS/IoT的实时可用性和安全性。
2. 为了平衡实时响应和TCB最小化,设计并开发了一个基于策略的事件驱动分层调度器;为了最大限度地减少TCB中设备驱动程序的攻击面,在驱动程序去浮动和沙盒之上开发了I/O参考监视器,以确保实时I/O可用性。
3. 在Armv8-a和Armv8-m两种架构上实现了原型的部署并进行了模拟测试,同时在实际中部署在四旋翼上进行了可行性证明。
背景介绍
TEE
TEE是一种实现了安全和非安全环境之间的硬件强制资源隔离的技术,然而,基于TCB最小化的设计原则,大多数现有的TEE硬件部署模型都依赖于非安全操作系统进行资源协调。
实时系统
实时系统并非是说要把事务都立刻快速完成,而是说事务都要在设定的截止时间内完成。周期性任务是最常见的实时调度模型,任务包含多个事务,超过对应截止时间的事务将会失效并引起报错。
DVFS
CPS的资源可达性要求资源不仅仅是可达,而且是及时可达。如果在对应截止时间内,无法调用所需的资源,一样会导致事务的失效。
动态电压频率变换(DVFS)是一种处理器中普遍存在的能量管理技术,即在处理器速度和能耗之间进行权衡的技术。其核心思想是根据事务要求的最晚完成时间,来降低处理器的频率,同时降低电压,如此,虽然降低了效率,但也减少了能耗。
然而攻击者也可以借此来进行攻击,本文提出攻击者可能通过改变非安全内核的处理器频率,使得安全内核对时间流逝出现偏差,导致资源无法及时可达。本文称之为时间扭曲攻击。如下图所示,攻击发生后,随着时间的增加,错误被累计放大:
RT-TEE的设计
引导资源可达性的最小需求集
1. 引导计算资源可达性原语
首先,TCB必须能够从非安全OS中重新控制处理器以执行计算。这就需要一个安全计时器来将处理器直接捕获到安全环境中
其次,安全环境还需要保持对处理器的访问,以完成必要的计算,所以需要TCB必须能够防止来自非安全操作系统的中断
2. 引导I/O资源可达性原语
本文直接用现有的嵌入式TEE为TCB提供的原语,以获得对单个I/O设备的独占访问
3. 获取真实世界时间的原语
本文通过使用SoC提供的非可变的时钟,或基于软件的保持在安全物理定时器之上的时间来实现。
计算的实时可达性
现有TEE的调度器大多都在非安全环境中,且是全局的(即一起调度安全与非安全事务)来最大化性能,然而这样的调度器容易受到攻击。如果将全局调度器放入TEE中,则会极大地扩展TCB容量。而且安全TCB还会假设非安全调度都可能是恶意的,而尽量减少两个世界的交互,一种解决方法是始终优先处理安全事务,但这会导致处理器性能下降,且不一定能够满足实时性需求。
RT-TEE提出了一种基于策略的事件驱动的分层调度。主要分为两层,第一层调度决定任务是去那个世界(安全/非安全),第二层是对应世界中的调度,如下图所示:
传统的分层调度是采用固定时间中断的,然而对于实时系统,这种方式会引入大量的上下文切换。由于实时系统是周期任务,具有重复可预测性,系统可以预测下一个事件并设定相应的安全计时器来实现最小化开销,所以作者提出可以使用事件驱动来代替固定时间中断。
细粒度的外设I/O访问控制可达性
虽然TEE可以实现对外设的独占访问,但如果是总线式的(例如使用SPI和I2C),则TEE是粗粒度的,即只要有一个总线上的传感器是安全的,则整条总线上所有的传感器访问都会经过TCB。另外,当I/O设备被分给安全环境中,则整个对应的I/O驱动都会放入安全内核中,导致TCB增大,而实际中,这些驱动时常会有各种问题而无法运行,导致白白占用安全内核。
RT-TEE针对上述问题,提出了两个设计来改进,整个架构如下图所示:
第一个设计是为每一个外设提供两套驱动实例:一套仅提供最低限度的功能,但可信,由于CPS任务的可预测性,作者提出一套脱浮技术(即通过记录系统运行时的所有MMIO寄存器的读写,来生成外设运行的模板),来实现驱动的最小化功能。另一套提供丰富的功能但不可信,由于不可信,所以放置在沙箱中。这样总线上安全外设,由第一套去驱动,非安全外设,由沙盒驱动。
另一个设计是增加时间和空间的I/O参考监控器,空间监控器决定了进程可以访问哪些外围设备以及如何与设备交互,时间监控器调节进程何时可以与外围设备交互以及交互时间,两者共同确保了系统的实时可用性。
实验
作者在Armv8-a和Armv8-m上做了需要验证性实验,由于篇幅限制,这里简单介绍其中的几个。首先是增加了RT-TEE后对原有实时控制系统的影响:
作者对实时系统中的位置、速度和加速度控制,以及各类命令进行了实验,RT-TEE增加的Overhead并不明显,且都没有让任务超过其所需的截止时间。
同时,作者也进行了时间扭曲攻击,RT-TEE却是能够抵御住攻击:
总结
本文旨在解决CPS实时系统的最基本需求之一:系统可达性。
1. 构建了在硬件原语的最小化抽象之上,从而实现可达性的引导。
2. 设计了两层基于策略的事件驱动分层调度器来提供实时调度。
3. 设计了一个I/O参考监视器,该监视器对硬件/软件交互实施时间(实时)和空间(安全)策略。为了将I/O驱动程序对TCB的影响降至最低,提出了一种沙箱功能丰富的不可信驱动程序和最小化功能的可信脱浮驱动程序的组合。
还没有评论,来说两句吧...