ARM可用的可信固件项目简介
安全之安全(security²)博客目录导读
目录
一、TrustedFirmware-A (TF-A)
二、MCUboot
三、TrustedFirmware-M (TF-M)
四、TF-RMM
五、OP-TEE
六、Mbed TLS
七、Hafnium
八、Trusted Services
九、Open CI
可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现。它为SoC开发人员和OEM提供了符合相关Arm规范的参考可信代码库。可信固件的代码是Arm规范的首选实现,允许快速轻松地移植到现代芯片和平台。这构成了应用程序处理器上的可信执行环境(TEE)或微控制器的安全处理环境(SPE)的基础。
首先,ARM可用的可信固件项目如下图9宫格所示,下面对每一个项目进行简单介绍。

一、TrustedFirmware-A (TF-A)
TrustedFirmware-A项目为Armv7-A和Armv8-A、Armv9-A类处理器提供了安全世界软件的参考实现。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。每两周举行一次会议/技术论坛,讨论技术问题。
文档:Trusted Firmware-A Documentation — Trusted Firmware-A 2.9.0 documentation
代码:trusted-firmware-a.git - Trusted Firmware for A profile Arm CPUs
二、MCUboot
MCUboot是32位微控制器的安全引导加载程序。MCUboot为微控制器系统上的引导加载程序和系统闪存布局定义了一个通用的基础结构,并提供了一个安全的引导加载程序,使软件易于升级。MCUboot不依赖于任何特定的操作系统和硬件,而是依赖于它所使用的操作系统的硬件移植层。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。
文档:MCUboot | mcuboot
代码:GitHub - mcu-tools/mcuboot: Secure boot for 32-bit Microcontrollers!
三、TrustedFirmware-M (TF-M)
TrustedFirmware-M(TF-M)为Armv8-M、Armv8.1-M架构(例如Cortex-M33、Cortex-M23、Cortex-M55、Cortex-M85处理器)或双核平台实现安全处理环境(SPE)。它是与PSA认证指南一致的平台安全架构参考实现,使芯片、实时操作系统和设备成为PSA认证。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。每两周举行一次会议/技术论坛,讨论技术问题。
文档:Trusted Firmware-M Documentation — Trusted Firmware-M v1.8.1 documentation
代码:trusted-firmware-m.git - Trusted Firmware for M profile Arm CPUs
四、TF-RMM
TF-RMM是Realm Management Monitor领域管理监视器(RMM)规范的可信固件实现,是Arm机密计算体系结构(Arm CCA)的一部分。Arm CCA是一种提供受保护执行环境(称为Realms)的体系结构。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。
文档:Realm Management Monitor Documentation — Realm Management Monitor documentation
代码:tf-rmm.git - RMM Reference implementation
五、OP-TEE
OP-TEE是一个Trusted Execution Environment可信执行环境(TEE),被设计为运行在Arm上的非安全Linux内核的伙伴;使用TrustZone技术的Cortex-A内核。OP-TEE实现TEE Internal Core API v1.1.x(是公开给可信应用程序的API),和TEE Client API v1.0(是描述如何与TEE通信的API)。这些API在GlobalPlatform API规范中定义。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。
文档:OP-TEE Documentation — OP-TEE documentation documentation
代码:GitHub - OP-TEE/optee_os: Trusted side of the TEE
六、Mbed TLS
Mbed TLS项目实现了加密原语、X.509证书操作以及SSL/TLS和DTLS协议。该项目提供了https://developer.arm.com/documentation/ihi0086/b参考实现通过PSA加密api支持加密操作。该项目还支持https://github.com/Mbed-TLS/mbedtls/blob/development/docs/proposed/psa-driver-interface.md,它为加密处理器驱动程序定义了一个接口。小的代码占用使得该项目适合嵌入式系统。 它有许多用户,包括TF-A, TF-M和OP-TEE。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。
文档:Mbed TLS documentation hub — Mbed TLS documentation
代码:https://github.com/Mbed-TLS/mbedtls
七、Hafnium
用于实现Armv8.4-A Secure-EL2扩展的系统的参考安全分区管理器(SPM)。它允许多个隔离的安全分区(sp)在Secure-EL1上运行。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。Hafnium和Secure-EL2也是TF-A技术论坛讨论的主题。
文档:Hafnium Documentation — Hafnium 2.9.0 documentation
代码:hafnium.git - Hafnium GIT Repository
八、Trusted Services
Trusted Services可信服务项目提供了一个框架,用于跨一系列安全处理环境(如OP-TEE和Hafnium提供的环境)开发和部署设备信任根服务。
文档:Trusted Services Documentation — Trusted Services 1.0.0-beta documentation
代码:trusted-services.git - Trusted Services for A profile Arm CPUs
九、Open CI
可信固件Open CI(持续集成,Continuous Integration)是一个基于云的CI基础设施,它利用包括Gerrit、Jenkins和https://lavasoftware.org/在内的多个组件来创建一个全面的端到端集成和测试基础设施。它目前由TF-M、TF-A和Hafnium使用,未来可能会有其他托管固件支持的项目。Open CI支持静态分析工具来提高代码质量。它也是批准合并请求的机制(通过维护者批准)以及创建源代码发布标记(release tags)的能力。最后,随着开放CI的后端连接到利用LAVA的物理开放CI硬件实验室,它验证了在https://tf.validation.linaro.org/scheduler/device_types上实际运行的源代码树中所做的代码更改Arm https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms软件模拟器也可以由TrustedFirmwa使用和利用。贡献指南可以在文档中找到。请订阅项目电子邮件列表以参与开发讨论。
文档:TrustedFirmware OpenCI User Guide
代码:Trusted Firmware Code Review
参考: Trusted Firmware - Open Source Secure Software
相关文章:
ARM可用的可信固件项目简介
安全之安全(security)博客目录导读 目录 一、TrustedFirmware-A (TF-A) 二、MCUboot 三、TrustedFirmware-M (TF-M) 四、TF-RMM 五、OP-TEE 六、Mbed TLS 七、Hafnium 八、Trusted Services 九、Open CI 可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现…...
信创办公–基于WPS的Word最佳实践系列 (图文环绕方式)
信创办公–基于WPS的Word最佳实践系列 (图文环绕方式) 目录 应用背景操作步骤1、 打开布局选项中图文环绕方式的方法2、 图文环绕三大类型 应用背景 在Word中,对文字和图片进行排版时,采用各种不同的图片与文字组合效果能够使页面…...
Naive UI数据表格分页pageCount配置没效果
吐槽:因为naive-ui是基于vue3,所以目前的组件资料是少之又少啊,虽然好用,但感觉没有特别的普及。 背景:记得1年前我第一次碰到了这个问题,在列表里使用:pagination分页,怎么都不显示页码&#…...
Kibana Discover数据查询
步骤1:打开管理页面(Management) 步骤2: 因为前面的章节导入航班数据的时候,自动创建了一个名字叫kibana_sample_data_flights的航班数据索引,如果我们只想搜索kibana_sample_data_flights索引的数据,则不需要通配符&…...
笔记 | 编程经验谈:如何正确的使用内存
笔记 | 编程经验谈:如何正确的使用内存 首先我们要了解内存的分配方式。一般来说,内存的分配方式有三种: 1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 2.在栈上创建。在执行函数时,函数内…...
C语言入门-1.1 C语言概述
想要学好一门计算机编程语言,就和谈一个女朋友是一样的,需要对其深入了解。 1、计算机语言 (1)什么是计算机语言? 顾名思义,就是计算机之间交流的语言,就和人一样,咱们都是使用普通…...
周记之学习总结
你在人群中看到的每一个耀眼的女孩,都是踩着刀尖过来的。你如履平地般地舒适坦然,当然不配拥有任何光芒; 10.11-10.12 思来想去还是不舍得,搞了一下这个jwt,看了很多视频和博客,一直没看懂,两…...
程序设计:C++ 一个可以放入共享内存的string模板
共享内存由于是多进程共享的,里面的数据不适合包含指针,因为共享内存在不同进程里的地址并不相同。尽管可以在连接共享内存时指定连接地址,但是,这样做限制太多: 不同硬件、系统这个地址可能不一样,没有通…...
【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)
第三届应用力学与先进材料国际学术会议(ICAMAM 2024) 2024 3rd International Conference on Applied Mechanics and Advanced Materials(ICAMAM 2024) 第三届应用力学与先进材料国际学术会议(ICAMAM 2024)…...
Python -- I/O编程
文章目录 一、文件读写1. 读文件2. 二进制文件3. 字符编码4. 写文件 二、StringIO和BytesIO三、操作文件和目录1. 操作系统命令2. 操作文件 四、序列化五、 JSON六、异步IO1. 协程2. asyncioasync/awaitaiohttp 一、文件读写 Python内置了读写文件的函数,用法和C是…...
langchain入门指南和实战
简单介绍 LangChain 是一个开源的语言模型集成框架,旨在简化使用大型语言模型(LLM)创建应用程序的过程。 利用它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人、 调用特定的SaaS服务…...
群晖synology DSM 7.2设置钉钉Webhooks通知
现在越来越多的小伙伴都有了自己的Nas系统,为了更加方便的接收Nas的消息,这篇文章带着大家一起配置一个钉钉(机器人)即时消息通知 首先登录钉钉的开放平台:开发者后台统一登录 - 钉钉统一身份认证 1.创建一个机器人&…...
STP生成树协议详解
一、STP作用 如果链路断开或节点故障,那么互联的设备就无法正常通信了,这类网络问题叫做单点故障。没有备份的链路或节点,出现故障会直接断网。如果要提供 724 小时不间断的服务,那就需要在网络中提前部署冗余。避免出现单点故障…...
CentOS 6/7/8 操作系统镜像下载
CentOS Mirrors List 编辑 DownloadAbout About CentOS Frequently Asked Questions (FAQs) Special Interest Groups (SIGs) CentOS Variants Governance Community Contribute Forums Mailing Lists IRC Calendar & IRC Meeting List Planet Submit a Bug Stories Doc…...
中国社科院与美国杜兰大学金融管理硕士---不将就的人生
“万般皆下品,惟有读书高”、“书中自有颜如玉,书中自有黄金屋”,古往今来,读书的好处为人们所重视。从而想拿到学历没有知识的沉淀,没有一定的学识水平,又怎么能拿到含金量颇高的学历呢?退一步…...
教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇
《iTOP-RK3568开发板驱动开发指南》手册文档更新,手册内容对应视频教程,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 ✦ 第一篇 驱动基础 第1章 前言 第2章 你好!内核源码 第3章 …...
Jmeter测试关联接口
Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,本文主要介绍jmeter通过正则表达式提取器来实现接口关联的方式,可供参考。 一、实例场景: 有如下两个接口,通过正则表达式提取器,将第一…...
C++之基于Winsock2封装UDPServer与UDPClient
文章目录 Socket过程UDPServer.hUDPServer.cppUDPClient.hUDPClient.cppmain.cppCMakeLists.txt测试截图 Socket过程 UDPServer UDPClient UDPServer.h #ifndef UDPSERVER_H_INCLUDED #define UDPSERVER_H_INCLUDED#include <iostream> #include <string> #inclu…...
为什么说指针是c语言的灵魂?
为什么说指针是c语言的灵魂? 语言主要操作的对象是数据,c语言里面能够有大容量数据的地方就是指针指向的heap内存。从这 个角度来看,确实指针就是数据的灵魂。最近很多小伙伴找我,说想要一些c语言资料,然后我根据自己…...
性能测试jmeter命令行运行+html测试报告解读
windows下打开jmeter的运行窗口,可以看到提示不要用GUI模式进行负载测试,如果要用负载测试,用cli模式,因为GUI模式运行jmeter比较消耗性能。 命令行模式 windows下找到jemeter所在文件夹,打开cmd输入命令。 jmeter -n…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
Android Framework预装traceroute执行文件到system/bin下
文章目录 Android SDK中寻找traceroute代码内置traceroute到SDK中traceroute参数说明-I 参数(使用 ICMP Echo 请求)-T 参数(使用 TCP SYN 包) 相关文章 Android SDK中寻找traceroute代码 设备使用的是Android 11,在/s…...
uni-app学习笔记二十七--设置底部菜单TabBar的样式
官方文档地址:uni.setTabBarItem(OBJECT) | uni-app官网 uni.setTabBarItem(OBJECT) 动态设置 tabBar 某一项的内容,通常写在项目的App.vue的onLaunch方法中,用于项目启动时立即执行 重要参数: indexnumber是tabBar 的哪一项&…...
TMC2226超静音步进电机驱动控制模块
目前已经使用TMC2226量产超过20K,发现在静音方面做的还是很不错。 一、TMC2226管脚定义说明 二、原理图及下载地址 一、TMC2226管脚定义说明 引脚编号类型功能OB11电机线圈 B 输出 1BRB2线圈 B 的检测电阻连接端。将检测电阻靠近该引脚连接到地。使用内部检测电阻时,将此引…...
