值得信賴的 TEE

Trusty 是一種安全作業系統 (OS),為 Android 提供可信任執行環境 (TEE)。 Trusty 作業系統與 Android 作業系統運作在同一處理器上,但 Trusty 透過硬體和軟體與系統的其他部分隔離。 Trusty 和 Android 並行運行。 Trusty 可以存取設備主處理器和記憶體的全部功能,但完全隔離。 Trusty 的隔離功能可以保護其免受用戶安裝的惡意應用程式以及 Android 中可能發現的潛在漏洞的影響。

Trusty 與 ARM 和 Intel 處理器相容。在 ARM 系統上,Trusty 使用 ARM 的 Trustzone™ 虛擬化主處理器並創建安全的可信任執行環境。使用英特爾虛擬化技術的英特爾 x86 平台也提供類似的支援。

圖1 。可靠的概述圖。

值得信賴的組成包括:

  • 源自Little Kernel 的小型作業系統內核
  • 用於在安全環境和 Android 之間傳輸資料的 Linux 核心驅動程式
  • 一個 Android用戶空間庫,用於透過核心驅動程式與受信任的應用程式(即安全任務/服務)進行通信

注意: Trusty 和 Trusty API 可能會發生變化。有關 Trusty API 的信息,請參閱API 參考

為什麼值得信賴?

其他 TEE 作業系統傳統上由第三方供應商作為二進位 blob 提供或內部開發。對於系統單晶片 (SoC) 供應商和 OEM 而言,開發內部 TEE 系統或從第三方取得 TEE 授權的成本可能很高。金錢成本與不可靠的第三方系統相結合,為 Android 創造了一個不穩定的生態系統。 Trusty 被提供給其合作夥伴,作為其可信賴執行環境的可靠且免費的開源替代方案。 Trusty 提供了閉源系統無法實現的透明度。

Android 支援各種 TEE 實現,因此您不限於使用 Trusty。每個 TEE 作業系統都有自己獨特的部署可信任應用程式的方式。對於試圖確保其應用程式在每台 Android 裝置上運行的可信任應用程式開發人員來說,這種碎片化可能是一個問題。使用Trusty作為標準可以幫助應用程式開發人員輕鬆創建和部署應用程序,而無需考慮多個TEE系統的碎片。 Trusty TEE 為開發人員和合作夥伴提供了透明度、協作性、程式碼可檢查性和易於調試性。值得信賴的應用程式開發人員可以圍繞通用工具和 API 進行聚合,以降低引入安全漏洞的風險。這些開發人員將確信他們可以開發應用程式並在多個設備上重複使用該應用程序,而無需進一步開發。

應用程式和服務

Trusty 應用程式被定義為二進位檔案(執行檔和資源檔案)、二進位清單和加密簽章的集合。在運行時,Trusty 應用程式在 Trusty 核心下以非特權模式作為獨立進程運行。每個進程都利用 TEE 處理器的記憶體管理單元功能在自己的虛擬記憶體沙箱中運作。硬體的建置改變了 Trusty 遵循的確切進程,但例如,核心使用由安全計時器滴答驅動的基於優先權的循環調度程序來調度這些進程。所有 Trusty 應用程式都具有相同的優先權。

圖2 .可信應用程式概述。

第三方 Trusty 應用程式

目前,所有Trusty應用程式均由單一方開發,並與Trusty核心映像一起打包。引導程式在引導期間對整個映像進行簽署和驗證。 Trusty 目前不支援第三方應用程式開發。儘管 Trusty 能夠開發新應用程序,但這樣做時必須格外小心;每個新應用程式都會增加系統可信任運算基礎(TCB)的面積。受信任的應用程式可以存取設備機密,並可以使用它們執行計算或資料轉換。開發在 TEE 中運行的新應用程式的能力為創新開闢了許多可能性。然而,由於 TEE 的定義本身,如果沒有附加某種形式的信任,這些應用程式就無法分發。通常,這採用由運行應用程式的產品的用戶信任的實體進行的數位簽章的形式。

用途和範例

可信執行環境正迅速成為行動裝置的標準。使用者的日常生活越來越依賴行動設備,對安全性的需求也不斷增長。具有 TEE 的行動裝置比沒有 TEE 的裝置更安全。

在具有TEE 實現的裝置上,主處理器通常被稱為“不受信任”,這意味著它無法存取RAM、硬體暫存器和一次性寫入熔絲的某些區域,其中儲存著秘密資料(例如裝置特定的加密金鑰)。由製造商儲存。主處理器上執行的軟體將任何需要使用秘密資料的操作委託給 TEE 處理器。

Android 生態系中最廣為人知的例子是受保護內容的DRM 框架。 TEE 處理器上執行的軟體可以存取解密受保護內容所需的裝置特定金鑰。主處理器只能看到加密內容,從而提供高水準的安全性並防範基於軟體的攻擊。

TEE 還有許多其他用途,例如行動支付、安全銀行、多因素身份驗證、設備重置保護、重播保護的持久存儲、安全 PIN 和指紋處理,甚至惡意軟體檢測。