大量的嵌入式设备使用 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)
-
芯片
+关注
关注
453文章
50406浏览量
421822 -
ARM
+关注
关注
134文章
9046浏览量
366817 -
嵌入式
+关注
关注
5068文章
19019浏览量
303281 -
Linux
+关注
关注
87文章
11229浏览量
208927
发布评论请先 登录
相关推荐
评论