ARM V8与 MTK8766各隔离区运行的实体固件详解
1.1 标准ARMv8隔离区实体
1.1.1 EL3:BL31 Secure Monitor
- 世界切换:负责安全世界与非安全世界之间的切换。
- SMC处理:处理来自两个世界的SMC调用。
- 中断路由:配置GIC中断控制器,路由安全中断和非安全中断。
- 电源管理:提供PSCI(Power State Coordination Interface)电源管理服务。
- 系统初始化:初始化系统的核心硬件,如GIC、TZC-400等。
1.1.2 SEL1:TEE操作系统
- OP-TEE:由Linaro维护的开源TEE,完全符合GlobalPlatform标准,支持多种硬件平台。
- Google Trusty:由Google开发的开源TEE,与Android系统深度集成,主要用于Pixel设备。
- QSEE:高通开发的闭源TEE,用于骁龙平台。
- Trustonic Kinibi:Trustonic开发的闭源TEE,广泛用于三星、联发科等平台。
- 可信应用管理:加载、运行和管理可信应用(TA)。
- 安全存储:提供基于硬件加密的安全存储服务。
- 加密运算:使用硬件加密引擎执行加密、解密、签名、验证等操作。
- 可信UI:提供安全的用户界面,防止钓鱼攻击。
- 生物识别:处理指纹、人脸等生物识别数据。
1.1.3 SEL0:可信应用(TA)
- Keymaster TA:负责密钥的生成、存储和运算。
- Gatekeeper TA:负责密码验证,防止暴力破解。
- Fingerprint TA:负责指纹模板的存储和比对。
- Face TA:负责人脸模板的存储和比对。
- Payment TA:负责安全支付相关的操作。
1.1.4 NSEL1:Linux内核
- 进程管理:管理系统中的所有进程。
- 内存管理:管理系统的物理内存和虚拟内存。
- 设备驱动:提供硬件设备的驱动程序。
- 文件系统:管理系统的文件系统。
- 网络协议栈:提供网络通信功能。
1.1.5 NSEL0:Android应用
- 系统应用:如电话、短信、相机、设置等。
- 第三方应用:如微信、支付宝、抖音等。
2.2 MT8766隔离区实体
2.2.1 EL3:Preloader中的Secure Monitor
- 世界切换:负责安全世界与非安全世界之间的切换。
- SMC处理:处理来自两个世界的SMC调用。
- 中断路由:配置GIC中断控制器,路由所有中断到EL3,然后转发给对应的世界。
- 电源管理:提供MTK特有的电源管理服务。
- 系统初始化:初始化DDR、时钟、电源等核心硬件。
2.2.2 SEL1:Kinibi TEE内核
- 微内核管理:提供最基本的进程调度和内存管理功能。
- 驱动管理:管理安全外设的驱动程序,所有驱动都运行在S-EL0。
- TA管理:加载、运行和管理可信应用。
- 安全存储:提供基于RPMB分区的安全存储服务。
- 加密运算:使用MTK的HACC硬件加密引擎执行加密运算。
2.2.3 SEL0:Kinibi TA与驱动
- Keymaster TA:负责密钥的生成、存储和运算。
- Gatekeeper TA:负责密码验证。
- Fingerprint TA:负责指纹模板的存储和比对。
- HACC驱动:硬件加密引擎的驱动程序。
- RPMB驱动:RPMB分区的驱动程序。
2.2.4 NSEL1:LK Bootloader与Linux内核
- 硬件初始化:初始化非安全世界的硬件设备。
- 镜像加载:从eMMC加载Linux内核和Android系统镜像。
- 安全启动验证:验证Linux内核和Android系统镜像的签名。
- 启动参数传递:将启动参数传递给Linux内核。
2.2.5 NSEL0:Android应用
3.3 对比总结
隔离区 | 标准ARMv8实体 | MT8766实体 |
EL3 | BL31 Secure Monitor | Preloader中的Secure Monitor模块 |
SEL1 | OP-TEE/Trusty TEE内核 | Trustonic Kinibi TEE内核 |
SEL0 | 可信应用(TA) | Kinibi TA与驱动 |
NSEL1 | Linux内核 | LK Bootloader + Linux内核 |
NSEL0 | Android应用 | Android应用 |