![](https://img-blog.csdnimg.cn/9cd2903a44174055852a74251890e3bb.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARM-TEE-Android
文章平均质量分 84
订阅本专栏可查看以下专栏内容:
《ARMv8/ARMv9架构入门到精通》、
《TEE从入门到精通》、
《Android13安全架构精选》
优惠券已抵扣
余额抵扣
还需支付
¥199.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
代码改变世界ctw
ARMv8/ARMv9/TEE/安全/芯片
展开
-
TA都支持哪些密码学算法?TEE OS支持哪些密码学算法-Trustzone/TEE百问百答
实际上,GP(GlobalPlatform)规范中明确列出了TEE OS必须支持的算法和可选支持的算法。一般来说,TA必须支持的算法和可选的算法在各大厂商的实现中都支持。所以,如果你想知道TA支持哪些算法,可以查看你的SDK中的相关头文件,列出支持的算法。:GP规范规定了TA可以暴露给应用的接口,这些接口通常包括GP标准中的算法。不过,有些厂商可能会提供更多的接口,超出GP规范的范围。:GP规范明确规定了哪些算法是必须支持的,哪些是可选支持的。你可以查看GP API中的相关文档,了解具体的算法列表。原创 2024-07-09 09:42:29 · 85 阅读 · 0 评论 -
TEE共享内存的介绍-共享内存的限制是什么? TA堆内存/栈内存有限制吗?Trustzone/TEE
这是在编译时设置的,因此,TA的内存需求越大,所配置的内存也就越大。例如,当TA被加载到安全内存时,系统会自动为其分配配置好的内存,这意味着无论TA是否使用这些内存,系统都会预留相应的内存空间。例如,在OPTE中,TA的虚拟地址空间大约为几十兆字节,如果配置的内存超过了这个限制,系统会报错并且无法运行。例如,如果TA需要2兆字节的栈和4兆字节的堆,但初始配置为2兆字节的栈和1兆字节的堆。最后,TA的堆内存和栈内存是在什么时候分配的呢?在OPTEE中,TA的堆内存和栈内存是在加载到安全内存时分配的。原创 2024-07-09 09:37:54 · 125 阅读 · 0 评论 -
TEE开发Secure driver介绍-TEE安全驱动/trustzone
但是,PTA可以看作是一个伪TA,通过TA的逻辑接口,TA可以调用PTA,而PTA不调用GP API,而是调用内部的API,这就可以直接调用secure driver。对于一些商用的tee,他们设计的模式是TA和secure driver的开发是独立的,拿到SDK就能开发TA和secure driver,因为它是微内核,secure driver可以运行在EL0,而不需要修改Tee OS。TA来调用secure driver时会编译出两个东西:一个是真正的secure driver,它以TA的形式存在;原创 2024-07-09 09:32:43 · 72 阅读 · 0 评论 -
TEE RPMB的简介以及开发流程
在TEE_ CreatePersistentObject、TEE_ReadObject Data和CloseObject等标准GP存储API中,我们可以看到传递了一个TEE_Storage_Private的标志,这表示数据存储在标准文件系统中。TA调用RPMB API时,这些API会调用secure Driver,而secure Driver最终会调用TEE OS来完成RPMB的读写操作。在storage模型中,当CA调用TA时,TA只要调用TEE的存储API,数据就会自动存储到RPMB中。原创 2024-07-06 23:29:03 · 44 阅读 · 0 评论 -
集成一家TEE都需要干哪些活?TEE厂/SOC厂/OEM各方职责?
对于硬件要求,首先在大系统的软件架构中必须有ATF的支持,这意味着芯片中的软件必须包含atf。你需要将其放到某个位置,并且要在Linux内核中集成tee driver,还要在用户空间中集成libteec.so及tee-supplicant。如果出厂软件不支持BL32,则需要手动将BL32集成进去,这就需要硬件厂商的支持来划分磁盘分区,并确保BL2源码可以修改以加载BL32到安全内存中。在实际操作中,Tee厂商和SoC厂商共同完成大部分集成工作,而OEM厂商只需要配置并启用相应功能,开发CA和TA。原创 2024-07-06 23:20:47 · 165 阅读 · 0 评论 -
TA都可以使用哪些存储接口?分别都存放在了哪里?
有些厂商利用RPMB-FS机制,反向调用存储接口后具体存储位置由系统集成工程师配置。当然,集成工程师也可能误配置,使得存储位置在恢复出厂设置时会丢失数据。因此,根据需求,存储位置可以配置为丢失或不丢失的数据分区。这是一个数据分区,断电不会丢失数据,但在刷机或恢复出厂设置时数据会丢失。而RPMB-FS存储在RPMB中,其特点是在断电和恢复出厂设置后数据都不会丢失。接下来我们探讨TA可以使用哪些存储接口及其存储。因此,TA的具体存储位置并不完全由TEE OS厂商决定,而是由系统集成商根据需求和配置来决定。原创 2024-07-06 23:35:58 · 44 阅读 · 0 评论 -
Trusty qemu + android环境搭建详细步骤
注意:ATF 会先停用控制台,然后再返回测试运行程序。如需在本地停用此设置,请注释掉 external/arm-trusted-firmware/plat/common/aarch64/plat_common.c 内 bl31_plat_runtime_setup 中的所有代码。原创 2024-06-13 11:04:22 · 1472 阅读 · 0 评论 -
MBedTLS v3.6.0 长期支持 (LTS) 版本
Mbed TLS 项目已于 2024 年 3 月发布了 3.6.0 版本。该版本是一个长期支持 (LTS) 版本,将在未来 3 年内通过错误和安全修复进行维护。该版本包括几个新的功能增强,例如改进的多线程操作、TLS1.3 早期数据支持、AES 的 Armv8-A 加密扩展、Thumb 的 SHA-256(T32)等。从 Mbed TLS 2.28 长期支持(LTS)分支发布的 Mbed TLS 2.28.8 包含最新的错误修复和安全修复。请参阅发行说明以获取发行版中的完整更改列表。原创 2024-06-06 03:10:08 · 95 阅读 · 0 评论 -
optee v4.2.0版本更新
可信固件 OP-TEE v4.2.0于 2024 年 4 月 12 日发布。此版本是次要版本更新,但仍包含相当多的修复,总共合并了 145 个拉取请求,包括 optee_os、optee_client、optee_test 和 build gits。自今年早些时候的上一个版本以来,这 145 个拉取请求增加了 320 个新提交。更新包括增加了几个新平台、对核心进行了各种更新以及对 OP-TEE OS 本身的驱动程序。除此之外,我们还对 CI 作业和 OP-TEE 附带的可信应用程序进行了一些改进。原创 2024-06-06 03:01:45 · 78 阅读 · 0 评论 -
Cortex-X925的特性简介
在具有不同类型核心的系统中,这种连接配置也会使用,其中 Cortex-X925 核心作为高性能核心。你可以在独立的 DynamIQ 配置中使用 Cortex-X925 核,其中同构的 DSU-120 DynamIQ 集群包括一个或多个 Cortex-X925 核心。你也可以在异构集群中将 Cortex-X925 核心用作高性能核心。Cortex-X925 核是一款高性能且低功耗的产品,实现了 Armv9.2-A 架构。Armv9.2-A 架构扩展了 Armv8-A 架构,完全支持Armv8.7-A 版本。原创 2024-05-30 15:04:33 · 122 阅读 · 0 评论 -
什么是 DICE 架构?
DICE 代表设备标识符组合引擎,它是由可信计算组织 (TCG : Trusted Computing Group)创建的安全标准,该组织多年来一直致力于解决安全问题。TCG 宣布成立 DICE 架构或 DICE 架构工作组,以满足提高物联网 (IoT) 安全性的需求,从而针对 MCU 和片上系统 (SoC) 等产品。DICE 架构是一种简单而新颖的安全方法,不会增加芯片要求,并且可以在制造过程中在安全产品的硬件中实现。原创 2024-05-06 19:45:29 · 179 阅读 · 1 评论 -
Cache的50问,您能回答上几个
MMU关闭时cache的缓存策略是怎样的?2、阐述一下mmu和cache有哪些关系,有哪些依赖3、以下术语分别是什么含义:read allocation、write allocation、no-allocation、write-back、write-through、transient和Transient、outer shareable、inner shareable、shareablilty4、Non-cacheable、device memory之间的区别是什么?5、Non-cacheable、d原创 2024-04-24 09:53:42 · 143 阅读 · 0 评论 -
震撼!新的Armv9虚拟内存架构:128位系统寄存器、128位页表项、56位物理地址
在很早很早之前,就听说了128位的page descriptor,即128位的页表项。当时就很好奇,那MMU构建页表的代码岂不是都得重写?好多原理机制都要变?在Armv9中,在实现了FEAT_D128 feature的版本中,MMU支持128位的页表描述符,也就意味着,每一个页表项都是128位的,页表基地址寄存器也是128位的了。以下为大家摘出了细节。原创 2024-04-17 09:57:03 · 157 阅读 · 0 评论 -
全相联的cache、多路组相连的cache、直接相连的cache的优缺点分别是什么?
全相联、多路组相连和直接相联是三种常见的缓存映射方式,它们各自具有一些优点和缺点。原创 2024-03-16 23:23:13 · 320 阅读 · 0 评论 -
Android Keymint Remote Provisioning HAL
设计 HAL 以支持非对称密钥证书的无线配置。HAL 必须与 Keystore(和其他服务)有效交互并保护设备隐私和安全。请注意,此 API 最初是为 KeyMint 设计的,目的是使其可用于需要证书配置的其他 HAL。在本文档中,我们将引用 Keystore 和 KeyMint(以前称为 Keymaster)组件,但这只是为了具体和方便;这些标签可以分别替换为需要提供证书的任何系统和安全区域组件的名称。原创 2023-12-26 15:09:22 · 1055 阅读 · 0 评论 -
Trustzone/TEE/安全 面试100问-目录
Trustzone/tee/安全面试100问原创 2023-11-22 08:59:26 · 1514 阅读 · 0 评论 -
同步异常、External abort、Serror、prefetch abort、data abort的区别
所以当出现instruction abort、data abort时,那么一定是同步异常,可能是internal abort,也可能是external abort,但终归是同步异常。比较绕、比较难懂,咱们换一个说法:按照预期产生的异常称之precise,反之imprecise。Serror(也称System Error),是异步异常的一种,一般是来自。产生异常的那个位置是确定的,即每次执行到“那个指令处”就会产生。像未定义指令异常,它也是同步异常。确定的,即不知道执行到哪里,就产生了异常。原创 2023-11-21 02:15:21 · 293 阅读 · 0 评论 -
ARM CoreLink CCN 互连总线介绍
CCN-512 与 CCN-508 的 24 个 I/O 一致加速器接口相匹配,并且还使用相同的四通道 DMC-520 内存控制器。ARM 旨在支持数据中心类型环境中的处理器密集型 SoC,现在提供了一种将 CCN-508 的 8 个相干 CPU 集群扩展到该型号上的 12 个,或从最多 32 个内核扩展到 48 个的方法。ARM 保持了与 CCN-502 高达 16 核 CPU 的兼容性,但将 I/O 接口的数量减少了一半,达到 9 个,也许对于面积和功耗来说最重要的是,能够完全删除 L3 缓存。原创 2023-11-19 12:52:00 · 841 阅读 · 0 评论 -
optee4.0.0 qemu_v8的环境搭建篇(ubuntu20.10)
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈。原创 2023-11-18 19:10:13 · 293 阅读 · 0 评论 -
Arm PMU详解
本文档描述了在Neoverse N1中实现的不同性能监视单元(PMU)事件的行为。Neoverse N1具有六个可编程的32位计数器(计数器0-5),每个独立计数器都可以被编程为在本文档描述的PMU事件之一发生时进行计数。2.1 范围本文档提供了对Neoverse N1 PMU事件的高层描述。其中包含对体系结构行为和Neoverse N1微体系结构行为的参考,以澄清这些事件的描述。如需更完整的Arm体系结构描述,请参考Arm®体系结构参考手册Armv8-A。原创 2023-11-16 12:47:08 · 248 阅读 · 0 评论 -
MMU之PBHA(page based hardware attributes)的介绍
基于页面的硬件属性 (PBHA:page based hardware attributes) 是一项可选的、由实现定义的功能。它允许软件在转换表中设置最多四位,然后通过事务通过内存系统传播这些位,并可在系统中用于控制系统组件。这些位的含义特定于系统设计。有关如何设置和启用转换表中的 PBHA 位的信息,请参阅《Arm® Architecture Reference Manual Armv8, for A-profile architecture》。禁用时,在总线上传播的 PBHA 值为 0。原创 2023-11-14 17:15:58 · 576 阅读 · 0 评论 -
使用 Armv8-A CPU 中的性能监控单元 (PMU) 配置固件
Armv8-A CPU 中的性能监控单元 (PMU) 提供硬件级性能监控和分析功能。PMU 通过计数器收集硬件事件计数。计数器包括周期计数器和事件计数器。您可以配置:每个事件计数器对指定的硬件事件进行计数。每个计数器从各种 CPU 异常级别和状态的工作负载收集硬件事件。perf 等工具使用 PMU 来分析在 Armv8-A CPU 上运行的 Linux 应用程序。然而,没有通用的方法来使用 PMU 来分析固件,因为它运行在裸机环境中。原创 2023-11-14 11:47:14 · 348 阅读 · 0 评论 -
L1-I Cache miss了时会去L1-D中再lookup一下
然后你强制把RO改成RW,然后修改这块代码段的内容。这是这块数据 会缓存到L1-D, 然后PC执行到这块附近时,可能也会缓存到L1-I。此时L1D、L1-I都是最新指令。),找不到时,即使refill也应该refill到icache,符合逻辑。那,如果发生了自修改代码后,新代码在L1-D中。可能L1-D和L1-I 都存在了, L1-I hit了,也不会去lookup L1-D。1、先说是L1-I Cache miss了,会在L1-D中lookup。2、又说,lookup不会导致L1-D refill。原创 2023-11-06 09:58:48 · 91 阅读 · 0 评论 -
MPAM简介
这些少量PARTID由虚拟机监控程序的PARTID空间管理器预先分配,并存储在MPAMVPMn_EL2寄存器中,将虚拟PARTID映射到虚拟机监控程序预先分配的“真实”(我们称之为“物理”)PARTID。分区号(PARTID)引用分区ID空间内的特定分区。在由多个虚拟机(VM)、操作系统(OS)和应用程序共享的内存系统中,每个软件环境可用的资源可能会有所不同,这取决于其他同时运行的程序。在这种情况下,我们预期分配给VM或应用程序的MPAMn_ELx寄存器中指定的唯一分区ID在运行软件的所有PE上是一致的。原创 2023-10-12 08:55:25 · 685 阅读 · 0 评论 -
2023 年 Arm A-Profile 架构发展
随着人工智能 (AI) 的兴起和安全威胁的加剧,计算需求不断发展,作为世界设备核心的基础计算架构也必须不断发展。这就是为什么我们的工程团队向普遍存在的 Arm 架构添加新功能和技术,然后软件团队确保软件尽可能无缝地适应这些未来的功能和技术。原创 2023-10-12 08:40:08 · 659 阅读 · 0 评论 -
cache知识点复习
这两个缓存的主要目的是提高虚拟内存系统的性能,减少访问主存的次数。它们在不同的处理器和操作系统中可能会有不同的名称和实现方式,但核心思想是相似的。PTW Cache 存储了最近使用的虚拟页表项,以避免频繁访问主存中的页表。如果处理器内部有 PTE Cache,它可以存储最近访问的页表项,以减少访问主存的次数,从而提高访问速度。PTW Cache 的大小和组织方式可以因不同的处理器架构和操作系统而异,但其主要目的是加速虚拟地址到物理地址的转换。它用于存储最近访问的虚拟页表项的副本,以提高虚拟内存查找的速度。原创 2023-10-05 12:54:23 · 247 阅读 · 1 评论 -
知识点19:PTW Cache 和 PTE cache
这两个缓存的主要目的是提高虚拟内存系统的性能,减少访问主存的次数。它们在不同的处理器和操作系统中可能会有不同的名称和实现方式,但核心思想是相似的。PTW Cache 存储了最近使用的虚拟页表项,以避免频繁访问主存中的页表。如果处理器内部有 PTE Cache,它可以存储最近访问的页表项,以减少访问主存的次数,从而提高访问速度。PTW Cache 的大小和组织方式可以因不同的处理器架构和操作系统而异,但其主要目的是加速虚拟地址到物理地址的转换。它用于存储最近访问的虚拟页表项的副本,以提高虚拟内存查找的速度。原创 2023-10-05 12:34:32 · 264 阅读 · 1 评论 -
知识点18:VIPT存在的同名/歧义问题
那么此种问题是如何解决的呢,其实查看cache tag里都有啥,就能知道答案了。在cache tag中缓存的物理地址,永远都是pysical[n : 12], 即永远从物理地址的BIT12开始缓存。对于一个way是16KB的cache,index为[13:0]?如何保证VA[13:0]=PA[13:0]?选用16KB或64KB的页面即可,但是选哪一个Granue Size不是你能保证的,是操作系统的选择。虚拟地址和物理地址的映射关系。原创 2023-10-05 12:33:00 · 184 阅读 · 0 评论 -
知识点17:关闭MMU时,cache的缓存策略是怎样的?
在学习MMU章节时,我们发现在页表的entry中,BIT[4:2]指向了MAIR寄存器,该寄存器描述了内存属性,其实就是cache的缓存策略属性(inner\outer\shareable\cacheable)。也就是页表中的每一个entry都指向了一个这样的Attr。那么我如果把MMU disable了呢?就没有页表的事了,那么此时缓存的策略是怎样的呢?👉👉👉 个人博客笔记导读目录(全部) 👈👈👈。原创 2023-10-05 12:27:37 · 217 阅读 · 0 评论 -
知识点16:big.LITTLE 和 dynamIQ架构的cache
到了DynamIQ 架构中,大核和小核都是一个DSU cluster中,一个DSU cluster最多可以支持8个core。如果你的系统是8个core,那么一个DSU就够了,那么系统中也就只有一个ACE或CHI Master,大核和小核之间的一致性,都在DSU cluster内完成了。在big.LITTLE 架构中,大核小核在不同的cluster中,做为两个不同的ACE或CHI Master,连接到缓存一致性总线上(CCI或CMN)。原创 2023-10-05 12:22:55 · 176 阅读 · 0 评论 -
知识点15:cache和TCM
在Cortex-M架构中,TCM(Tightly Coupled Memory)和缓存是两种不同的内存技术,它们用于优化处理器的性能和存储器访问。这样可以充分利用TCM的快速访问速度,同时利用缓存来减少对主存的访问,从而实现更好的性能和响应时间。TCM用于存储程序指令(ITCM)和数据(DTCM),可以通过直接加载和存储指令和数据来提高访问速度,减少存储器访问延迟,特别是在处理嵌入式系统中的关键代码和数据时非常有用。缓存可以存储从主存(或其他较慢的存储器)中读取的数据,以减少处理器核心访问主存的次数。原创 2023-10-05 12:14:17 · 315 阅读 · 0 评论 -
知识点14:cache的伪共享以及如何避免
伪共享(False Sharing)是一种多线程并发编程中的性能问题,通常与CPU高速缓存有关。它发生在多个线程同时访问不同但位于相同缓存行(Cache Line)的变量或数据时,即使这些变量之间实际上没有直接的数据依赖关系。伪共享会导致额外的缓存同步开销和性能下降,因为多个线程争用相同的缓存行。以下是如何避免伪共享的一些方法:原创 2023-10-05 12:11:40 · 99 阅读 · 0 评论 -
知识点13:cache的查询原理
先使用index去查询cache,然后再比较TAG,比较TAG之后再检查valid标志位。但是这里要注意:TAG包含了不仅仅是物理地址,还有很多其它的东西,如NS比特位等,这些都是在比较TAG的时候完成。原创 2023-10-05 12:07:10 · 150 阅读 · 0 评论 -
知识点12:cache TAG里都有什么?
我们知道在cacheline是由: TAG + DATA + valid bit + dirty bit组成的。DATA一般都是64bytes。那么TAG 是什么呢?TAG里都有什么呢?我们以cortex-X4为例。原创 2023-10-05 11:45:11 · 339 阅读 · 0 评论 -
知识点18:VIVT、VIPT、PIPT的介绍
(1)、VIVT、VIPT、PIPT 这些是硬件特性决定的,在架构设计时就已经决定了;(2)、在同一架构中,即存在VIPT,也存在PIPT,如L1 Cache一般都是VIPT,L2、L3一般都是PIPT cache。(3)、早已不存在VIVT的cache了,如果非要探讨VIVT,那么要追溯到1998年的ARM9架构。原创 2023-10-05 11:32:40 · 371 阅读 · 0 评论 -
知识点11:cache miss、hit概念
Cache Miss(缓存未命中):Cache Miss指的是当计算机系统需要访问内存中的某个数据或指令时,却发现这个数据或指令不在高速缓存中的情况。在Cache Miss发生时,系统必须从主存或其他较慢的存储层次中加载所需的数据或指令,并将其放入缓存中,以备将来的访问。Cache Miss通常比Cache Hit慢,因为需要从较慢的存储层次中加载数据。Cache Hit(缓存命中):Cache Hit指的是当计算机系统需要访问内存中的某个数据或指令时,在高速缓存中找到了所需的数据或指令的情况。原创 2023-10-05 11:10:42 · 297 阅读 · 0 评论 -
知识点10:cache的缓存策略、共享策略、替换策略、分配策略
cache的缓存策略、、共享策略、替换策略、分配策略 ---- 沃曹搞蒙了,哪来的这么多策略。原创 2023-10-05 11:05:51 · 150 阅读 · 0 评论 -
知识点9:Cache的组织形式
在一个core中一个架构中一个SOC中,所有cache的组织形式并不是都一样的。即使L1 D-cache和L1 I-cache的组织形式,也都可能不是一样的的。具体的组织形式是怎样的,需要查询你的core trm手册。index Set Way的概念—cache Tag、Cache data、cache line和entry的概念。cache的组织形式(index, way, set)全相连/直接相连/四路组相连—每一种的优缺点?最理想情况下,是搞成全相连的cache。真实情况下是怎样的?原创 2023-10-05 10:24:46 · 73 阅读 · 0 评论 -
知识点8:cache存放在哪里? L1/L2/L3 cache分别存放在哪里?
如果是早些年的big.LITTLE架构,那么一般来说,L1在core中,L2在cluster中,L3在cluster之外,多个cluster共享L3 cache。而到了近些年的dynamIQ DSU架构,L1和L2都在core中,L3在cluster中。cache一般是在sram中。那么L1、L2、L3在架构中的哪个位置中呢?原创 2023-10-05 10:20:20 · 253 阅读 · 0 评论 -
知识点7:Arm架构cache发展的趋势
这些趋势将有助于推动ARM架构在各种应用领域的发展。能效优化:随着对节能的需求增加,未来的ARM处理器可能会更注重优化缓存的功耗和性能平衡,以在不降低性能的情况下降低功耗。集成领域特定加速器:ARM处理器可能会集成领域特定加速器,用于特定类型的工作负载,这可能会影响缓存的设计和性能优化。缓存层级的可配置性:未来的ARM架构可能会提供更多的灵活性,允许系统设计者根据特定应用需求配置缓存的层级和大小。支持新的存储技术:未来ARM架构可能会支持新的存储技术,如持久性内存(例如NVM),以扩展缓存的能力和性能。原创 2023-10-05 10:15:28 · 97 阅读 · 0 评论