【机密计算顶会解读】15:LDR——面向嵌入式TEE系统的高效安全Linux驱动

导读:本文介绍LDR机制,其在保持TEE轻量化的同时能够高效安全复用现有Linux驱动。

原文链接:LDR: Secure and Efficient Linux Driver Runtime for Embedded TEE Systems - NDSS Symposium

LDR: Secure and Efficient Linux Driver Runtime for Embedded TEE Systems

一、背景介绍

随着物联网和嵌入式设备的普及,可信执行环境(TEE)如ARM TrustZone被广泛用于保护敏感数据和程序。 然而,由于TEE相比商用操作系统如Linux内核缺少复杂驱动程序支持,使得很难实现面向I/O的TEE服务。在嵌入式TEE操作系统中,相比KNOX这种大型设计,如OP-TEE,SierraTEE采用低代码量实现安全相关服务以达到最小可信计算基(TCB),被作者称为紧凑型TEE操作系统(Compact TEE OS)。

在IO密集型的TEE服务中,有研究选择将已有设备驱动移植到TEE中,但这种方式扩大了可信计算基以及工程量。为了削减代码量,现有解决方案Driverlets使用recorder和replayer的方式实现通用的驱动服用方法;MyTEE通过虚拟化内存隔离来确保安全I/O操作。

如何在保持TEE轻量化的同时高效、安全地复用现有Linux驱动,成为待解决的核心问题。

二、现状分析

现有的解决方案面临两点问题:

  1. **现有解决方案性能开销较大。**当前实现Driverlets重放记录设备驱动行为的方式让性能损失显著;MyTEE因设计世界切换和hypercall,使得在处理高频率I/O请求的设备时会有高性能开销
  2. **支持设备有限。**Driverlets难以满足复杂设备驱动的请求,QEMU中只支持一部分硬件模型。

本论文的目标是在紧凑型TEE操作系统中,设计一套能安全、高效地复用现有设备驱动的机制,让系统拥有设备驱动能力的同时,达到低水平的TCB。

三、应对设计

论文提出Linux驱动运行时(LDR),其包含离线阶段(offline phase)和运行时阶段(runtime phase)。

**离线阶段:**生成普通世界(NW)和安全世界(SW)和双驱动。NW驱动目的是辅助SW驱动的执行。SW驱动会进行初始化配置和虚拟文件系统(VFS)函数去除操作,并将SW驱动使用的库函数进行替换,以及生成RPC stubs重定向子系统函数调用。

**运行时阶段:**NW和SW驱动协作完成SW驱动支持,SW驱动加载到LDR中,与安全外设进行交互并为SW组件提供安全I/O服务。

因为SW驱动包含大量的代码,为简化TCB,论文设计了一个隔离执行环境去保护安全操作系统。该隔离执行环境包含三点内容:

  • 隔离执行域(IED),为一组功能相关的SW驱动创建隔离执行域,阻止这些驱动访问安全OS和其他IED的内存区域。
  • IED门控,拦截并代理SW驱动发出的每个依赖函数调用,并加入依赖函数调用验证确保控制流完整性(CFI)。
  • 驱动状态维护方案,安全的维护SW和NW驱动状态,确保在驱动初始化和执行的过程中,SW驱动的敏感信息不会泄露到Linux内核。

四、技术解析

驱动生成相关:

  • **VFS和初始化函数移除:**利用GCC死代码消除技术。
  • **库函数替换:**将Linux内核基础函数映射至TEE OS的等效实现。
  • 子系统函数重定向:对设备管理、时钟等复杂函数,生成SW/NW RPC桩。SW桩通过共享内存传递参数至NW代理,触发SMC(Secure Monitor Call)切换至普通世界执行,返回时验证结果完整性(如内存地址合法性)。

沙盒隔离相关:

  • 基于ARM 域访问控制(DAC),LDR为每个驱动分配独立域(Domain 3-15),通过DACR寄存器动态配置内存访问权限:
  • **域隔离:**驱动代码/数据段仅允许所属域和IED门控(Domain 2)访问,TEE内核(Domain 0)默认不可见。
  • **门控代理:**所有TEE函数调用需经IED门控,切换至安全栈并临时开放Domain 0访问权限,执行后恢复隔离。
  • **控制流完整性(CFI):**在驱动加载阶段,记录合法调用点与目标地址的映射表。运行时,门控验证调用地址是否匹配记录,拦截非法跳转(如ROP攻击)。

五、验证评估

测试包含:(1)TCB评估;(2)性能评估;(3)CVE案例研究。实验环境为NXP IMX6Q SABRE-SD评估板。

  1. T **CB:**TCB增加量小,基于OP-TEE的实现中,LoC增加1.8%,二进制体积增加5.65%。
  2. **性能方面:**在OPTEE xtest中展现出可忽略的性能开销;在跨世界调用开销(CPC)上,使用指针进行参数传递的函数调用平均延迟为140.29 μs;在多处现实设备对比中均展现出与原设备驱动相近水平,以720P视频流处理为例,仅增加了2.43%的延迟。
  3. **CVE案例研究:**结果显示,在一个包含缓冲溢出漏洞(该漏洞与很多CVE相关,如2021-28972, 2020-12653, 2018-3580)的SW驱动中,LDR也能防止内存损坏以及ROP攻击。

本账号发布内容均为原创,欢迎转载,转载请注明出处。

相关推荐
程序员-Benothing1 小时前
Linux网络性能分析:ss、netstat、iftop、sar实战
linux·运维·服务器
其实防守也摸鱼1 小时前
Codex 下载与本地部署实战指南
linux·服务器·前端·数据库·算法·ai
岳麓丹枫0011 小时前
故障案例分析:系统负载居高不下,多次出现 OOM
linux·postgresql
2401_862880821 小时前
Linux中断、中断子系统、内核同步互斥机制
linux·驱动开发·嵌入式硬件
姓刘的哦1 小时前
GT911触摸芯片
linux·stm32
Android系统攻城狮1 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_read调用流程与实战(七十五)
linux·运维·服务器·gstreamer音视频·gstreamer音视频进阶
一条破秋裤2 小时前
04_控制GPIO通用化_从寄存器到gpiod
linux
星恒随风2 小时前
Linux进程信号(二):深入理解信号阻塞、未决、sigaction、中断机制、可重入函数与SIGCHLD
linux·运维·服务器·笔记·学习
额额额对了2 小时前
Linux 驱动实战:ADXL345 驱动
linux·运维·服务器