ATF官方文档翻译(二六):组件 - 安全有效载荷调度器(SPD)- OP-TEE Dispatcher

前言

到这里我就继续开始了一个新的篇章,这个部分的内容,在我们看源码的doc文件的时候,存在了一部分的重复。但是温故而知新可以为师亦。

首先的第一个章节:SPD

这个章节主要有四个小节。

安全有效载荷调度器(SPD)
目录

  • 1.OP-TEE调度器
  • 2.可信小内核(TLK)调度器
  • 3.可靠的调度器
  • 4.ProvenCore调度器
4.1.1. OP-TEE Dispatcher
4.1.2. Trusted Little Kernel (TLK) Dispatcher
4.1.3. Trusty Dispatcher
4.1.4. ProvenCore Dispatcher

下面首先来看看我最近研究的OPTEE

1-OP-TEE调度器

【OP-TEE】

OP-TEE OS是一个以Secure EL1运行的受信任操作系统。

要构建和执行OP-TEE,请遵循OP-TEE build.git中的说明

OP-TEE OS有两种不同的加载模式。默认模式将在引导期间将其作为BL32负载加载,这是平台使用的推荐技术。还有另一种技术,通过启用专门为ChromeOS添加的OPTEE_ALLOW_SMC_LOAD选项,在启动后通过SMC调用加载OP-TEE OS。根据平台配置,通过SMC调用加载OP-TEE可能不安全。如果使用该选项,请确保了解允许以这种方式加载Trusted OS所涉及的风险。

ChromeOS使用引导流程,在执行固件之前验证固件的签名,然后只有当签名有效时,TEE使用的“秘密”才可访问。然后,固件使用depthcharge(Depthcharge 实用程序)验证内核的签名,内核使用dmverity验证rootfs。

然后,在内核完成加载之后,在通过安装可写文件系统打开网络/设备连接打开任何攻击向量之前,立即调用SMC调用以加载OP-TEE。这确保了平台是“关闭的”,并通过OP-TEE加载点运行签名代码。

2.可信小内核(TLK)调度器

TLK调度器(TLK-D)增加了对NVIDIA的Trusted Little Kernel(TLK)的支持,以与Trusted Firmware-A(TF-A)一起工作。TLK-D可以通过将其包含在平台的makefile中来编译。TLK主要用于Tegra SoC,因此虽然TF-A仅支持Tegra上的TLK,但调度器代码只能为其他平台编译。

为了编译TLK-D,我们需要一个BL32图像。由于TLKD只需要编译,所以任何BL32映像都可以。要使用TLK作为BL32,请参阅“构建TLK”部分。

BL32就绪后,通过在build命令中添加“SPD=TLKD”,可以将TLKD包含在图像中。

2.1.可信小内核(TLK)

TLK是一个以Secure EL1运行的受信任操作系统。它是NVIDIA®Trusted Little Kernel(TLK)技术的自由开源软件(FOSS)版本,它扩展了Little Kernel(LK)开发过程中可用的技术。您可以从以下位置下载LK模块化嵌入式抢占式内核,以用于Arm、x86和AVR32系统https://github.com/travisg/lk

NVIDIA实现了其可信小内核(TLK)技术,该技术设计为一个自由开源的可信执行环境(OTE)。
TLK功能包括:

  • 小型抢占式内核
  • 支持多线程、IPC和线程调度
  • 添加了TrustZone功能
  • 添加了安全存储
  • 根据MIT/FreeBSD许可证

小内核(LK)的NVIDIA扩展包括:

  • 用户模式
  • TA的地址空间分隔
  • TLK客户端应用程序(CA)库
  • TLK TA库
  • 通过OpenSSL加密库(加密/解密、密钥处理)
  • Linux内核驱动程序
  • Cortex A9/A15支持
  • 电源管理
  • TrustZone内存分割(可重新配置)
  • 页面表管理
  • 通过UART调试支持(计划使用USB)

TLK由NVIDIA托管http://nv-tegra.nvidia.com在第三方/ote_partner/tlk.git存储库下。有关TLK和OTE的详细信息,请参阅“documentation”目录下的Tegra_BSP_for_Android_TLK_FOSS_Reference.pdf手册。

2.2.构建TLK

要构建和执行TLK,请遵循Tegra_BSP_for_Android_TLK_FOSS_Reference.pdf手册中“构建TLK设备”部分的说明。

2.3.输入TLK参数

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

2.3.1.示例

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

3.Trusty Dispatcher

Trusty是一组软件组件,支持移动设备上的可信执行环境(TEE),由Google发布和维护。
可在Trusty的Android开源项目(AOSP)网页上找到详细信息和构建说明,网址为https://source.android.com/security/trusty

3.1.引导参数

自定义启动参数可以通过提供特定于平台的函数传递给Trusty:

void plat_trusty_set_boot_args(aapcs64_params_t*args)

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

3.2.支持的平台

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

4.ProvenCore调度器

ProvenCore调度器(PnC-D)增加了对ProvenRun的ProvenCore微内核的支持,以与Trusted Firmware-A(TF-A)一起工作。

ProvenCore是ProvenRun S.A.S.使用演绎形式化方法开发的安全操作系统。

BL32就绪后,通过在build命令中添加“SPD=pncd”,可以将PnC-D包含在图像中。

以上就是介绍了ATF的一个组件–SPD,这个玩意是根据TEEOS是什么,SPD就是什么。
https://trustedfirmware-a.readthedocs.io/en/latest/components/spd/pnc-dispatcher.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TrustZone_Hcoco

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

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

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

打赏作者

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

抵扣说明:

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

余额充值