Trusty 是一個安全的操作系統 (OS),可為 Android 提供可信執行環境 (TEE)。 Trusty OS 與 Android OS 在同一處理器上運行,但 Trusty 通過硬件和軟件與系統的其餘部分隔離。 Trusty 和 Android 並行運行。 Trusty 可以訪問設備主處理器和內存的全部功能,但完全隔離。 Trusty 的隔離保護它免受用戶安裝的惡意應用程序和可能在 Android 中發現的潛在漏洞的影響。
Trusty 與 ARM 和 Intel 處理器兼容。在 ARM 系統上,Trusty 使用 ARM 的 Trustzone™ 虛擬化主處理器並創建安全的可信執行環境。使用英特爾虛擬化技術的英特爾 x86 平台也提供類似的支持。
信任包括:
- 源自Little Kernel的小型 OS 內核
- 用於在安全環境和 Android 之間傳輸數據的 Linux 內核驅動程序
- 一個 Android用戶空間庫,用於通過內核驅動程序與受信任的應用程序(即安全任務/服務)進行通信
注意: Trusty 和 Trusty API 可能會發生變化。有關 Trusty API 的信息,請參閱API 參考。
為什麼值得信賴?
其他 TEE 操作系統傳統上由第三方供應商作為二進制 blob 提供或內部開發。開發內部 TEE 系統或從第三方獲得 TEE 許可對於片上系統 (SoC) 供應商和 OEM 來說可能成本高昂。金錢成本與不可靠的第三方系統相結合,為 Android 創造了一個不穩定的生態系統。 Trusty 作為其可信執行環境的可靠且免費的開源替代方案提供給其合作夥伴。 Trusty 提供了封閉源系統無法實現的透明度。
Android 支持各種 TEE 實現,因此您不限於使用 Trusty。每個 TEE 操作系統都有自己獨特的方式來部署受信任的應用程序。對於試圖確保他們的應用程序在每台 Android 設備上運行的受信任的應用程序開發人員來說,這種碎片化可能是一個問題。使用 Trusty 作為標準可幫助應用程序開發人員輕鬆創建和部署應用程序,而無需考慮多個 TEE 系統的碎片化。 Trusty TEE 為開發人員和合作夥伴提供透明度、協作性、代碼可檢查性和易於調試。值得信賴的應用程序開發人員可以圍繞常用工具和 API 進行融合,以降低引入安全漏洞的風險。這些開發人員將有信心,他們可以開發一個應用程序並使其在多個設備上重複使用,而無需進一步開發。
應用程序和服務
Trusty 應用程序被定義為二進製文件(可執行文件和資源文件)、二進制清單和加密簽名的集合。在運行時,Trusty 應用程序在 Trusty 內核下以非特權模式作為隔離進程運行。每個進程利用 TEE 處理器的內存管理單元功能在其自己的虛擬內存沙箱中運行。硬件的構建改變了 Trusty 遵循的確切過程,但例如,內核使用基於優先級的循環調度程序來調度這些進程,該調度程序由安全計時器滴答聲驅動。所有 Trusty 應用程序共享相同的優先級。
第三方 Trusty 應用程序
目前所有的 Trusty 應用程序都是由單方開發並與 Trusty 內核映像打包在一起的。引導加載程序在引導期間對整個映像進行簽名和驗證。 Trusty 目前不支持第三方應用程序開發。儘管 Trusty 支持開發新應用程序,但必須非常小心地執行此操作;每個新應用都會增加系統可信計算庫(TCB)的面積。受信任的應用程序可以訪問設備機密,並可以使用它們執行計算或數據轉換。開發在 TEE 中運行的新應用程序的能力為創新開闢了許多可能性。然而,由於 TEE 的定義,這些應用程序不能在沒有附加某種形式的信任的情況下分發。通常,這是由運行應用程序的產品的用戶信任的實體以數字簽名的形式出現的。
用途和例子
可信執行環境正迅速成為移動設備的標準。用戶在日常生活中越來越依賴他們的移動設備,並且對安全性的需求一直在增長。帶有 TEE 的移動設備比沒有 TEE 的設備更安全。
在具有 TEE 實現的設備上,主處理器通常被稱為“不受信任”,這意味著它無法訪問 RAM、硬件寄存器和一次性寫入保險絲的某些區域,其中秘密數據(例如設備特定的加密密鑰)是由製造商存儲。在主處理器上運行的軟件將需要使用秘密數據的任何操作委託給 TEE 處理器。
Android 生態系統中最廣為人知的例子是受保護內容的DRM 框架。在 TEE 處理器上運行的軟件可以訪問解密受保護內容所需的設備特定密鑰。主處理器只能看到加密的內容,提供高級別的安全性和針對基於軟件的攻擊的保護。
TEE 還有許多其他用途,例如移動支付、安全銀行業務、多因素身份驗證、設備重置保護、重放保護持久存儲、安全 PIN 和指紋處理,甚至惡意軟件檢測。