0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

安全启动Secure Boot流程

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-11-02 16:45 次阅读

安全启动-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

最后阶段就是加载RTOS以及应用程序。这阶段的流程和上一个阶段相似,同样要先验证确认且解密,确认无误后再加载并执行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19281

    浏览量

    229787
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9091

    浏览量

    367507
  • 操作系统
    +关注

    关注

    37

    文章

    6818

    浏览量

    123325
  • 系统
    +关注

    关注

    1

    文章

    1016

    浏览量

    21339
收藏 人收藏

    评论

    相关推荐

    u-boot启动流程分析

    今天给大家全面的分析一下u-boot启动流程。整理这篇文章花费时间较长,中间很长时间未更新,希望这篇文章对大家有所帮助。
    发表于 07-12 15:16 803次阅读
    u-<b class='flag-5'>boot</b><b class='flag-5'>启动</b><b class='flag-5'>流程</b>分析

    求助,关于TRAVEO MCU闪存启动流程的问题求解

    我有一个关于 TRAVEO MCU 闪存启动流程的问题。 Q) 架构 TRM - 34.3.3 闪存启动流程,(6)、(8)、(9)、(10)、(11)、(12) 和 (13) 可以在
    发表于 05-30 06:25

    使用SECURE_BOOTSECURE_SFLASH选项

    / SecureBoot / aec_cbc_128和hmac_sha256命令,他们并没有得到与makefile建成。当我们使用secure_boot = 1和secure_sflash = 1个
    发表于 08-29 14:51

    禁用安全启动Hades Canyon NUC

    有VirtualBox。由于VirtualBox使用未签名的内核模块,我需要禁用安全启动。但是,当我通过以下菜单中的复选框禁用安全启动时:高级 - >
    发表于 12-05 10:44

    U-BOOT启动流程分享

    Bootloader移植(下)U-BOOT 启动流程u-boot启动三个2启动步骤(重点)U-
    发表于 01-18 10:17

    基于armv8架构对u-boot进行启动流程分析(一)

    的开发调试文档与强大的网络技术支持;基于以上理由本篇文章对现在主流的armv8架构的u-boot启动流程进行详细分析,以便所有人快速学习和理解u-boot的工作
    发表于 05-23 15:59

    基于 Rockchip U-boot next-dev 的 secure boot 流程

    资料将详细介绍基于 Rockchip U-boot next-dev 的 secure boot 流程。 Rockchip Secure
    发表于 06-27 15:53

    使用STM32安全启动与固件更新

    STM32 X-CUBE-SBSFU 软件包已经发布,提供了安全启动(Secure Boot)和安全固件更新(SecureFirmware
    发表于 09-11 07:35

    嵌入式U-BOOT启动流程及移植

    摘要:嵌入式系统一般没有通用的bootloader,u-boot是功能强大的bootloader开发软件,但相对也比较复杂。文中对u-boot启动流程作了介绍,详细给出了u-
    发表于 02-25 16:00 59次下载

    HAB boot启动流程与实现步骤

    在《深扒HAB boot 启动安全性》中,小编介绍了HAB boot启动流程(如图1所示),其
    的头像 发表于 08-12 09:39 1551次阅读

    secure boot相关的基本概念和框架

    secure boot是指确保在一个平台上运行的程序的完整性的过程或机制。secure boot会在固件和应用程序之间建立一种信任关系。在启用sec
    的头像 发表于 09-13 14:20 1592次阅读

    第一道防线-Secure Boot安全开机

    第一道防线-Secure Boot安全开机
    的头像 发表于 08-11 14:46 691次阅读
    第一道防线-<b class='flag-5'>Secure</b> <b class='flag-5'>Boot</b><b class='flag-5'>安全</b>开机

    Spring Boot启动 Eureka流程

    在上篇中已经说过了 Eureka-Server 本质上是一个 web 应用的项目,今天就来看看 Spring Boot 是怎么启动 Eureka 的。 Spring Boot 启动 E
    的头像 发表于 10-10 11:40 893次阅读
    Spring <b class='flag-5'>Boot</b><b class='flag-5'>启动</b> Eureka<b class='flag-5'>流程</b>

    车规MCU的安全启动固件

    安全启动固件(Secure Boot Firmware) 车规MCU的安全启动固件(
    的头像 发表于 10-27 17:20 2303次阅读
    车规MCU的<b class='flag-5'>安全</b><b class='flag-5'>启动</b>固件

    启动(Cold boot流程及阶段划分

    restart--冷启动 reset--热启动 ATF冷启动实现分为5个步骤: • BL1 - AP Trusted ROM,一般为BootRom。 • BL2 - Trusted Boot
    的头像 发表于 11-07 15:17 2355次阅读
    冷<b class='flag-5'>启动</b>(Cold <b class='flag-5'>boot</b>)<b class='flag-5'>流程</b>及阶段划分