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上实现的。

相关推荐
TeYiToKu18 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
w微信150135078121 天前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件
憧憬一下1 天前
Pinctrl子系统中Pincontroller和client驱动程序的编写
arm开发·嵌入式·c/c++·linux驱动开发
编程圈子2 天前
I.MX6U 裸机开发2. 芯片简介、汇编基础及GPIO操作准备工作
嵌入式硬件·arm
上海知从科技2 天前
知从科技受邀出席ARM日产技术日
arm开发·科技
极客小张3 天前
基于STM32的智能温室环境监测与控制系统设计(代码示例)
c语言·arm开发·stm32·单片机·嵌入式硬件·物联网·毕业设计
TeYiToKu3 天前
笔记整理—linux驱动开发部分(6)platform平台总线
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件
CyberSecurity_zhang4 天前
Armv8的安全启动
安全·arm·tf-a·tf-m·安全启动
飞腾开发者4 天前
飞腾平台Arm ComputeLibrary编译安装指南
linux·服务器·arm开发·后端·性能优化
苏寅4 天前
arm64-v8a 和 armeabi-v7a 有啥区别?
arm