安全启动-Secure Boot
除了NSPE和SPE两个环境的沟通流程之外,secure boot也是Trusted Firmware很重要的设计环节。
Secure boot最主要的目的就是防止系统使用到恶意的固件程序或操作系统,在开机流程中,boot
code会先透过密码学(cryptography)算法验证是否为可信任的的程序,如果验证成功即会开始执行,否则中止流程。
在Trusted Firmware-M的secure boot流程如下:
secure boot流程
Boot loader stage 1(BL1)
此阶段主要是必要的硬件初始化或是设定,因此BL1 boot code必须要是可信任且不可被窜改。在执行完初始化后,就会跳到BL2的entry point继续执行BL2。
The bootloader code must be stored and executed from ROM or such part of
flash memory which supports write protection.
Boot loader stage 2(BL2)
BL2负责其他需要的初始化操作,例如启动MCUboot前所需的设定或检查,接着就会把执行移交给MCUboot。
MCUboot
MCUboot是针对32-bit microcontroller所设计的secure bootloader,其中包含完整的程序验证流程,因此也是Trusted Firmware-M secure boot流程的核心。
而MCUboot本身是独立的open source project,因此也能应用在其他项目上。
TF-M
TF-M会依据memory layout放置在指定的內存位置,而MCUboot会先去该位置取得TF-M binary
code,并且进行相关验证确认,如果TF-M已被加密,也会在这阶段进行解密。在确认完TF-M是正确且可信任后,就会加载TF-M。
要注意的是,Trusted Firmware-M手册中有提到,验证和解密所需key建议放在OTP memory中,以确保不可修改。
ROTPK(root of trust public key)can be stored in a one-time-programmable(OTP)memory.
此外,由于需要在加载TF-M前就对TF-M binary进行验证,因此上一个段落提到的crypto流程不适用在这里,我们需要额外的crypto API来处理验证与加解密。
一般这个时候使用的驱动和接口会封装在BL2。
最后阶段就是加载RTOS以及应用程序。这阶段的流程和上一个阶段相似,同样要先验证确认且解密,确认无误后再加载并执行。
-
处理器
+关注
关注
68文章
19281浏览量
229787 -
ARM
+关注
关注
134文章
9091浏览量
367507 -
操作系统
+关注
关注
37文章
6818浏览量
123325 -
系统
+关注
关注
1文章
1016浏览量
21339
发布评论请先 登录
相关推荐
评论