这是一个非常容易混淆的概念。简单直接的回答是:

  1. S-EL1 和安全世界不是一回事:它们是“层级”与“空间”的关系。
  2. OS 是否运行在里面,取决于它是哪个 OS:普通的 Linux/Android 运行在“非安全世界”,而专门的安全 OS(如 OP-TEE)运行在 S-EL1。

下面详细拆解这两个概念:

1. S-EL1 与 安全世界的关系

我们可以用**“大楼”“楼层”**来比喻:

  • 安全世界:就像大楼里的**“保密区”**。这是一个逻辑隔离的硬件状态。当 CPU 处于这个状态时,它可以访问所有的保密资源(密钥、指纹数据等),且硬件会阻止“非安全世界”访问这些资源。
  • S-EL1 (Secure Exception Level 1):是位于“保密区”里的一层楼(特权等级)。

关系总结:

  • 安全世界是一个范围/状态,它包含了 S-EL0、S-EL1、S-EL2(如果支持)、EL3 等多个特权等级。
  • S-EL1 只是安全世界里的一个特权级别,专门用来跑安全操作系统内核的。

2. OS 运行在哪里?

这取决于你指的是哪个 OS。ARM 架构将系统分成了两个隔离的世界:

A. 通用操作系统 —— 不运行在 S-EL1
  • 代表:Linux、Android、Windows。
  • 运行位置:运行在 非安全世界EL1
  • 原因:这些 OS 代码量大、复杂度高、开源组件多,漏洞风险大。如果把它们放在安全世界,一旦被攻破,密钥等敏感数据就泄露了。所以它们只能运行在“非安全世界”,无法直接访问安全世界的资源。
B. 安全操作系统 —— 运行在 S-EL1
  • 代表:OP-TEE、Trusty (Android)、SafeG。
  • 运行位置:运行在 安全世界S-EL1
  • 特点:这些 OS 非常精简(代码量通常只有几百 KB),只负责处理最核心的安全任务(如解锁手机、支付验证、解密视频 DRM)。
  • 特权:它们运行在 S-EL1,拥有安全世界的最高软件权限(除了 EL3),可以访问受保护的硬件资源。

3. 完整的架构视图

为了让你更清晰地理解,我们可以把 ARM 的特权等级画成一个矩阵:

异常等级 (EL) 非安全世界 安全世界 说明
EL0 (应用层) Apps (普通 App) Trusted Apps (TA, 安全 App) 用户态应用,权限最低。
EL1 (内核层) Linux / Android Kernel Secure OS (OP-TEE) 这是你问题的核心:普通 OS 在 NS-EL1,安全 OS 在 S-EL1。
EL2 (虚拟化层) Hypervisor (KVM) S-EL2 (可选,较少见) 负责虚拟机管理。
EL3 (监控层) ARM TrustZone 固件 (ATF/BL31) ARM TrustZone 固件 最高特权,负责在“安全”与“非安全”世界之间切换。

4. 它们是如何交互的?

既然普通 OS(Linux)在 NS-EL1,安全 OS(OP-TEE)在 S-EL1,它们怎么配合工作?

  1. 正常情况:手机开机后,Linux 在 NS-EL1 运行,处理你的点击、上网等操作。
  2. 需要安全服务:当你打开银行 App 需要指纹支付时。
  3. 陷入 EL3:银行 App 通过专用指令(SMC)触发异常,CPU 跳转到 EL3
  4. 世界切换:EL3 的固件检查请求,保存非安全世界的状态,切换 CPU 到安全世界状态,然后跳转到 S-EL1 的安全 OS。
  5. 处理数据:安全 OS 验证指纹,处理密钥。
  6. 返回:处理完后,再次通过 EL3 切换回非安全世界,把结果告诉 Linux。

总结

  • S-EL1安全世界中的一个特权等级。
  • 普通 OS(Linux/Android) 运行在 非安全世界的 EL1
  • 安全 OS(OP-TEE) 运行在 安全世界的 S-EL1
  • EL3 是守门员,负责在两个 OS 之间进行切换。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐