Hcoco_me
一个搞技术的读书人,妄图分享最干货的技术知识与世界运转的底层逻辑。GZH:TrustZone
展开
-
【学习资料】2000+本书:芯片、驱动、系统、应用、程序、人生、理财等
GPU、CUDA并行程序设计相关电子书 pdf资料原创 2024-01-21 18:34:58 · 606 阅读 · 0 评论 -
ARM:Base Boot Security Requirements 1.2
密码身份验证:为了确保只有授权的用户可以访问和启动基于ARM的产品,Base Boot Security Requirements 1.2强烈要求产品实现密码身份验证机制。除了以上详细描述的方面,Base Boot Security Requirements 1.2还包括其他一些要求和最佳实践,例如使用最新的安全标准和协议、定期进行安全漏洞评估和修复、实施严格的数据备份和恢复策略等。这些要求旨在确保基于ARM的产品具有足够的安全性和稳定性,以保护用户的数据和系统的完整性。非常抱歉我的回答没有满足您的期望。原创 2023-09-02 20:27:53 · 106 阅读 · 0 评论 -
从硬件架构与软件架构看TrustZone-V2.0
在介绍TrustZone前有必要简单回顾下目前的一些安全手段。CPU通过内存映射手段给每个进程营造一个单独的地址空间来隔离多个进程的代 码和数据,通过内核空间和用户空间不同的特权级来隔离操作系统和用户进程的代码和数据。但由于内存中的代码和数据都是明文,容易被同处于内存中的其它应用偷窥,因此出现了扩展的安全模块,应用将加密数据送往安全模块,由安全模块处理完后再返回结果给相应的应用。很多消费电子设备都使用扩展的安全模块来确保数据安全,目前常见的方式有:外部挂接硬件安全模块。转载 2023-09-01 23:43:43 · 196 阅读 · 0 评论 -
Cortex-M和Cortex-A的TrustZone差异
相信关注安全和嵌入式的开发者对TrustZone都不陌生,最近看到有网友在问Cortex-A和Cortex-M的TrustZone之间的差异,我们来简单介绍下。转载 2023-09-01 22:37:48 · 159 阅读 · 0 评论 -
安全引导和加密数据存储
之前我们一起学习了怎么使用OPTEE与TrustZone进行可信应用的开发,今天我们来看看另外一个重要的方面:安全引导和加密数据存储。安全引导确保只有经过身份验证的软件才能在设备上运行,并通过在执行代码之前验证软件的数字签名来实现。为了实现安全引导,需要处理器/SoC支持。根据我们的经验,一些具有现成文档的更安全的引导友好型处理器包括NXP i.MX/QorIQ Layerscape、Xilinx Zynq、Atmel SAMA5、TI Sitara和高通Snapdragon系列。原创 2023-08-24 23:29:00 · 101 阅读 · 0 评论 -
一起来看看什么是TCB!
在计算机系统的世界里,一个系统或组件被“trusted”意味着什么?为什么这很重要?在这篇文章中,我们将概述什么是可信计算基础(TCB),并为如何评估TCB的安全性提供一个框架。我们还将更深入地了解“trusted”在这种情况下的含义。尽管名称上有一些相似之处,但可信计算库(TCB)并不像可信平台模块(TPM)那样指代特定的芯片或规范。系统的可信计算基础TCB是安全体系结构中的一个术语,指的是对建立和维护特定系统的安全性至关重要的所有系统组件。具有安全属性的系统将具有TCB,原创 2023-08-24 09:58:25 · 228 阅读 · 0 评论 -
一文熟悉Trusted Firmware-M
最近有位朋友私信说相看一篇关于TFM的博客,于是今天乘着一个人的七夕节,来满足一下这位朋友,话不多说开始吧。Trusted Firmware是ARM基于自家具有TrustZone功能的处理器所实作的开源程序,其主要目的是让相关厂商可以更快速地将TrustZone构架性的整合到产品当中,此外同时也是厂商要取得ARM PSA certification认证的参考资源。原创 2023-08-22 20:18:10 · 289 阅读 · 1 评论 -
ARM TrustZone技术的学习路线
学习ARM TrustZone技术需要一系列有序的步骤,以下是一个可能的学习路线,以及相关的学习链接和资源。请注意,学习路线可以根据你的先前知识和学习速度进行调整。原创 2023-08-20 16:49:46 · 141 阅读 · 0 评论 -
一文搞定可信执行环境和Arm TrustZone
即使操作系统内核受损,也需要特殊的硬件支持来确保数据安全。在Arm上运行的设备,如智能手机,可以使用TrustZone执行硬件级别的隔离,以确保TEE的安全。Armv8-A配置文件提供可用于集成V6或更高MMU的SoC的TrustZone扩展。受TrustZone保护的代码和数据与恶意外围设备和非TrustZone代码隔离。它可用于构建功能齐全的可信执行环境(TEE),包括运行在S-EL1上的TEE操作系统、与外围设备安全交互的可信驱动程序(TD),甚至运行在S-EL0上的可信应用程序(TA)原创 2023-08-20 12:59:13 · 138 阅读 · 0 评论 -
ATF源码篇(七):docs文件夹-Components组件(6)异常处理框架
通过SCR_EL3寄存器中的各种控制位,Arm体系结构允许异步异常路由到EL3。如:ref:`中断管理框架’文档中所述,根据所选的中断路由模型,TF-A适当地设置SCR_EL3寄存器的FIQ和IRQ位以实现此路由。对于大多数用例,除了为了促进正常和安全世界之间的上下文切换,路由到EL3的FIQ和IRQ不需要在EL3中处理。然而,不断发展的系统和标准要求EL3针对并处理各种异常。例如:从ARMv8.2架构扩展开始,Arm架构中引入了许多RAS功能。原创 2022-11-14 22:29:30 · 543 阅读 · 0 评论 -
ATF官方文档翻译(一):Alternative Boot Flows(可替换的启动流)
翻译原文:https://trustedfirmware-a.readthedocs.io/en/v2.7/design/alt-boot-flows.html这里的翻译不是翻译成中文的翻译,而是希望通过这个翻译对atf所包含的东西有个了解。翻译只是会告诉你这个是个什么?怎么做?......原创 2022-08-31 23:04:34 · 417 阅读 · 0 评论 -
ATF官方文档翻译(十二):ATF固件设计(Firmware Design)- 固件映像包(FIP)
使用固件镜像包(FIP)允许将引导加载程序镜像(以及可能的其他有效负载)打包到单个存档中,TF-A可以从非易失性平台存储中加载该存档。**从FIP加载镜像的驱动程序已添加到存储层**,**并允许从受支持的平台存储读取包**。下面还提供并描述了创建固件**映像**包的工具。原创 2023-01-10 22:21:15 · 533 阅读 · 0 评论 -
ATF原生篇(十七):Components-扩展安全分区管理器(Secure Partition Manager)下
Hafnium支持以下架构扩展以进行安全加强:指针身份验证(FEAT_PAuth):扩展允许通过签署指针值来检测ROP类型攻击使用的锻造指针。Hafnium使用编译器分支保护选项构建,以允许生成用于返回地址的指针身份验证代码(指令指针身份验证)。Hafnium运行时使用APIA键。在启动时间生成一个随机键,并在运行时进入Hafnium时恢复。APIA和其他键(APIB,APDA,APDB,APGA)在VCPU上下文中保存/还原,允许在VMS/SPS中启用指针身份验证。原创 2023-02-07 00:16:36 · 394 阅读 · 0 评论 -
ATF官方文档翻译(二):Authentication Framework & Chain of Trust(身份验证框架和信任链)(2)
接上文翻译。原创 2022-09-12 00:19:16 · 2394 阅读 · 0 评论 -
ATF官方文档翻译(十九):中断管理框架( Interrupt Management Framework)-中断注册
本节详细描述了每个软件组件(参见软件组件)在注册中断类型处理程序期间的作用。原创 2023-02-02 23:32:06 · 140 阅读 · 0 评论 -
ATF原生篇(二一):Components-信任链绑定
设备树允许在“cot”节点的帮助下描述信任链,该节点包含作为子节点的“清单”和“镜像”。“manifest”和“images”节点包含多个子节点(即“certificate”和“image”节点),分别提及证书和镜像的属性。此外,设备树描述了“非易失性计数器”节点,该节点包含多个子节点,这些子节点提到了信任链中使用的所有非易失计数器的属性。这是包含“清单”和“镜像”作为子节点的根节点Manifests nodeDescription: Container of certificate nodes.-原创 2023-05-18 22:48:42 · 157 阅读 · 0 评论 -
ATF源码篇(五):docs文件夹-Components组件(4)debugfs
DebugFS功能主要用于将固件调试数据。这样的组件可以是TFTF测试负载或Linux内核模块。(ATF里面竟然有这个,这样就可以完成整个产品的性能跑分测试)原创 2022-11-13 22:24:19 · 825 阅读 · 0 评论 -
ATF原生篇(十七):Components-EL3安全分区管理器
本文档根据FF-A规范描述了EL3 SPMC的设计。EL3 SPMC提供了参考FF-A符合符合人数的实现,而无需S-EL2虚拟化支持,以帮助采用和迁移到FF-A早期。TF-A中的EL3 SPMC实施:管理单个S-EL1安全分区为FF-A端点之间的通信和内存共享提供了标准协议。为EL3逻辑分区提供支持,以支持从EL3到S-EL1的易于迁移。SECURE_PARTITION_COUNT 支持的安全分区数:必须为1。NS_PARTITION_COUNT支持的NWD分区编号。原创 2023-02-07 23:18:25 · 231 阅读 · 0 评论 -
ATF源码篇(十):docs文件夹-Components组件(9)Measured Boot Driver (MBD)
Measured Boot Driver (MBD)-测量的引导驱动程序(MBD)这名字听着好奇怪啊。本文档描述了事件日志属性的设备树格式。这些属性与特定平台无关,可以从公共代码中查询。原创 2022-11-18 00:08:31 · 335 阅读 · 0 评论 -
ATF官方文档翻译(八):ATF固件设计(Firmware Design)(5)-Secure-EL1有效载荷和调度员
以使其能够将BL32作为二进制文件包含在构建中,或者根据是否指定了BL32构建选项从源代码进行编译。(到这里我的理解SP是对应的TEEOS,在ATF中对于TEEOS的交互由集成在其中的SPD进行分发对接。原创 2023-01-08 23:03:27 · 199 阅读 · 0 评论 -
ATF原生篇(十二):Components-可靠性、可用性和可服务性(RAS)扩展
如上所述,TF-A中的RAS支持支持路由到EL3中的平台错误并处理由此产生的异常。它允许平台定义外部中止处理程序,并注册RAS节点和中断。RAS框架还为访问RAS扩展引入的标准错误记录提供了帮助。当设置为1时,构建选项RAS_EXTENSION包括运行时固件中的RAS;EL3_EXCEPTION_HANDLING和HANDLE_EA_EL3_FIRST_NS也必须设置为1。RAS_TRAP_NS_ERR_REC_ACCESS控制对非安全RAS错误记录寄存器的访问。原创 2023-02-05 21:06:39 · 495 阅读 · 0 评论 -
ATF源码篇(八):docs文件夹-Components组件(7)固件配置框架
固件配置框架(|FCONF|)是平台特定数据的抽象层,允许查询“属性”并检索值,而请求实体不知道使用什么后备存储来保存数据。它用于连接提供平台特定数据的新方法和旧方法。今天,像信任链这样的信息被保存在几个嵌套的平台定义的表中。将来,它可以作为设备blob的一部分提供,以及关于要加载的图像的其余信息。引入此抽象层将使迁移更容易,并将为无法/不想使用设备树的平台保留功能。组成|FCONF|的属性必须存储在C结构中。原创 2022-11-17 23:15:14 · 357 阅读 · 0 评论 -
ATF源码篇(四):docs文件夹-Components组件(1-3)spd&活动监视器&arm-sip服务debugfs设计
TLK是作为安全EL1运行的可信操作系统。它是NVIDIA®可信小内核(TLK)技术的自由开源软件(FOSS)版本,它扩展了随着小内核(LK)的开发而提供的技术。您可以从以下网站下载LK模块化嵌入式抢占式内核,用于Arm、x86和AVR32系统NVIDIA实现了其可信小内核(TLK)技术,该技术被设计为一个自由、开源的可信执行环境(OTE)。•小型、先发制人的内核•支持多线程、IPC和线程调度•增加了TrustZone功能•增加了安全存储•根据MIT/FreeBSD许可•用户模式。原创 2022-11-13 21:56:23 · 1075 阅读 · 0 评论 -
ATF官方文档翻译(二二):PSCI功率域树结构(PSCI Power Domain Tree Structure)
PSCI功率域树结构。原创 2023-02-03 20:35:12 · 255 阅读 · 0 评论 -
ATF原生篇(十三):Components-ROM中的库
本文档概述了Trusted Firmware-A(TF-A)中的“ROM库”实现。原创 2023-02-06 22:59:48 · 77 阅读 · 0 评论 -
ATF官方文档翻译(二五):构建支持Trusted Board Boot的FIP映像
如果使用OpenSSL的自定义构建,请相应地设置OpenSSL_DIR变量,使其指向OpenSSL安装路径,如构建选项中所述。include/drivers/auth/mbedtls/mbedtls_config.h包含构建mbed TLS源所需的配置选项。此构建的结果将是bl1.bin、fip.bin和fwu_fip.bin二进制文件。此构建的结果将是bl1.bin和fip.bin二进制文件。构建和安装非安全和SCP FWU映像(NS_BL1U、NS_BL2U和SCP_BL2U)不属于本文档的范围。原创 2023-02-05 13:45:58 · 317 阅读 · 0 评论 -
构建ATF所需要的环境与工具链配置
【代码】构建ATF所需要的环境与工具链配置。原创 2023-03-07 23:57:41 · 119 阅读 · 0 评论 -
互斥琐在ATF中的相关使用场景
如果在“USE_COHERENT_MEM=0”时未定义此常数,则链接器计算“bakery_lock”输入部分的大小,将其与最近的“CACHE_WRITEBACK_GRANULE”对齐,将其乘以“PLATFORM_CORE_COUNT”,并将结果存储在链接器符号中。这个常量防止了平台依赖链接器,并为访问每cpu烘焙锁定信息提供了更有效的机制。如果定义了此常量,并且其值不等于链接器计算的值,则会引发链接时间断言。如果常量的值未与缓存线边界对齐,则会引发编译时断言。原创 2023-03-22 11:05:28 · 120 阅读 · 0 评论 -
ATF官方文档翻译(七):ATF固件设计(Firmware Design)(4)-电源状态协调界面
这里来讲讲电源管理,这部分对于CPU核来说是一个很关键的东西,因为将其实现在EL3。学习这一部分我建议是和CPU的多核启动联系起来想想,还有S3和S4阶段想想。原创 2023-01-08 22:19:33 · 87 阅读 · 0 评论 -
ATF官方文档翻译(十七):中断管理框架( Interrupt Management Framework)-概念
该框架负责管理路由到EL3的中断。它还允许EL3软件配置中断路由行为。其主要目标是执行以下两项要求。1、当执行处于非安全状态(正常世界)时,应该可以将安全软件处理的中断(安全中断)路由到EL3。然后,根据软件配置和GIC实现,框架应负责将中断控制移交给EL3或Secure-EL1中的软件。这一要求。2、当执行处于安全世界中且异常级别低于EL3时,应该可以将非安全软件(非安全中断)处理的中断路由到正常世界中最后执行的异常级别。。。(安全中断和非安全中断是不矛盾的。我猜测的这个意思。原创 2023-02-02 23:08:46 · 196 阅读 · 0 评论 -
ATF官方文档翻译(二一):中断管理框架( Interrupt Management Framework)-其他注意事项
TSP_YIELD_SMC_FID是任何生成SMC函数标识符,SMC()函数使用所需参数调用SMC调用。如果让步SMC被抢占,直到使用TSP_FID_RESUME SMC恢复并完成,当前TSPD通过返回SMC_UNK错误防止任何其他SMC调用重新进入TSP。对安全有效负载的让步SMC调用可以被非安全中断抢占,并且执行可以返回到非安全世界来处理中断(有关让步SMC的详细信息,请参阅SMC调用约定)。在这种情况下,SMC调用尚未完成其执行,执行必须返回到安全有效负载以恢复被抢占的SMC调用。原创 2023-02-02 23:48:50 · 89 阅读 · 0 评论 -
ATF原生篇(十五):Components-扩展安全分区管理器(Secure Partition Manager)上
1、S-EL2 SPMC基于FF-A规范[1],支持安全世界中的虚拟化,管理多个S-EL1或S-EL0分区。2、EL3 SPMC基于FF-A规范,在安全世界中管理单个S-EL1分区而不进行虚拟化。3、EL3 SPM基于MM规范,传统实现管理单个S-EL0分区[2]。这些实现在其各自的软件架构中有所不同,在构建时只能选择一种。1、描述了项目1中的实现。当SPMC位于S-EL2时。2、不是一个体系结构规范,它可能会对规范中定义的实现部分提供假设。原创 2023-02-06 23:00:41 · 290 阅读 · 1 评论 -
ATF原生篇(十六):Components-扩展安全分区管理器(Secure Partition Manager)中
在Hafnium参考实现中,特定代码部分仅与安全世界相关。这些部分被隔离在特定于体系结构的文件中和/或被SECURE_WORLD宏包围。原创 2023-02-07 00:04:12 · 354 阅读 · 0 评论 -
ATF的构建选项
The TF-A build system supports the following build options. Unless mentionedotherwise, these options are expected to be specified at the build commandline and are not to be modified in any component makefiles. Note that thebuild system doesn't track dep原创 2023-03-07 23:42:20 · 178 阅读 · 0 评论 -
ATF原生篇(二十):Components-翻译(XLAT)表库
本文档描述了Trusted Firmware-A(TF-A)使用的翻译表库(版本2)的设计。原创 2023-05-17 22:39:54 · 204 阅读 · 0 评论 -
ATF源码篇(二):docs文件夹-总览
我当时在看这个ATF的时候,我就说为什么这个玩意没有对应的源码手册。然后在看一些SPD、TSP这些也不知道到底是什么场景。最后在无聊的瞎翻中在docs中找到了,所以在这里就先对整个docs文件进行一个了解。知道了这个文件以后,在以后遇到问题,再返回来查,加深映像。这个文档还是有点多,那么通过这个文档你可以知道什么呢?这个文档里面都有些什么?我们先来个宏观的认识。ATF源码参考文档中文版。原创 2022-11-10 20:55:48 · 894 阅读 · 0 评论 -
ATF官方文档翻译(二):Authentication Framework & Chain of Trust(身份验证框架和信任链)(3)
接上文。原创 2022-09-12 16:24:28 · 2721 阅读 · 0 评论 -
ATF官方文档翻译(十一):ATF固件设计(Firmware Design)-BL图像的内存布局
每个引导程序镜像可以分为两部分:+ •镜像的静态内容。这些数据实际上**存储在磁盘上的二进制文件中**。在ELF术语中,它们被称为PROGBITS部分;+ •镜像的运行时内容。这些数据不占用磁盘上二进制文件中的任何空间。ELF二进制文件只包含一些元数据,指示这些数据将在运行时存储在何处,相应的部分需要在运行时分配和初始化。在ELF术语中,它们被称为NOBITS部分。(运行时才会产生。)所有PROBITS节在镜像的开头分组在一起,然后是所有NOBITS节。这对于所有TF-A映像都是正确的,原创 2023-01-09 23:52:00 · 374 阅读 · 0 评论 -
ATF官方文档翻译(四):ATF固件设计(Firmware Design)(1)-冷启动
Trusted Firmware-A(TF-A)实现了Trusted Board Boot Requirements(TBBR)平台设计的一个子集Arm参考平台的文档(PDD)。TBB序列在平台通电时开始,并运行到将控制权移交给DRAM中正常运行的固件的阶段。这是**冷启动路径**。TF-A还将电源状态协调接口PDD实现为运行时服务。PSCI是实现电源管理用例(例如,辅助CPU引导、热插拔和空闲)的从普通软件到固件的接口。普通世界软件可以通过Arm SMC(安全监视器调用)指令访问TF-A运行时服原创 2023-01-03 23:53:29 · 454 阅读 · 0 评论 -
ATF官方文档翻译(二十):中断管理框架( Interrupt Management Framework)-中断处理
本节详细描述了每个软件组件(参见软件组件一节)在处理特定类型中断时的作用。原创 2023-02-02 23:46:58 · 282 阅读 · 0 评论