【deepseek】EL3作用

这是一个非常核心的架构问题。在 ARMv8 架构中,EL3(Exception Level 3) 处于特权级金字塔的顶端,被称为 "Secure Monitor"(安全监控器) 的领地。

如果说操作系统(EL1)是应用的管理者,虚拟化(EL2)是操作系统的管理者,那么 EL3 就是世界的管理者

下面详细介绍 EL3 的职能以及为什么必须由它来做这些事。


一、 EL3 具体做哪些事情?

EL3 的代码量通常很小(例如 ARM 的 Trusted Firmware-A),但权限极大。它的核心职责可以概括为 "门卫""总管"

1. 世界切换

这是 EL3 最核心的工作。

  • 动作 :当普通世界调用 SMC 指令,或者安全世界调用 ERET 返回时,CPU 会陷入 EL3。
  • 职责:EL3 负责保存当前"世界"的上下文(寄存器、状态),并恢复另一个"世界"的上下文。
  • 关键操作 :修改 SCR_EL3 寄存器中的 NS bit
    • 如果要从普通世界切到安全世界,EL3 将 NS 设为 0。
    • 如果要切回普通世界,EL3 将 NS 设为 1。
    • 注意:只有 EL3 有权限修改 NS bit,EL1 和 EL2 根本看不到这个位。
2. 系统安全初始化

在 CPU 刚上电或复位时,默认是处于最高特权级 EL3 的。

  • 动作:配置系统的安全策略。
  • 职责
    • 初始化 TZASC (TrustZone Address Space Controller):告诉硬件哪些物理内存地址是"安全的",哪些是"非安全的"。这决定了后续 CPU 能否访问某块内存。
    • 初始化 TZPC (TrustZone Protection Controller):配置外设(如 UART、USB、Crypto 加密引擎)属于哪个世界。
    • 配置中断控制器(GIC):决定哪些中断属于安全世界,哪些属于非安全世界。
3. 电源管理(PSCI)

你手机的开机、关机、待机、睡眠,其实最后都是由 EL3 执行的。

  • 动作:Linux 内核(EL1)想要关闭 CPU 核心进入睡眠,或者唤醒其他核心。
  • 职责:Linux 内核没有权限直接操作物理电源控制器,它会发出 PSCI 调用陷入 EL3。EL3 负责真正地切断核心电源或拉高电压。
  • 原因:电源管理涉及整个芯片的物理状态,必须由最高权限的固件控制,防止恶意系统搞坏硬件。
4. 处理安全中断
  • 动作:当安全外设(如安全定时器、指纹传感器)触发中断时。
  • 职责:EL3 捕获这些中断,并将其路由给安全世界(TEE OS)处理,而不是扔给 Android 处理。

二、 为什么必须放到 EL3 来做?

你可能会问,为什么不让 Linux 内核(EL1)直接切换状态?或者让 Hypervisor(EL2)来做?理由主要有三点:

1. 硬件架构的强制隔离

这是最根本的原因。ARM 硬件设计了一条铁律:对安全状态的修改权,只赋予最高特权级。

  • NS bit 的不可见性 :在 EL0、EL1、EL2 运行时,CPU 甚至"看"不到 SCR_EL3 寄存器。普通世界的代码想作弊把 NS 位改成 0?硬件直接报错。
  • 防止提权 :如果允许 EL1(OS)修改 NS 位,那么一旦 Android 系统被 Root(被黑客攻破),黑客就可以直接把 CPU 切换到安全模式,随意读取 TEE 里的指纹和密钥。EL3 的存在,保证了即使 OS 彻底烂掉,TEE 依然是安全的。
2. 信任链的根基

安全是一个层级递进的过程:

  • App 信任 OS(EL1)。
  • OS 信任 Hypervisor(EL2,如果有的话)。
  • 所有层级都必须信任 EL3。

EL3 的代码通常是芯片厂商出厂时烧录好的,且经过严格验证。它是整个系统的 Root of Trust(信任根) 。把"切门钥匙"的权利交给 EL3,意味着我们默认:EL3 是绝对可信的,而 EL1/EL2 是不可信的。

3. 中立的仲裁者

EL3 站在两个世界之外,充当"裁判"。

  • 如果让安全世界(TEE OS)负责切换,那么 TEE OS 就需要知道普通世界的所有细节(寄存器状态、调度信息),这增加了 TEE 的代码复杂度和攻击面。
  • 如果让普通世界负责切换,那安全就荡然无存了。
  • EL3 作为一个极简的、中立的中间层,只负责"搬运"和"开门",不参与具体的业务逻辑,这样最安全、最高效。

三、 形象的比喻:机场安检通道

为了串联理解,我们可以把 CPU 运行比作机场旅客:

  • EL0 (App):普通乘客。只能在候机大厅活动。
  • EL1 (Linux Kernel):地勤人员。可以管理乘客,安排登机,但不能进入驾驶舱。
  • EL2 (Hypervisor):机场调度员。可以管理多个航班(虚拟机),但也进不了驾驶舱。
  • EL3 (Secure Monitor)安检闸机与空管系统

为什么必须由 EL3 做切换?

  • 旅客想从"非安全区"(候机厅)进入"安全区"(飞机驾驶舱/TEE)。
  • 这时候,必须通过 安检闸机(EL3)
  • 闸机(EL3)做三件事:
    1. 查票:验证是否有权限进入。
    2. 换装:要求旅客取出违禁品(保存非安全上下文),换上飞行服(加载安全上下文)。
    3. 开门:按动按钮打开闸机(修改 NS bit)。

如果让地勤(EL1)自己掌握钥匙开门,那地勤就可以带任何人随意进出驾驶舱,这就破坏了整个机场的安全体系。所以,开门的权力,必须收归最高层(EL3)所有。

相关推荐
VALENIAN瓦伦尼安教学设备8 分钟前
设备对中不良的危害
数据库·嵌入式硬件·算法
爱喝纯牛奶的柠檬25 分钟前
【已验证】STM32+MPU6050 姿态解算 + 运动状态识别 + 四阶段摔倒检测
stm32·单片机·嵌入式硬件
戏舟的嵌入式开源笔记30 分钟前
STM32 RS485读取SHT20
stm32·单片机·嵌入式硬件
LCG元2 小时前
噪声检测系统:STM32F4驱动MEMS麦克风,FFT频谱分析实战
stm32·单片机·嵌入式硬件
123过去2 小时前
responder使用教程
linux·网络·测试工具·安全·哈希算法
路baby2 小时前
BurpSuite基础功能实战演示讲解
安全·web安全·网络安全·系统安全·burpsuite
leiming62 小时前
信号量为什么“不占CPU“
单片机·嵌入式硬件
爱喝纯牛奶的柠檬2 小时前
【已验证】基于STM32F103的土壤湿度传感器驱动
stm32·单片机·嵌入式硬件
西杭3 小时前
Claude读论文系列(四)
安全
李白你好3 小时前
Linux 主机安全巡检与应急响应工具
linux·安全