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

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

3天内不再提示

TF-A主要保护的是什么

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-09-11 16:25 次阅读

大量的嵌入式设备使用 ARM 为核心的芯片,为了保证安全 ARM 推出了 Arm Trusted Firmware 的可信固件,简称 TF-A。它是一个开源的软件,最早是用在 Armv8-A。它的作用是隔离硬件,为硬件提供一个安全环境并且提供安全服务。

智能手机里面保存了我们的指纹、Face ID(3D 人脸信息)、虹膜、银行卡密码等重要信息。因此智能设备的安全问题就成了半导体行业的重要问题,ARM 为此提供了 TrustZone 解决方案,TrustZone 将 CPU 的工作状态分为了 Secure World 和 Normal World,涉及到安全相关的内容运行在安全世界,比如指纹、密码等,其他的操作都在非安全世界运行,比如应用程序。TrustZone 是一种硬件解决方案。

我们并不会直接去官方网站下载 TF-A 的源码,这样的开发难度太大,半导体厂商都会从 TF-A 官网下载源码,然后修改适配自己的芯片,把自家的芯片加进去。我们在实际项目开发中直接使用半导体原厂给提供的 TF-A 即可。

TF-A 是有自己的 Makefile 文件的,而且真正编译的时候也是要用 TF-A 自己的 Makefile。

TF-A 主要保护的就是设备启动过程,通过各种鉴权,保证设备启动的过程中每个阶段的固件都是安全的,防止被不法分子替换某些启动固件导致安全信息泄露。

对于传统的 ARM 处理器而言 , Linux 系统的启动流程是:内部 BootROM -》 Uboot -》 kernel -》 rootfs,整个启动过程是一个链式结构,启动过程其实是没有安全校验的。加入 TF-A 固件以后,TF-A 就可以对 uboot、kernel 进行校验,如果还要使用 TEE OS(Trusted Execution Environment,TEE),那么 TF-A 还要完成对 TEE OS 的校验。

Linux 启动是一个链式结构,因此安全启动的鉴权(校验)过程也是链式结构的。在系统启动的过程中,会先对下一个要加载运行的镜像进行鉴权,只有鉴权成功此镜像才能运行,并进入到下一阶段,只要其中有一环鉴权失败,那么整个系统就会启动失败。

bl1、bl2 和 bl31 都属于 TF-A 固件,而 bl32 和 bl33 是 TF-A 要启动的其他第三方固件,比如 TEE OS 和 uboot。

bl1、bl2、bl31、bl32 和 bl33 是 TF-A 的不同启动阶段,TF-A 的启动过程是链式的,不同的阶段完整的功能不同, bl1、bl2、bl31、bl32 和 bl33 全名如下:

bl1:Boot loader stage 1(BL1)
bl2:Boot loader stage 2(BL2)
bl31:Boot loader stage 3-1(BL31)
bl32:Boot loader stage 3-2(BL32)
bl33:Boot loader stage 3-3(BL33)

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

    关注

    449

    文章

    48562

    浏览量

    413034
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8736

    浏览量

    363304
  • 嵌入式
    +关注

    关注

    5016

    文章

    18489

    浏览量

    293046
  • Linux
    +关注

    关注

    87

    文章

    11030

    浏览量

    207238
收藏 人收藏

    评论

    相关推荐

    如何使用Yocto更新已更改的TF-A设备树来产生新的镜像文件?

    求助大佬, 我用Yocto构建了STM32MP157的镜像文件,但我需要更改和移植TF-A和U-BOOT来适配我的板子, 我按照它正点原子教程里更改了.bl2和创建了新的.dtsi设备树文件,但
    发表于 03-29 08:01

    关于TF-A(ATF)固件的基本知识详解

    1、什么是ATF首先什么是TF-A(ATF)?ATF就是一个固件, 一段代码,一个为armv7-A/armv8-A/armv9-A提供的参考实现代码。(注意,这只是参考实现,你也可以不
    发表于 06-15 16:57

    TF-A与U-boot的打印输出显示了不同的信息是为什么呢

    我已将 TF-A 放入详细打印中,导致打印出有关 BSEC 访问的信息。但是 TF-A 与 U-boot 的打印输出显示了不同的信息,或者至少是令人困惑的信息。是什么赋予了?(TF-A 2.6-r1
    发表于 12-01 07:30

    为157F-DK2设置TF-A sp_min总是报错的原因?

    您好,我正在尝试为 157F-DK2 设置 TF-A sp_min。这是我的信息。搭建环境Ubuntu 22.04用于 OpenSSL 3.0 支持需要,因为 trusted-firmware-a
    发表于 12-08 07:40

    怎样去更改默认的tf-a和u-boot串口linux控制台呢

    内核控制台。如果我在 tf-a 和 u-boot dts 中尝试相同的修改,在启动时我会看到从 uart4 开始的日志,但此时它会阻塞Preparing exit to normal worldNo serial driver found我也应该修改一些引导环境吗?
    发表于 12-19 06:23

    如何去调试U-Boot和TF-A中的USB以及OTG控制器呢

    我正在开发基于 STM32MP157F 的定制板,我在 U-Boot 中的 USB 和 EHCI 驱动程序以及 U-Boot 和 TF-A 中的 USB 和 OTG 控制器方面遇到了一些问题。一旦
    发表于 12-20 07:00

    怎样配置TF-A模块来管理时间戳篡改呢

    我正在开发一个基于 STM32mp153 MPU 和 Linux 操作系统的项目。我已经配置了 TF-A 模块来管理时间戳篡改。当篡改事件发生时,它会在标准输出中报告。我想将 TF-A 检测
    发表于 12-23 08:56

    请问如何使用TF-A中的I2C1来控制STPMIC1?

    在我们的定制板中,我们使用 I2C1 来控制和配置 STPMIC1。我想在 TF-A 中使用 I2C1,这样 PMIC 就可以配置为在引导期间为 DDR 供电。TF-A 默认不支持 I2C1,但
    发表于 01-16 08:19

    构建内核/u-boot/tf-a时忽略自定义CubeMX DTS文件的路径如何解决?

    尝试构建 tf-a、u-boot 或 linux 内核时出现以下错误(以下是尝试对 tf-a-stm32mp 进行 bitbake 时):make: *** No rule to make
    发表于 01-29 06:28

    什么会导致fsbl tf-a引导加载程序在闪烁后崩溃?

    好,并以 100% 完成,但稍等片刻,我就遇到了错误。似乎 TF-A 在加载后崩溃或无法启动。我正在寻找原因以及如何解决。附件是我在编程器中使用的 TSV 文件。我正在使用 EcoSystem 4.1.0。
    发表于 02-01 07:31

    如何使用STM32CubeProgrammer在没有USB的情况下将TF-A、u-boot、根文件系统刷入SD卡?

    以下 Wiki 页面显示了如何使用 STM32CubeProgrammer 将 TF-A、u-boot、根文件系统刷入 SD 卡。在上面的 wiki 页面中,我可以使用 USB将 TF-A
    发表于 02-03 10:40

    如何从TF-A或uboot加载/启动Cortex-M4?

    是否可以从 TF-A 或 uboot 加载/启动 Cortex-M4?对于我们的用例,我们希望 Cortex-M4 中的 RTOS 尽快运行。在 linux 完成启动之前。
    发表于 02-07 06:51

    TF-A的不同启动阶段有哪些

    TF-A 不同启动阶段 FSBL:First stage boot loader,第一阶段启动文件 SSBL:Second stage boot loader,第二阶段启动文件 TF-A 分为
    的头像 发表于 09-11 16:54 655次阅读
    <b class='flag-5'>TF-A</b>的不同启动阶段有哪些

    TF-A启动流程详解

    bl 1 bl 1 是 TF-A 的第一个启动阶段,芯片复位以后就会运行 bl1 镜像,TF-A 提供了 bl1 源码。但是,实际上 bl1一般是半导体厂商自己编写的内部 Boot ROM 代码
    的头像 发表于 09-11 16:59 973次阅读
    <b class='flag-5'>TF-A</b>启动流程详解

    TF-A移植是什么意思

    TF-A 移植 当我们实际做产品的时候我们的硬件平台肯定会和芯片原厂的有区别,比如 DDR 容量会改变,自己的硬件没有使用到官方开发板所使用的 PMIC芯片等等。因此这里就涉及到将半导体原厂提供
    的头像 发表于 09-11 17:04 548次阅读
    <b class='flag-5'>TF-A</b>移植是什么意思