【deepseek】安全操作系统 —— 运行在 S-EL1
S-EL1是安全世界中的一个特权等级。普通 OS(Linux/Android)运行在非安全世界的 EL1。安全 OS(OP-TEE)运行在安全世界的 S-EL1。EL3是守门员,负责在两个 OS 之间进行切换。
·
这是一个非常容易混淆的概念。简单直接的回答是:
- S-EL1 和安全世界不是一回事:它们是“层级”与“空间”的关系。
- 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,它们怎么配合工作?
- 正常情况:手机开机后,Linux 在 NS-EL1 运行,处理你的点击、上网等操作。
- 需要安全服务:当你打开银行 App 需要指纹支付时。
- 陷入 EL3:银行 App 通过专用指令(SMC)触发异常,CPU 跳转到 EL3。
- 世界切换:EL3 的固件检查请求,保存非安全世界的状态,切换 CPU 到安全世界状态,然后跳转到 S-EL1 的安全 OS。
- 处理数据:安全 OS 验证指纹,处理密钥。
- 返回:处理完后,再次通过 EL3 切换回非安全世界,把结果告诉 Linux。
总结
- S-EL1 是安全世界中的一个特权等级。
- 普通 OS(Linux/Android) 运行在 非安全世界的 EL1。
- 安全 OS(OP-TEE) 运行在 安全世界的 S-EL1。
- EL3 是守门员,负责在两个 OS 之间进行切换。
更多推荐



所有评论(0)