
TEE从入门到精通

文章平均质量分 78
作者现就职全球TEE TOP1厂,11年SOC芯片底层、安全开发经验,多家商用TEE开发经验、开源Optee开发经验。擅长Trustzone/TEE/安全产品的设计和开发。全网最早科普TEE,输出高质量、体系化文章。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Arm精选
专注Arm架构、TEE安全课程;
Armv8/Armv9、Trustzone/TEE、Secureboot
真正的ARM架构、真正的ARM架构、真正的ARM架构
技能倍数增长、升职加薪、年薪翻翻
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【置顶】TEE从入门到精通-[目录]
此专栏讲解包含不限于optee、商用TEE、常规的安全业务设计。但主要基于optee最新代码,深度讲解和剖析各项原理和机制...原创 2022-05-06 08:35:45 · 5778 阅读 · 2 评论 -
《Trustzone/TEE/安全从入门到精通-标准版》
1、讲解ARM最新硬件架构(ARM Core、ARMArchitecture)、s0c架构 2、讲解最新的Trustzone安全架构、TEE架构Secureboot等 3、讲解软件组件:TF-A(ATF)、optee_os、LinuxKernel、CA/TA应用程序等,及其交互模型、设计模型 4、多系统交互代码导读、安全论证实践、CA/TA示例实践、安全业务设计实践 5、我们学习的是全部硬件、全部系统,软硬结合,或者是大系统的软硬件融原创 2025-01-25 12:15:29 · 685 阅读 · 2 评论 -
PKCS#11 API函数的介绍
用于计算数据的哈希值。初始化摘要操作,并计算数据的消息摘要。原创 2024-12-03 13:45:45 · 477 阅读 · 0 评论 -
optee技术简介
OP-TEE(Open Portable Trusted Execution Environment)是一种开源的可信执行环境(TEE),专为ARM TrustZone架构设计。TEE是一种独立的执行环境,运行在主操作系统之外,为敏感任务提供安全的计算空间,如加密、身份验证、密钥管理等。原创 2024-10-11 12:23:32 · 884 阅读 · 0 评论 -
多CA多TA迸发调用引发的思考
如果是同一个TA,在不同的instance中,同时调用相同的存储,会怎样?如果是两个TA,同时调用存储,如何互斥的呢?需要用户自己加锁吗?如果是一个VM中的两个CA迸发的同时调用同一个TA会怎样?如果是两个VM中的两个CA同时调用同一个TA会怎样?原创 2024-10-10 11:23:34 · 241 阅读 · 0 评论 -
嵌入式安全:Provencore Secure os
借助 ProvenCore,ProvenRun 为市场提供了一种解决方案,与任何现有的联网和移动设备解决方案相比,该解决方案的安全级别明显更高,且安全成本更低。ProvenRun 的使命是帮助客户解决与大规模部署联网设备和物联网相关的安全挑战,通过提供具有成本效益的现成软件解决方案来大幅提高联网系统的安全级别,从而保护它们免受远程网络攻击。在微控制器或微处理器等复杂硬件上执行敏感的安全服务,并且该操作系统必须是安全的,因为它是设备可信计算基的一部分。即使使用其他安全技术(例如安全元件或虚拟机管理程序),原创 2024-08-05 11:20:48 · 325 阅读 · 0 评论 -
ProvenCore经过形式化验证的TEE OS,最高级别的安全认证CC EAL 7
它是物联网安全的绝对最佳基础。航空航天和国防、汽车和半导体行业的 OEM 和一级供应商可以更快地开发和认证应用程序,预测未来的监管要求,并降低生命周期维护成本。ProvenRun 开发了 ProvenCore,这是一款经过正式验证的超安全 OS/TEE,可应对这一挑战。对于能够以经济高效的方式开发许多领域(汽车、铁路、航空、能源、工业、医疗等)的安全设计连接设备而言,这是一个重要的里程碑。由于安全功能的正确性取决于这些高级抽象的正确性,因此实现这些功能的操作系统应该没有可利用的漏洞。原创 2024-08-05 11:17:18 · 162 阅读 · 0 评论 -
23-optee对ARM安全扩展的支持
分支目标识别 (BTI) 是一个 ARMv8.5 扩展,它提供 控制间接分支及其目标周围的流动完整性 (CFI),从而有助于 以限制 JOP(面向跳跃编程)攻击。通过此扩展,ARM8.5-A 引入了分支目标指令 (BTI)。BTI 也称为着陆垫。可以对处理器进行配置,以便 间接分支(BR 和 BLR)仅允许目标着陆台指令。如果间接分支的目标不是登陆垫,则分支目标异常 生成。原创 2024-07-17 19:58:12 · 131 阅读 · 0 评论 -
22-optee对SPMC分区架构的支持
本文档介绍OP-TEE的SPMC(S-EL1)实现。有关 SPMC 的更多信息,请参见 FF-A 规范。在中找到。原创 2024-07-17 19:55:17 · 162 阅读 · 0 评论 -
21-optee对虚拟化的支持-- Virtualization
OP-TEE具有实验性虚拟化支持。这是当一个 OP-TEE 实例可以从多个虚拟机运行 TA。OP-TEE 可隔离所有 与 VM 相关的状态,因此一个 VM 不能以任何方式影响另一个 VM。启用虚拟化支持后,OP-TEE 将依赖于虚拟机管理程序,因为 只有虚拟机监控程序知道哪个虚拟机正在调用 OP-TEE。此外,自然而然地 虚拟机监控程序应通知 OP-TEE 有关虚拟机的创建和销毁。原创 2024-07-17 19:51:15 · 136 阅读 · 0 评论 -
20-optee详解之Trusted Applications
有两种方法可以实现可信应用程序 (TA),伪 TA 和用户 模式 TA。用户模式 TA 是全功能的可信应用程序,由TEE 规范,这些只是这些 人们在说“受信任的应用程序”时指的是大多数 案例 这是编写和使用的首选 TA 类型。原创 2024-07-17 19:46:48 · 178 阅读 · 0 评论 -
19-optee内核-子密钥Subkeys介绍
子项由两个文件组成,一个是 .pem 文件中的私钥对,另一个是 .bin文件中的签名公钥。由于 UUID 是 受此限制,还有一种特殊的子项,称为标识 子项,它使用与它应该签名的 TA 相同的 UUID。UUIDv5 名称字符串是子项和下一个项之间的单独字段 subkey 或 TA,以允许使用一个子项对多个子项进行签名 subkey 或 TA。签名的 TA 二进制文件是包含所有公钥的自包含文件 包括验证所需的内容,但公钥根密钥除外 嵌入在 TEE 核心二进制文件中。当 TA 使用子项进行签名。原创 2024-07-17 19:40:05 · 118 阅读 · 0 评论 -
18-optee内核-安全存储Secure storage
OP-TEE中的安全存储是根据OP-TEE中定义的实现的 GlobalPlatform 的(此处称为可信存储)。该规范要求应该可以存储通用 保证数据机密性和完整性的数据和关键材料 存储和修改存储的操作的原子性(原子性 这里表示整个操作要么成功完成,要么不写入 完成)。可以使用正常世界的文件系统和 RPMB 实现 同时。为此,有两个特定于 OP-TEE 的存储标识符 定义:和 .取决于 在编译时配置中,可以使用一个或多个值。该值在可用时选择 REE FS,否则选择 RPMB FS (按此顺序)。原创 2024-07-17 19:38:33 · 213 阅读 · 0 评论 -
17-optee内核---Secure boot简介
本节简要介绍如何启用验证 使用可信固件 A (TF-A) 中的身份验证框架的 OP-TEE,即 可以在 Armv8-A 环境中使用的东西。根据,没有其他特定的构建选项 OP-TEE的验证。如果我们启用了身份验证框架,并且 在构建 TF-A 时指定了构建选项,与 BL32 相关 cert_create工具将自动创建证书,然后 这些证书将在启动期间进行验证。BL32若要启用身份验证框架,应遵循以下步骤 根据。有关身份验证的更多详细信息 框架,请参阅和。查看最新版本的。原创 2024-07-17 19:32:35 · 141 阅读 · 0 评论 -
16-optee移植指南-Porting guidelines
我们正在尽最大努力在 OP-TEE 中实现完整的端到端安全性。通用方式,但由于设备的性质不同,NDA等,它是 我们并不总是能够这样做,在这些情况下,我们最常尝试这样做 编写一个通用 API,但我们将只存根代码。此移植指南 突出显示了在真正安全的消费者中必须解决的缺失部分 装置。希望我们迟早能访问我们所在的设备 至少可以向所有人公开参考实现 我们在这里谈论的缺失部分。原创 2024-07-17 19:30:17 · 148 阅读 · 0 评论 -
15-optee内核-Libraries库的介绍
OP-TEE内核和OP-TEE开发套件提供可信应用 名为的标准 C 库。它实现了许多 标准函数,如 、 、 、。,还有更多但不是全部的标准 C 库 功能。但请注意,用 C 语言实现的受信任应用程序应使用 GP TEE 内部核心 API 函数,而不是其标准 C 库函数 等价物(例如 而不是 和 ,或者代替 和 friends)。这使得这些 TA 实现更易于移植到其他 GP 符合 TEE 标准的环境。启用后,分配 UUID。原创 2024-07-17 19:27:59 · 93 阅读 · 0 评论 -
14-optee内核GlobalPlatform API
GlobalPlatform 跨行业工作,以识别、开发和发布 促进安全和可互操作部署的规范,以及 在安全芯片技术上管理多个嵌入式应用程序。OP-三通 支持 GlobalPlatform TEE 客户端 API 规范 v1.0 (GPD_SPE_007) 以及勘误表和 Precisions 2.0 (GPD_EPR_028) 和 TEE 内部核心 API 规范 v1.3.1 (GPD_SPE_010)。TEE 客户端 API 描述并定义客户端如何在丰富的 操作环境 (REE) 应与 TEE 通信。要识别 要使原创 2024-07-17 19:24:53 · 110 阅读 · 0 评论 -
13-optee内核-文件系统File structure
本页介绍树结构的组织。描述深入到不同的表中。首先是平顶目录 后跟目录树和树 在单独的表中。还有两张桌子覆盖了 和 树。原创 2024-07-14 23:54:07 · 125 阅读 · 0 评论 -
12-optee内核-Device tree bindings /Google Widevine device-tree bindings
【代码】Architecture /Device tree bindings /Google Widevine device-tree bindings。原创 2024-07-14 23:50:51 · 93 阅读 · 0 评论 -
11-optee内核-Device Tree
OP-TEE内核可以使用设备树格式注入平台配置 平台初始化期间的信息,可能还有一些运行时上下文。设备树技术允许从 ASCII 源文件描述平台 所谓的 DTS 文件。这些可用于生成平台描述二进制文件 映像,即所谓的 DTB,嵌入到平台引导介质中,用于应用预期的 平台初始化期间的配置设置。该方案放宽了对OP-TEE内核实现的设计限制,因为大多数 平台特定的硬件可以在不修改 C 源文件的情况下进行调整 或在构建环境中添加配置指令。原创 2024-07-14 23:48:03 · 133 阅读 · 0 评论 -
10-optee内核-密码学服务的实现
从受信任的应用程序到实际的加密,有几层 算法。大多数加密代码在 TEE 内核内以内核模式运行。下面是对加密 API 的典型调用的示意图。中的数字 方括号 ([1], [2]…) 请参阅以下各节。原创 2024-07-14 23:43:27 · 96 阅读 · 0 评论 -
08-optee内核-smc指令
TEE 驱动程序将使用参数和一些额外的簿记填充结构 信息。SMC 的参数在寄存器 1 到 7 和寄存器 0 中传递 持有 SMC ID,除其他外,该 ID 指示它是标准还是 快速呼叫。前一个文件定义了 SMC 标识符以及在 每个 SMC 的寄存器。后一个文件定义了 OP-TEE 消息协议 这不仅限于 SMC,即使这是目前唯一的选择 可用。如果我们正在查看源代码,我们会 可以看出通信主要是使用 and(在。OP-TEE 的 SMC 接口分为两个级别,分别使用。中)实现的,其中可以看作是 主要结构。原创 2024-07-24 22:06:08 · 129 阅读 · 0 评论 -
07-optee内核-共享内存
此 cookie 稍后在调用 OP-TEE OS 时使用,如果 cookie OP-TEE OS 还不知道,它会要求 SPMC 制作内存 可用。这种情况也可能涉及另一个情况 安全环境中的组件,SPMC 位于安全虚拟机管理程序中,其中 控制 OP-TEE OS 可以查看或使用的内存。纵的共享内存缓冲区引用必须适合其中一个 从 OP-TEE 内核已知的共享内存区域。使用基于 SMC 的 OP-TEE MSG ABI 存在一些异常,其中内存 在可以从 OP-TEE 操作系统访问它之前,不需要共享。原创 2024-07-24 22:05:16 · 147 阅读 · 0 评论 -
06-optee内核-栈的介绍
外部中断退出类似于 RPC 退出,但它是 和 (分别用于 armv7-A/Aarch32 和 Aarch64),用于保存线程状态。当收到异常时,堆栈指针始终是临时使用的,在分配适当的堆栈时 指针。RPC 已启动 调用该调用以当 线程被恢复,它将在下一条指令继续,就像这个函数一样 做了正常的回归。当前 线程堆栈被分配给该线程堆栈,然后选择该线程堆栈。当主线程函数时,返回的中断是 禁用后,CPU 将切换到临时堆栈。在早期启动期间,CPU 配置了临时堆栈,该堆栈将一直使用到 OP-TEE首次退出正常世界。原创 2024-07-24 22:03:22 · 114 阅读 · 0 评论 -
05-optee内核-Pager
自 初始化 OP-TEE,加载器将完整的二进制文件加载到内存中并复制 标头后面的内容和后面的字节是。装载机供应在 未复制的内容后面的第一个字节的地址,并跳转到加载 启动 OP-TEE 的地址。当需要新的虚拟地址时 映射的空闲物理页将映射到新地址,如果空闲物理页。当物理页面时 发布后,它也从所有翻译表中取消映射,并且它的内容 写回存储,则该字段设置为 请注意,物理页面未使用。除了如上所述的具有内部分区的整体二进制文件外,还有三个 在构建过程中,会同时为加载器生成额外的二进制文件,这些加载器具有以下功能。原创 2024-07-24 22:00:58 · 127 阅读 · 0 评论 -
04-optee内核-MMU
通常只有一个共享的 L2 表,但在启用 ASLR 的情况下, 用于共享映射的虚拟地址空间可能需要使用两个 表。TTBR0 指向一个小 当用户映射处于活动状态时的转换表以及到大型转换表的转换表 当前没有用户映射处于活动状态时。使用了多个 L1 转换表,一个跨度为 4 GiB 的大转换表,另一个是 或 更多跨度为 32 MiB 的小表。共享映射具有 L3 表 在启动时也已初始化,但每个线程的 L3 表是动态的,并且是 仅在激活映射时分配。平移表具有一定的对齐约束,即对齐(的 物理地址)必须与转换表的大小相同。原创 2024-07-24 21:58:41 · 116 阅读 · 0 评论 -
03-optee内核-memory object
提供的接口 在使用 MOBJ 填充翻译时,它大多是抽象的 表格等。仅包含提供的大小,如果作为参数提供,则使 return 为 true。makes 和 return true 如果作为参数提供。一个具有可用名称的实例。跨越整个虚拟地址空间。安全复制分页共享内存。原创 2024-07-24 21:57:12 · 98 阅读 · 0 评论 -
02-optee内核-Notifications
异步通知使用特定于平台的方式触发 非安全中断。这是 在设备中使用上半部分和下半部分类型的设计时很有用 司机。上半部分是在安全中断处理程序中完成的,然后 触发正常世界向安全世界发出屈服的呼吁,以做 下半部分加工。同步通知受到依赖于 RPC 进行传递的限制,这 只能在正常线程上下文中使用。安全中断处理程序或 因此,其他原子上下文无法使用同步通知。如果启用了异步通知,则为保留值 0 向 A 驱动器发出信号,需要进行下半部分调用,即屈服调用。安全世界可以使用两种类型的通知来制作 正常世界知道某些事件。原创 2024-07-24 21:54:45 · 89 阅读 · 0 评论 -
09-optee内核-线程处理
一旦使用了条件变量 与某个互斥锁一起,它只能与该互斥锁一起使用,直到 摧毁。断言互斥锁已解锁且没有服务员,之后 这样,互斥锁使用的内存就可以被释放了。当互斥锁被锁定时,它归调用或的线程所有,互斥锁只能由线程解锁 拥有互斥锁。原子化解锁提供的互斥锁并通过以下方式在正常世界中等待 一个 RPC,用于要发出信号的条件变量,当函数 返回互斥锁再次被锁定。如果互斥锁被解锁,这是一个快速操作, 否则,该函数会发出 RPC 以在正常情况下等待。如果解锁,则锁定互斥锁,否则返回互斥锁 保持不变,函数返回。原创 2024-07-24 22:07:03 · 129 阅读 · 0 评论 -
01-optee内核-中断处理
本节介绍如何处理全局执行的开关 基于异常和中断通知的上下文。中断 通知是 IRQ/FIQ 异常,也可能意味着世界的切换 执行上下文:正常世界到安全世界,或安全世界到正常 世界。原创 2024-07-24 21:52:37 · 818 阅读 · 0 评论 -
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 · 194 阅读 · 0 评论 -
TEE共享内存的介绍-共享内存的限制是什么? TA堆内存/栈内存有限制吗?Trustzone/TEE
这是在编译时设置的,因此,TA的内存需求越大,所配置的内存也就越大。例如,当TA被加载到安全内存时,系统会自动为其分配配置好的内存,这意味着无论TA是否使用这些内存,系统都会预留相应的内存空间。例如,在OPTE中,TA的虚拟地址空间大约为几十兆字节,如果配置的内存超过了这个限制,系统会报错并且无法运行。例如,如果TA需要2兆字节的栈和4兆字节的堆,但初始配置为2兆字节的栈和1兆字节的堆。最后,TA的堆内存和栈内存是在什么时候分配的呢?在OPTEE中,TA的堆内存和栈内存是在加载到安全内存时分配的。原创 2024-07-09 09:37:54 · 270 阅读 · 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 · 226 阅读 · 0 评论 -
TA都可以使用哪些存储接口?分别都存放在了哪里?
有些厂商利用RPMB-FS机制,反向调用存储接口后具体存储位置由系统集成工程师配置。当然,集成工程师也可能误配置,使得存储位置在恢复出厂设置时会丢失数据。因此,根据需求,存储位置可以配置为丢失或不丢失的数据分区。这是一个数据分区,断电不会丢失数据,但在刷机或恢复出厂设置时数据会丢失。而RPMB-FS存储在RPMB中,其特点是在断电和恢复出厂设置后数据都不会丢失。接下来我们探讨TA可以使用哪些存储接口及其存储。因此,TA的具体存储位置并不完全由TEE OS厂商决定,而是由系统集成商根据需求和配置来决定。原创 2024-07-06 23:35:58 · 133 阅读 · 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 · 317 阅读 · 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 · 325 阅读 · 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 · 1742 阅读 · 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 · 737 阅读 · 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 · 268 阅读 · 0 评论 -
Trustzone/TEE/安全 面试100问-目录
Trustzone/tee/安全面试100问原创 2023-11-22 08:59:26 · 1840 阅读 · 0 评论