【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)所有。

相关推荐
charlie1145141919 小时前
嵌入式C++工程实践第16篇:第四次重构 —— LED模板,从通用GPIO到专用抽象
c语言·开发语言·c++·驱动开发·嵌入式硬件·重构
KKKlucifer9 小时前
国内堡垒机如何打通云网运维安全一体化
运维·安全
FreeCultureBoy10 小时前
GDidees CMS - Arbitrary File Upload (CVE-2023-27178)
安全
程序猿编码10 小时前
给你的网络流量穿件“隐形衣“:手把手教你用对称加密打造透明安全隧道
linux·开发语言·网络·安全·linux内核
深圳市九鼎创展科技11 小时前
MT8883 vs RK3588 开发板全面对比:选型与场景落地指南
大数据·linux·人工智能·嵌入式硬件·ubuntu
三品吉他手会点灯13 小时前
STM32 VSCode 开发-C/C++的环境配置中,找不到C/C++: Edit Configurations选项
c语言·c++·vscode·stm32·单片机·嵌入式硬件·编辑器
飞飞传输13 小时前
国产化FTP替代方案哪个好?选对平台让传输更安全高效
大数据·运维·安全
whyfail14 小时前
CVE-2026-39363-Vite开发服务器安全漏洞深度分析
安全·vite
amao998814 小时前
系统安全-概述
安全·系统安全
阿赛工作室15 小时前
符合欧盟安全标准的 Node.js + Vue3 全栈架构设计
安全·node.js