01-Secure Payload Dispatcher (SPD)

本文介绍了OP-TEE、TLK及Trusty等可信执行环境(TEE)及其调度器的原理与实现细节,涵盖OP-TEE的历史发展、TLK的功能特性以及Trusty在不同平台的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引流关键词: TF-A,TF-M,ATF,TrustedFirmware,trustzone,TEE,optee,trusty,tlk,lk,armv8,armv9,arm,secureboot,BL31,BL32,BL1,BL2,hypervisor,终端安全,secureboot,security,virtulization

快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈


👉[专栏目录]-ATF/FF-A/specification学习👈

请添加图片描述

1.1. OP-TEE Dispatcher

opteed (optee dispatcher) 负责调度 optee os程序,它的介绍如下:
在这里插入图片描述

OP-TEE(Open Portable Trusted Execution Environment)
OP-TEE 是一种可信执行环境 (TEE),旨在作为在 Arm 上运行的伴随着非安全 Linux 内核的操作系统, Cortex-A 内核使用 TrustZone 技术。 OP-TEE 实现了TEE Internal Core API v1.1.x,它是公开给可信应用程序的 API 和 TEE 客户端 API v1.0,它是描述如何与 TEE 通信的 API。 这些 API 在 GlobalPlatform API 规范中定义。

OP-TEE 是实现 Arm TrustZone 技术的开源可信执行环境 (TEE)。 OP-TEE 已被移植到许多 Arm 设备和平台。最初它是由 ST-Ericsson 开发的专有 TEE 解决方案,后来转移到 STMicroelectronics

早在 2013 年,Linaro 就成立了安全工作组 (SWG : Security Working Group):SWG 最初的主要任务之一是开展开源 TEE 项目。在与各种 TEE 供应商交谈后,Linaro 开始与 STMicroelectronics 合作,将他们的 TEE 解决方案从专有 TEE 转变为开源 TEE。经过几个月的重构和重写代码的主要部分,使其与 BSD 2-Clause 许可证兼容,它于 2014 年夏天左右向公众发布。

2015 年,OP-TEE 项目的所有权从 STMicroelectronics 转移到 Linaro。 2015 年至 2019 年期间,Linaro 是该项目的所有者,维护工作与 Linaro 的成员一起共享。 2019 年末,Linaro 将 OP-TEE 项目转移到 TrustedFirmware.org 项目,该项目从那时起一直是管理机构。 Linaro 仍然负责安排发布、处理安全事件等。但是在开发和功能方面,有许多公司为该项目做出了贡献。

1.2.

(TLK) Dispatcher
TLK dispatcher (TLK-D) 增加了对 NVIDIA 可信小内核 (TLK) 的支持,以与可信固件-A (TF-A) 配合使用。 TLK-D 可以通过将其包含在平台的 makefile 中进行编译。 TLK 主要用于 Tegra SoC,因此虽然 TF-A 仅支持 Tegra 上的 TLK,但调度程序代码只能为其他平台编译。

请添加图片描述

为了编译 TLK-D,我们需要一个 BL32 镜像。 因为,TLKD 只需要编译,任何 BL32 镜像都可以。 要将 TLK 用作 BL32,请参阅“构建 TLK”部分。

一旦 BL32 准备就绪,就可以通过在构建命令中添加“SPD=tlkd”来将 TLKD 包含在映像中。

1.2.1. Trusted Little Kernel (TLK)

TLK 是作为安全 EL1 运行的可信操作系统。 它是 NVIDIA® 可信小内核 (TLK) 技术的免费开源软件 (FOSS) 版本,它扩展了随着小内核 (LK) 的开发而可用的技术。 您可以从 https://github.com/travisg/lk 下载用于 Arm、x86 和 AVR32 系统的 LK 模块化嵌入式抢占式内核

NVIDIA 实施了其 Trusted Little Kernel (TLK) 技术,该技术设计为免费和开源的可信执行环境 (OTE)。

TLK 功能包括:

  • Small, pre-emptive kernel
  • Supports multi-threading, IPCs, and thread scheduling
  • Added TrustZone features
  • Added Secure Storage
  • Under MIT/FreeBSD license
  • NVIDIA extensions to Little Kernel (LK) include:
  • User mode
  • Address-space separation for TAs
  • TLK Client Application (CA) library
  • TLK TA library
  • Crypto library (encrypt/decrypt, key handling) via OpenSSL
  • Linux kernel driver
  • Cortex A9/A15 support
  • Power Management
  • TrustZone memory carve-out (reconfigurable)
  • Page table management
  • Debugging support over UART (USB planned)

TLK 由 NVIDIA 在 http://nv-tegra.nvidia.com 上的 3rdparty/ote_partner/tlk.git 存储库下托管。 有关 TLK 和 OTE 的详细信息可以在位于“文档”目录_下的 Tegra_BSP_for_Android_TLK_FOSS_Reference.pdf 手册中找到。

1.2.2. Build TLK

要构建和执行 TLK,请按照 Tegra_BSP_for_Android_TLK_FOSS_Reference.pdf手册中“构建 TLK 设备”部分的说明进行操作。

1.2.3. Input parameters to TLK

TLK 需要 TZDRAM 大小和包含引导参数的结构。 BL2 将此信息作为 bl32_ep_info 结构的成员传递给 EL3 软件,其中 bl32_ep_info 是 bl31_params_t 的一部分(由 BL2 在 X0 中传递)

example:

bl32_ep_info->args.arg0 = TZDRAM size available for BL32
bl32_ep_info->args.arg1 = unused (used only on Armv7-A)
bl32_ep_info->args.arg2 = pointer to boot args
1.3. Trusty Dispatcher

Trusty 是一组软件组件,支持移动设备上的可信执行环境 (TEE),由 Google 发布和维护。

可在托管于 https://source.android.com/security/trusty 的 Trusty 的 Android 开源项目 (AOSP) 网页上找到详细信息和构建说明

在这里插入图片描述

1.3.1. Boot parameters

通过提供特定于平台的函数,可以将自定义引导参数传递给 Trusty:

void plat_trusty_set_boot_args(aapcs64_params_t *args)

如果提供此函数,则必须将 args->arg0 设置为分配给 trusty 的内存大小。 如果平台不提供此函数,但定义了 TSP_SEC_MEM_SIZE,则默认实现将从 TSP_SEC_MEM_SIZE 传递内存大小。 args->arg1 可以设置为特定于平台的参数块,然后 args->arg2 应设置为该块的大小。

1.3.2. Supported platforms

在 Trusted Firmware-A 支持的所有平台中,Trusty 只在 NVIDIA 的 Tegra SoC 验证和支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arm精选

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值