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”並點選下載。