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…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...

【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...