TF-A主要保护的是什么

描述

  大量的嵌入式设备使用 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)

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分