【DeepSeek】引导加载程序与系统组件的安全级别分析

张开发
2026/4/20 13:32:22 15 分钟阅读

分享文章

【DeepSeek】引导加载程序与系统组件的安全级别分析
引导加载程序与系统组件的安全级别分析1. 概述本文档详细分析了ARM架构下从系统加电到应用程序运行的各个阶段所运行的异常级别Exception Levels, EL。包括Trusted Firmware-A (TF-A) 的各个引导阶段、U-Boot、操作系统内核以及应用程序。2. ARM 异常级别回顾ARMv8-A 架构定义了四个异常级别从 EL0 到 EL3数字越大表示特权级别越高异常级别描述安全状态EL0应用程序级别非安全世界EL1操作系统级别非安全世界EL2虚拟化级别非安全世界EL3安全监控级别安全世界 (始终)3. Trusted Firmware-A 各阶段的安全级别3.1 BL1 (Boot Loader Stage 1)运行异常级别: EL3安全世界功能: 初始启动、基本硬件初始化、加载验证BL2说明: BL1是系统加电后执行的第一个软件从ROM或引导ROM执行始终运行在最高特权级别EL3确保初始引导的安全性。3.2 BL2 (Boot Loader Stage 2)运行异常级别: EL3安全世界功能: 加载后续阶段、更全面的硬件初始化、镜像管理说明: BL2由BL1加载并验证继续在EL3执行负责加载和验证BL31、BL32等后续阶段。3.3 BL2U (Boot Loader Stage 2 Unsecure)运行异常级别: EL2非安全世界功能: 加载非安全镜像、为非安全世界初始化做准备说明: BL2U是第一个运行在非安全世界的引导阶段在EL2执行主要负责加载非安全的引导镜像如U-Boot。3.4 BL31 (Boot Loader Stage 3-1)运行异常级别: EL3安全世界功能: 实现安全监视器、提供运行时服务、处理异常和SMC调用说明: BL31是安全监视器的实现始终运行在EL3负责处理来自非安全世界的SMC调用并管理系统的电源状态。3.5 BL32 (Boot Loader Stage 3-2)运行异常级别: EL1安全世界功能: 实现可信执行环境(TEE)、提供安全服务说明: BL32运行在安全世界的EL1作为可信执行环境提供各种安全服务如安全存储、密码学操作等。4. U-Boot 的安全级别运行异常级别: EL2非安全世界功能: 加载操作系统内核、设备初始化、环境配置说明: U-Boot作为非安全世界的引导加载程序运行在EL2负责加载和启动操作系统内核。5. 操作系统内核的安全级别运行异常级别: EL1非安全世界功能: 管理系统资源、提供系统调用、运行应用程序说明: 操作系统内核运行在EL1是应用程序的运行环境负责管理系统资源和提供各种服务。6. 应用程序的安全级别运行异常级别: EL0非安全世界功能: 执行用户代码、提供用户功能说明: 应用程序运行在最低特权级别EL0受到操作系统的保护和限制无法直接访问硬件资源。7. 启动流程与安全级别切换7.1 启动流程系统加电→BL1 (EL3)→BL2 (EL3)→BL31 (EL3)BL31初始化后加载并初始化BL32 (EL1 安全世界)跳转到BL2U (EL2 非安全世界)或直接加载U-Boot (EL2 非安全世界)U-Boot (EL2)加载并启动操作系统内核 (EL1)操作系统内核 (EL1)启动应用程序 (EL0)7.2 安全级别切换机制从非安全世界到安全世界: 通过SMC指令陷阱到EL3从安全世界到非安全世界: 通过ERET指令返回从EL0到EL1: 通过系统调用陷阱从EL1到EL2: 通过HVC指令陷阱8. 安全考虑安全隔离: 不同异常级别之间的隔离确保了系统的安全性权限控制: 高特权级别可以访问低特权级别的资源反之则不行安全监控: EL3作为安全监视器确保安全策略的执行链式验证: 引导过程中的链式验证确保了系统的完整性9. 总结组件运行异常级别安全状态主要功能BL1EL3安全世界初始启动、硬件初始化、加载BL2BL2EL3安全世界加载后续阶段、硬件初始化、镜像管理BL2UEL2非安全世界加载非安全镜像BL31EL3安全世界安全监视器、运行时服务、异常处理BL32EL1安全世界可信执行环境、安全服务U-BootEL2非安全世界加载操作系统内核、设备初始化操作系统内核EL1非安全世界系统资源管理、提供系统调用应用程序EL0非安全世界执行用户代码、提供用户功能ARM的异常级别机制为系统提供了多层次的安全架构通过不同特权级别的隔离和控制确保了系统的安全性和稳定性。Trusted Firmware-A作为EL3的参考实现为ARM系统提供了标准化的安全固件是现代ARM系统安全的基础。10. 异常级别与安全状态的关系说明10.1 异常级别与安全状态的区别需要明确的是异常级别(EL)和安全状态是两个不同的概念异常级别(EL): 定义了软件的特权级别数字越大特权越高安全状态: 定义了软件运行的安全域分为安全世界和非安全世界10.2 安全状态与异常级别的组合ARM架构中除了EL3始终运行在安全世界外其他异常级别(EL0-EL2)都可以在安全世界或非安全世界中运行异常级别安全状态描述EL0非安全世界普通应用程序EL0安全世界可信执行环境中的应用EL1非安全世界操作系统内核EL1安全世界可信执行环境(TEE)内核EL2非安全世界虚拟化hypervisorEL2安全世界安全世界的hypervisor(较少使用)EL3安全世界安全监视器(始终)10.3 为什么BL32运行在EL1安全世界而U-Boot运行在EL2非安全世界这种设计是合理的原因如下BL32 (TEE) 的设计目标:BL32作为可信执行环境(TEE)需要在安全世界中运行但它不需要EL3的最高特权只需要EL1级别的特权来提供安全服务这样可以在安全隔离的同时避免过度使用最高特权U-Boot 的设计目标:U-Boot作为非安全世界的引导加载程序运行在EL2可以更好地支持虚拟化功能同时为操作系统内核(EL1)的启动做准备安全隔离的实现:安全世界和非安全世界的隔离是通过硬件机制实现的即使U-Boot运行在更高的EL2也无法访问安全世界的资源安全世界的BL32(EL1)受到EL3的保护不受非安全世界的影响启动流程的合理性:BL31(EL3)作为安全监视器控制安全状态的切换从安全世界的EL3切换到非安全世界的EL2符合从高安全级到低安全级的过渡U-Boot在EL2准备好环境后再加载运行在EL1的操作系统内核10.4 安全状态切换的实现安全状态的切换主要通过以下机制实现SMC指令: 从非安全世界切换到安全世界(EL3)安全配置寄存器(SCR_EL3): 控制安全状态的访问权限异常向量表: 为不同安全状态和异常级别提供不同的处理程序这种设计使得系统能够在保持安全隔离的同时实现不同组件的合理分工和特权管理。11. 安全世界与非安全世界的区分机制11.1 硬件基础ARM TrustZone技术安全世界与非安全世界的区分主要基于ARM的TrustZone技术这是一种硬件级别的安全隔离机制硬件分区处理器核心、内存系统和外设都支持安全状态的区分安全总线系统总线支持安全状态的标记和隔离安全外设某些外设可以被配置为只能由安全世界访问11.2 寄存器控制机制安全状态的切换和控制主要通过以下关键寄存器实现SCR_EL3 (Secure Configuration Register)控制安全状态的访问权限管理安全和非安全世界之间的切换配置安全中断的处理方式SPSR_EL3 (Saved Program Status Register)保存从安全世界切换到非安全世界时的状态包含安全状态位指示返回时的安全状态ELR_EL3 (Exception Link Register)保存返回地址用于从安全世界返回非安全世界HCR_EL2 (Hypervisor Configuration Register)控制EL2和EL1之间的交互影响非安全世界中虚拟化的行为11.3 内存隔离机制安全世界和非安全世界拥有独立的内存空间安全内存只能由安全世界访问的内存区域非安全内存可以由非安全世界访问的内存区域内存属性通过内存管理单元(MMU)设置内存的安全属性地址空间安全世界和非安全世界可以使用相同的物理地址但访问权限由安全状态决定11.4 镜像编译与加载虽然安全世界和非安全世界的区分主要是硬件和寄存器控制的但软件层面也需要相应的支持独立编译安全世界的软件如BL1、BL2、BL31、BL32需要单独编译非安全世界的软件如U-Boot、操作系统也需要单独编译镜像验证安全世界的镜像需要经过验证确保其完整性和真实性非安全世界的镜像也可能需要安全世界的验证加载位置安全世界的镜像加载到安全内存区域非安全世界的镜像加载到非安全内存区域11.5 安全状态切换流程从非安全世界到安全世界执行SMC指令处理器自动切换到EL3安全状态安全监视器(BL31)处理请求从安全世界到非安全世界设置SPSR_EL3和ELR_EL3寄存器执行ERET指令处理器切换到指定的安全状态和异常级别11.6 实际实现示例以Trusted Firmware-A为例BL1 (EL3安全世界)初始启动时运行在EL3安全状态加载并验证BL2镜像BL2 (EL3安全世界)继续在EL3安全状态运行加载并验证BL31、BL32和非安全镜像BL31 (EL3安全世界)作为安全监视器运行通过设置SCR_EL3等寄存器控制安全状态切换BL32 (EL1安全世界)由BL31加载到安全内存运行在安全世界的EL1级别U-Boot (EL2非安全世界)由BL31或BL2U加载到非安全内存运行在非安全世界的EL2级别11.7 总结安全世界与非安全世界的区分是通过以下机制实现的硬件支持ARM TrustZone技术提供硬件级别的安全隔离寄存器控制通过SCR_EL3等寄存器控制安全状态内存隔离安全内存和非安全内存的分离软件配合独立编译和验证的镜像状态切换通过SMC指令和ERET指令实现状态切换这种多层次的安全机制确保了系统的安全性和可靠性是现代ARM系统安全的基础。

更多文章