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”并点击下载。