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 Client API Specification v1.0”並點選下載。