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

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

3天内不再提示

ARMv7安全引导的过程

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-11-07 15:25 次阅读

对于安全引导功能的实现和验证过程各家芯片公司的方案都不一样,这是由该芯片的启动流程以及启动所需镜像文件来决定的,但都会遵循链式验签启动的原则。

ARMv7架构并没有使用ATF,系统的启动流程与以前一样使用BootLoader来引导Linux内核和TEE
OS。安全引导的启动流程如图下所示。

图片

安全引导的启动流程

系统启动过程使用链式验签的方式进行引导,其中任何一环验签失败都会导致系统启动失败,为防止通过替换ramdisk来修改根文件系统中的内容,一般将ramdisk与Linux内核打包在同一个镜像文件中,而且该镜像文件需要待验签通过后才可被使用。

签名信息一般是对镜像文件的内容进行哈希计算获取摘要后再对该摘要使用RSA私钥进行电子签名来获得,验证时同样会计算需要被引导的镜像文件的摘要,然后使用该摘要、签名信息以及RSA公钥进行RSA算法的验证。这个就是对称的过程,加密签名,验签解密。

ARMv8安全引导的过程

ARMv8架构之后ARM提供了ATF,BootLoader、TEE镜像文件、Linux内核镜像文件、recovery镜像文件都是由ATF来进行引导和加载而不是由ChipRom来完成的。

ChipRom只会去验证ATF中bl1的合法性,后续引导过程同样也是按照链式验签的方式进行,符合TBBR规范。读者可使用git命令从gitHub上获取ATF的所有源代在ARMv8架构中整个安全引导的流程如图下所示。

图片

ARMv8的Secure Boot流程

ARMv8架构中引入了ATF,同时在ATF中提供了安全引导的功能,BootLoader镜像、Linux内核、recovery镜像和TEE OS镜像文件的签名方式都由ATF决定。当然开发者也可以对ATF进行定制化,修改ATF中的验签过程,但是修改后的验签方案需要符合TBBR规范。

此时ATF不要和BL31搞混了哦。ATF是一个整个启动链路。

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

    关注

    453

    文章

    50366

    浏览量

    421656
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9042

    浏览量

    366734
  • 架构
    +关注

    关注

    1

    文章

    509

    浏览量

    25443
收藏 人收藏

    评论

    相关推荐

    armv7 generic timer使用笔记

    armv7-A架构中每个CPU核心都包含自己的私有定时器,所有cpu的定时器共享一个System counter, System counter负责产生计数,传递到每个核心的私有定时器
    的头像 发表于 09-27 15:10 2446次阅读
    <b class='flag-5'>armv7</b> generic timer使用笔记

    arm7 armv7 cortexm3它们是什么关系请问?

    arm7 armv7 cortexm3它们是什么关系请问?
    发表于 11-15 21:21

    基于ARMv7架构的Cortex系列

    基于ARMv7架构的Cortex系列由ARM公司在2006年推出,Cortex系列的推出满足人们对性能日渐复杂的设计要求,根据不同需求,Cortex系列共三个不同的子系列...
    发表于 08-09 06:37

    ARMv8架构资料分享

      随着开发工作逐渐迁移到 ARMv8 的 64 位平台,因此有必要尽快熟悉 ARMv8 架构。ARMv8 与先前较为熟悉的 ARMv7 架构有较大变化,其中非常重要的一点是支持了 A
    发表于 03-21 14:50

    ARMv7系列芯片算法的NEON优化耗时异常的原因是什么

    目前正在做ARMv7 系列芯片算法的NEON优化,发现一个耗时异常的地方,现象描述如下:首先主循环里会处理三类数据,三类数据分开存放在DDR上,每次循环分别处理三类数据的8个uchar数据,存储数据
    发表于 08-16 15:22

    Cortex-A53使用AArch32 Kernel,可以直接使用ARMv7的所支持的CPU吗?

    CA53 run 32bit linux kernel, 发现arch/arm/kernel/perf_event_v7.c 只支持ARMv7 的 ca17, ca15, ca12, ca9
    发表于 08-29 14:11

    请问怎么理解ARMv7的Secure和Non-secure状态

    我在看ARMv7异常部分,看到Vector tables发现和以前不一样了,有Secure和Non-secure状态(还有Hyp和Monitor),请问怎么理解这两种状态?读那个寄存器可以知道当前ARM处于哪种状态?
    发表于 09-01 15:46

    如何在arm32 arch和armv7中打印堆栈框架的框架指针地址呢

    我正在尝试在arm32 arch和armv7中打印堆栈框架的框架指针的地址。为了找到先前的堆栈帧地址,我正在arch_prev_frame()中执行(frame-12),并在
    发表于 09-05 16:01

    Armv7Armv8系统中跟踪的高级视图详解

    本指南主要介绍Armv7系统和Armv8系统中跟踪的高级视图,最高可达Armv8.4版本。 该指南涵盖: •跟踪是什么以及如何使用 •跟踪体系结构是如何定义的,以及它如何映射到不同的跟踪组件实现 •在Arm系统中可以看到哪些跟踪
    发表于 08-02 06:11

    ARM体系结构参考手册ARMv7-A和ARMv7-R版本

    本手册介绍ARM®架构v7ARMv7的A和R配置文件。 其中包括以下内容的描述: ·处理器指令集: -原始ARM®指令集-高代码密度Thumb®指令集-ThumbEE指令集,包括对实时(JIT)或
    发表于 08-12 07:46

    在基于ARMv7的平台1.0版上使用CSAT进行低级调试

    此教程提供了使用 CoreSight Access 工具在基于 Armv7 的平台上执行某些基本调试操作的信息。 此教程侧重于使用与 DS-5 一起运输的核心Sight Access 工具在
    发表于 08-28 06:50

    如何将软件应用程序从ARMv5迁移到ARMv7-A/R

    本文档旨在帮助您将软件应用程序从ARMv5迁移到ARMv7。 它描述了ARMv5和ARMv7之间的区别,并解释了将现有软件应用程序从ARMv
    发表于 08-29 06:51

    ARMv7的Cortex系列微处理器技术特点

    ARMv7的Cortex系列微处理器 随着嵌入式技术应用领域的不断扩展,对嵌入式系统的要求越来越高,而作为嵌入式系统核心的微处理器也面临日益严竣的挑
    发表于 10-17 09:17 3364次阅读
    <b class='flag-5'>ARMv7</b>的Cortex系列微处理器技术特点

    ARMv7ARMv7的体系结构参考手册免费下载

    ARM® Architecture Reference Manual ARMv7-A and ARMv7-R edition
    发表于 09-28 08:00 27次下载
    <b class='flag-5'>ARMv7</b>和<b class='flag-5'>ARMv7</b>的体系结构参考手册免费下载

    ARMv7-A工作模式介绍

    意思就是 64 位和 32 位,其中 AArch32 和 ARMv7基本一样(会多一些其他操作指令)。 安全不能仅仅依靠软件来实现,也是需要硬件支持的,比如 ARM处理器就有不同的运行等级,运行在低等
    的头像 发表于 09-11 16:31 934次阅读
    <b class='flag-5'>ARMv7</b>-A工作模式介绍