TEE-OS 分析篇:ARM64 可信启动 BL硬件区域、固化边界与组件
ARM64 可信启动 BL 阶段全解析定义、硬件区域、固化边界与组件在正式进入TEE-OS学习之前我们首选要理解这些软件组件固件运行硬件区域BLx 是 ARMTBBRTrusted Boot Board Requirements可信启动规范定义的分层引导阶段全称为 Boot Loader数字越大启动时序越靠后。整个启动链遵循「链式验签、逐级信任」原则每一级负责校验下一级的数字签名确保启动链不被篡改最终构建从硬件根到操作系统的完整信任链。以下从特权级、硬件存储/运行区域、固化属性、组件对应四个维度完整拆解。一、总览速查表阶段全称运行特权级/安全态存储介质镜像存放运行内存执行位置核心作用对应软件实体固化属性生命周期BL1Boot Loader Stage 1EL3最高特权安全监控态芯片内置 Boot ROM片上只读存储器直接在ROM中执行可信启动根RoT最小化硬件初始化校验并加载BL2芯片厂商自研BootROMATF提供参考实现完全固化不可软件修改上电执行一次BL2Boot Loader Stage 2S-EL1安全态内核级外部存储eMMC boot分区、SPI Flash片上SRAM内部高速内存此时DDR未初始化初始化DDR与存储控制器校验并加载所有BL3级镜像最终跳转BL31ATF标准组件厂商可定制部分命名为XBL/SBL可修改、可OTA升级需经BL1验签启动阶段执行一次BL31Boot Loader Stage 3-1EL3运行时固件EL3安全监控态常驻外部存储固件分区安全属性DDR内存非安全世界硬件不可访问世界切换唯一枢纽SMC分发、上下文管理、电源管理、中断路由ATF核心运行时本体日常说的“ATF固件”通常指BL31内置opteed等SPD分发器可修改、可OTA升级需经BL2验签系统全生命周期常驻BL32Boot Loader Stage 3-2安全负载S-EL1TEE内核 S-EL0TA用户态外部存储固件分区或vendor分区安全属性DDR内存与非安全内存硬件隔离TEE操作系统本体提供安全执行环境、加密服务、TA管理TEE-OS如OP-TEE、高通QSEE、联发科Kinibi可修改、可OTA升级需经BL2验签系统全生命周期常驻BL33Boot Loader Stage 3-3非安全引导程序NS-EL1非安全态内核级外部存储非安全DDR内存非安全世界引导程序加载Linux内核并启动AndroidU-Boot、UEFI、ABL等可修改、可OTA升级需经BL2验签启动阶段执行一次二、各阶段详细说明1. BL1不可篡改的硬件信任根BL1是整个系统的根信任点Root of Trust也是唯一完全固化的阶段硬件位置镜像直接熔刻在芯片内部的只读ROM中CPU上电复位后直接从ROM的固定地址开始执行不需要外部存储加载。核心逻辑仅做最基础的硬件初始化时钟、看门狗、SRAM然后从外部存储读取BL2镜像校验其数字签名校验通过则将BL2加载到片上SRAM跳转执行校验失败则直接终止启动。固化属性完全不可通过软件修改属于芯片硬件的一部分出厂后无法更改。即使设备被完全攻破也只能绕过BL1验签无法修改BL1本身的代码逻辑。实现说明ATF官方提供BL1参考代码但量产商用芯片的BL1几乎均由芯片厂商自研实现不会直接使用ATF参考版。2. BL2承上启下的可信摆渡人BL2是启动链中第一个可配置的软件阶段运行在SRAM中此时DDR尚未初始化无法使用DDR内存核心逻辑初始化DDR控制器、存储控制器eMMC/Flash然后从外部存储读取BL31、BL32、BL33三个镜像逐一校验数字签名全部校验通过后将三个镜像分别加载到对应属性的内存区域最后跳转进入BL31。可修改性源码可基于ATF官方版本定制修改编译后的镜像必须用对应私钥签名才能通过BL1的校验正常运行。厂商差异高通、联发科等厂商会用自研的XBL、SBL替代ATF的BL2但功能和层级定位完全一致。3. BL31世界切换的唯一守门人BL31是ATF的核心常驻固件运行在CPU最高特权级EL3是两个世界交互的唯一合法通道核心逻辑配置EL3异常向量表所有SMC指令都会统一陷入此处处理实现安全状态切换修改SCR_EL3.NS位完成安全态/非安全态切换保存恢复两侧上下文SMC请求分发按功能号路由给对应服务PSCI电源管理请求直接处理TEE类请求转发给SPD分发器中断路由负责安全中断与非安全中断的分发调度。SPD模块BL31内置安全负载分发器Secure Payload Dispatcher专门对接TEE OS比如opteed就是ATF内置的OP-TEE专属SPD负责TEE侧的上下文管理与请求路由。常驻属性系统整个运行周期内常驻安全DDR所有跨世界交互都必须经过BL31中转不存在旁路。4. BL32安全业务的容器TEE-OSBL32就是我们常说的可信操作系统完全运行在安全世界中非安全世界硬件层面无法访问其内存核心逻辑独立的微内核操作系统具备线程调度、内存管理、加密框架、TA沙箱、安全文件系统等能力为上层TA提供运行环境。分层结构内核运行在S-EL1特权级每个TA运行在独立的S-EL0沙箱中互相隔离。可修改性独立于ATF开发比如开源的OP-TEE OS就是最典型的BL32实现可单独编译升级同样需要BL2验签通过才能加载。5. BL33非安全世界入口非安全世界的第一级引导程序负责加载Linux内核最终启动Android系统不属于安全体系核心但属于完整启动链的最后一环。三、固化与可修改的边界总结1. 完全固化、不可软件修改仅BL1Boot ROM属于芯片硬件固有部分无任何软件接口可修改是整个安全体系的底层基石。仅存在ROM级硬件漏洞可绕过其验签逻辑但无法修改其本身代码。2. 可修改、但强制签名校验BL2、BL31、BL32、BL33 均属于可修改固件镜像存放在外部存储支持OTA、刷机等方式更新修改后的镜像必须经过对应级别私钥签名由上一级启动阶段验签通过才能运行无签名/签名不匹配直接启动失败防止恶意篡改量产设备签名私钥由厂商保管普通用户无法随意修改运行工程版/解锁设备可关闭安全启动自由刷写。3. 修改灵活度排序从难到易BL1完全不可改 BL31ATF核心需整固件包签名 BL2 BL32TEE OS BL33 TA运行时加载仅需TEE侧验签四、与 ATF / TEE-OS / TA 的对应关系1. ATFARM Trusted Firmware-AATF是ARM官方的可信固件参考套件覆盖BL1、BL2、BL31三个启动阶段BL1提供参考实现量产多由厂商替换自研BL2标准可信引导组件BL31ATF的核心本体也是日常语境中“ATF固件”的指代对象常驻EL3。ATF本身不包含TEE-OS只提供SPD分发接口对接第三方TEE比如opteed是对接OP-TEE的适配模块负责请求路由与上下文切换。2. TEE-OS可信操作系统完全对应BL32阶段是运行在安全世界S-EL1的独立操作系统由BL2验签加载由BL31的SPD模块负责运行时调度典型实现开源OP-TEE、商用高通QSEE/联发科Kinibi/Trustonic。3. TA可信应用不属于任何BL启动阶段是运行在TEE OS之上的安全态用户态应用S-EL0特权级地位等同于非安全世界的APK存储位置存放在REE侧文件系统如Android的/vendor/lib/optee_ta/不在固件分区加载时机运行时动态加载——REE侧应用调用TEEC_OpenSession时TEE OS通过RPC反向读取TA镜像在安全世界内完成签名校验后加载运行修改灵活度最高修改TA代码后只需用TA签名密钥签名替换文件即可生效无需升级整机固件。五、常见误区澄清“ATF就是BL31”狭义日常语境成立严格来说ATF是包含BL1/BL2/BL31的完整固件套件。“BL32是ATF的一部分”错误BL32是独立的TEE操作系统ATF只负责加载与路由不包含TEE业务逻辑。“BL阶段都只在启动时运行一次”错误BL31和BL32是系统全生命周期常驻的所有跨世界交互都要经过它们处理。“TA是TEE OS内置的”除少数核心系统TA外绝大多数TA独立于TEE OS运行时动态加载支持单独更新。一句话总结BL1是固化的硬件信任根BL2是启动验签摆渡人BL31ATF是世界切换的守门人BL32TEE-OS是安全业务的容器TA是安全功能的具体载体。

相关新闻