AMD-TEE (AMD 的可信执行环境)¶
AMD-TEE 驱动程序处理与 AMD 的 TEE 环境的通信。TEE 环境由 AMD 安全处理器提供。
AMD 安全处理器(以前称为平台安全处理器或 PSP)是一个专用处理器,具有 ARM TrustZone 技术以及旨在启用第三方可信应用程序的基于软件的可信执行环境 (TEE)。此功能目前仅适用于 APU。
下图显示了 AMD-TEE 的高级概述
|
x86 |
|
User space (Kernel space) | AMD Secure Processor (PSP)
~~~~~~~~~~ ~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
+--------+ | +-------------+
| Client | | | Trusted |
+--------+ | | Application |
/\ | +-------------+
|| | /\
|| | ||
|| | \/
|| | +----------+
|| | | TEE |
|| | | Internal |
\/ | | API |
+---------+ +-----------+---------+ +----------+
| TEE | | TEE | AMD-TEE | | AMD-TEE |
| Client | | subsystem | driver | | Trusted |
| API | | | | | OS |
+---------+-----------+----+------+---------+---------+----------+
| Generic TEE API | | ASP | Mailbox |
| IOCTL (TEE_IOC_*) | | driver | Register Protocol |
+--------------------------+ +---------+--------------------+
在最低层(在 x86 中),AMD 安全处理器 (ASP) 驱动程序使用 CPU 到 PSP 邮箱寄存器向 PSP 提交命令。命令缓冲区的格式对于 ASP 驱动程序是不透明的。它的作用是向安全处理器提交命令并将结果返回给 AMD-TEE 驱动程序。AMD-TEE 驱动程序和 AMD 安全处理器驱动程序之间的接口可以在 [1] 中找到。
AMD-TEE 驱动程序打包命令缓冲区有效负载,以便在 TEE 中进行处理。不同 TEE 命令的命令缓冲区格式可以在 [2] 中找到。
AMD-TEE 可信操作系统支持的 TEE 命令有
- TEE_CMD_ID_LOAD_TA - 将可信应用程序 (TA) 二进制文件加载到
TEE 环境。
TEE_CMD_ID_UNLOAD_TA - 从 TEE 环境卸载 TA 二进制文件。
TEE_CMD_ID_OPEN_SESSION - 打开与已加载 TA 的会话。
TEE_CMD_ID_CLOSE_SESSION - 关闭与已加载 TA 的会话
TEE_CMD_ID_INVOKE_CMD - 调用已加载 TA 的命令
TEE_CMD_ID_MAP_SHARED_MEM - 映射共享内存
TEE_CMD_ID_UNMAP_SHARED_MEM - 取消映射共享内存
AMD-TEE 可信操作系统是在 AMD 安全处理器上运行的固件。
AMD-TEE 驱动程序向 TEE 子系统注册自身并实现以下驱动程序函数回调
get_version - 返回驱动程序实现 ID 和功能。
open - 设置驱动程序上下文数据结构。
release - 释放驱动程序资源。
open_session - 加载 TA 二进制文件并打开与已加载 TA 的会话。
close_session - 关闭与已加载 TA 的会话并卸载它。
invoke_func - 调用已加载 TA 的命令。
AMD-TEE 不支持 cancel_req 驱动程序回调。
用户空间(客户端)可以使用 GlobalPlatform TEE 客户端 API [3] 与 AMD 的 TEE 进行通信。AMD 的 TEE 提供了一个安全的环境,用于加载、打开会话、调用命令和关闭与 TA 的会话。
参考资料¶
[1] include/linux/psp-tee.h
[2] drivers/tee/amdtee/amdtee_if.h
- [3] http://www.globalplatform.org/specificationsdevice.asp 查找
“TEE 客户端 API 规范 v1.0”并点击下载。