Security Boot secure Boot的介绍

什么是secure boot

secure boot 是一种保证平台上软件完整性的过程或机制。secure boot会在硬件和软件之间建立一种信任关系。在启用secure boot之后,没有经过签名的固件和软件是无法运行在该设备上。通过这种方式可以保证操作系统免受恶意攻击。secure boot一般使用公钥/私钥来进行固件的验证和应用程序的签名。

为什么需要 secure boot

如果以上流程中的flash中的镜像被更换,最终系统会运行被修改后的固件程序,造成安全泄露。

secure boot的安全级别

EL3 secure Hypervisor 最高的管理权限,负责安全检测和secure world和normal world之间的切换

EL2 hypervisor 提供了对虚拟化的支持

EL1 是一个特权模式,主席那个一些指令和运行各类型的操作系统,在secure world就是secure OS 比如TEE

EL0 是无权模式,所有的APP的都会在这一层级

secure boot 启动流程

BL1 是信任链的根所在一般是固化在芯片内部的一段代码,叫做bootrom, 拥有最高的执行权限EL3,在CPU出厂的时候就被写死了。 芯片复位上电之后,bootrom的代码会从固件位置加载BL2,然后初始化sram, 在BL2的验签通过后会跳转到BL2.

BL2 和BL1一样拥有EL3的至高权限,不同的是BL2是在Flash中的一段可信的安全启动代码,它的可信是建立在BL1的验证通过上。主要是在BL2完成一些平台的初始化,比如说是DDR的初始化等。在初始化完成之后,会寻找BL31或BL33,对其进行执行,找到BL31就不会再调用BL33,这两必须存在一个。

BL31 是EL3的最后一个阶段,是听过SMC指令为Non-Secure持续提供设计安全的服务。在secure world和Non secure world之间进行切换,主要是找BL32,验签,然后运行BL32.

BL32 是所谓的secure os 在ARM的TEE(Trusted Execution Enviroment)实现, OP-TEE是基于ARM TrustZone硬件架构实现的软件secure OS。一般在这个阶段会运行OPTeeOS+ 安全App. 是可信任的OS运行在EL1并且在EL0启动可信任APP。 并且在Trust OS运行完成后通过SMC指令返回BL31,切换到BL31, BL31切换到Non secure world继续知悉BL33

BL33 就是Normal World了,运行的都是非安全固件,也就是常见的UEFI firmwre 或者 u-boot 也可能是自启动的linux kernel。

启动BL1 BL2 BL31 BL32就是一个完整的ATF信任链的建立过程(ARM Trusted Firmware),比如常见的PSCI (power state coordination interface) 功能是在BL31上实现的。

相关推荐
森G16 小时前
2二、u-boot移植
linux·arm开发
GilgameshJSS19 小时前
STM32H743-ARM例程22-USB_CDC
arm开发·stm32·嵌入式硬件
凉、介19 小时前
ARM 总线技术 —— AMBA 入门
arm开发·笔记·学习
rechol1 天前
ARM 架构核心知识笔记(整理与补充版)
arm开发·笔记·架构
szxinmai主板定制专家1 天前
【NI测试方案】基于ARM+FPGA的整车仿真与电池标定
arm开发·人工智能·yolo·fpga开发
大聪明-PLUS2 天前
从头开始为 ARM 创建 Ubuntu 映像
linux·嵌入式·arm·smarc
ting_zh2 天前
Cortex-M 中断机制基础
arm
大聪明-PLUS2 天前
QEMU:如何组织与 I2C 设备的透明交互
linux·嵌入式·arm·smarc
森G3 天前
2一、u-boot下载编译
linux·arm开发
GilgameshJSS3 天前
STM32H743-ARM例程23-USB_HID
arm开发·stm32·嵌入式硬件