最近越来越多的客户在问TF-M和PSA之间是什么关系,以及想了解更多TF-M的细节和规划,我们在这里对这些问题进行统一回答。
TF-M是什么?
TF-M的全称是Trusted Firmware for M,是一个开源的PSA的参考实现,主要是针对Cortex-M的CPU,是在2018年在香港Linaro connect上发布的,现在很多Armv8-M的SoC已经在使用TF-M
TF-M 代码链接:https://git.trustedfirmware.org/trusted-firmware-m.git/tree/
ATF和TF-M的差异是什么?
熟悉Arm Cortex-A的同学们基本都听说过Arm Trusted Firmware(ATF), 也是开源软件,主要是针对于Cortex-A CPU的,使用ATF可以快速把TrustZone使用起来,现在绝大部分的Armv8-A的SoC都在使用ATF,在ATF上层在集成Secure OS,例如豆荚科技,Trustonic,OP-TEE,瓶钵,以及一些自研的Secure OS等。
但是Armv8-M和Armv8-A架构之间差异比较大,ATF不能适用于Armv8-M的CPU,为了让大家更方便的使用Armv8-M TrustZone,就做了一个开源的参考实现供大家使用和参考。
https://www.trustedfirmware.org/index.html
TF-M和PSA是什么关系?
PSA是包含四个部分,分别是安全需求分析,安全架构定义,安全实现,以及安全认证。可以简单认为TF-M是第三部分的参考实现,TF-M的设计原则是遵循了PSA-FF的要求,目前最新的TF-M版本是RC3,能够满足PSA Level 2的安全要求,同时实现了PSA-FF Isolation Level 2的要求,也就是实现了非安全区域和安全区域的隔离,同时在安全区域实现了APP RoT和PSA RoT之间的隔离。
TF-M是否只能运行在Armv8-M的CPU?
不是,TF-M最早期设计确实基于Armv8-M的架构开发的,但是Armv8-M和Armv7-M也兼容,如果SoC使用的Armv8-M的CPU,TF-M可以运行在Armv8-M的安全区域,但是有的SoC用的不是Armv8-M的CPU,有的是用的两个Armv7-M或Armv6-M的CPU,一个CPU作为非安全CPU,一个CPU作为安全CPU也可以实现安全隔离,那么TF-M也可以运行在安全的CPU,不过个人建议还是SoC升级到Armv8-M的CPU。
TF-M和RTOS是否需要绑定?
TF-M不需要和RTOS进行绑定,相对对立,可以认为一个SoC运行了两个操作系统:RTOS和TF-M,TF-M提供标准PSA API接口向RTOS提供安全服务。
TF-M和RTOS怎么进行集成?
集成方式十分简单,TF-M的Doc里有集成文档,需要RTOS支持Armv8-M,并把TF-M的生成的文件编译到RTOS,现在TF-M已经与多家RTOS公司进行了集成。
不使用TF-M,能否满足PSA安全要求?
当然可以,PSA是一套安全准则,不限制于Arm架构,同时不限制于任何RTOS,以及Secure OS,TF-M只是PSA的一套参考实现,同时我们也非常鼓励更多公司参与到PSA生态,现在国内外已经有好几家公司都在提供PSA的secure OS,以及Security solution。
TF-M视频资料汇总
Linaro Connect Hongkong 2018
Linaro Connect Vancouver 2018
- Trusted Firmware for M, technical deep dive
- Trusted Firmware M: Current Topics View Resources
- Open CI for Trusted Firmware View Resources
- Trusted Firmware - Project Updates and Topics
Linaro Connect Bangkok 2019
- Trusted Firmware.org Project Update
- TF-M Services on Multi-Core System
- Trusted Firmware M - what's cooking?
Linaro Connect Sandiego 2019
- TF-M Remote Secure Services with Zephyr
- Secure Runtime Library on IoT Device
- Trusted Firmware Project Update
会持续更新,如果有任何问题,请随时沟通