Trusty 是安全的作業系統 (OS),可為 Android 提供受信任的執行環境 (TEE)。Trusty OS 與 Android 作業系統使用相同的處理器,但 Trusty 與其他系統的硬體和軟體皆是隔離的。Trusty 和 Android 會並行執行。Trusty 可使用裝置主處理器和記憶體的全部效能,但完全隔離。Trusty 的隔離功能可保護其免於受到使用者安裝的惡意應用程式,以及 Android 中可能發現的潛在安全漏洞。
Trusty 與 ARM 和 Intel 處理器相容。在 ARM 系統上,Trusty 會使用 ARM 的 Trustzone™ 將主處理器虛擬化,並建立安全的受信任執行環境。在使用 Intel 虛擬化技術的 Intel x86 平台上,也提供類似的支援。

圖 1. Trusty 總覽圖。
Trusty 包含以下元素:
- 源自 Little Kernel 的小型 OS 核心
- 用於在安全環境和 Android 之間傳輸資料的 Linux 核心驅動程式
- 透過核心驅動程式與信任的應用程式 (也就是安全的作業/服務) 通訊的 Android 使用者空間程式庫
注意:Trusty 和 Trusty API 可能會變更。如需 Trusty API 的相關資訊,請參閱 API 參考資料。
為什麼要使用 Trusty?
其他 TEE 作業系統通常由第三方供應商提供,或由內部開發人員以二進位資料 blob 形式提供。晶片系統 (SoC) 供應商和原始設備製造商 (OEM) 若要開發內部 TEE 系統,或向第三方授權 TEE,可能會付出高昂的成本。金錢成本加上不可靠的第三方系統,會導致 Android 生態系統不穩定。我們提供 Trusty 給合作夥伴,做為可信賴且免費的開放原始碼替代方案,用於他們的受信任執行環境。Trusty 提供的透明度,是封閉原始碼系統無法提供的。
Android 支援各種 TEE 實作,因此您不必侷限於使用 Trusty。每個 TEE OS 都有其專屬的方式來部署信任的應用程式。對於信任應用程式開發人員而言,這種分散現象可能會造成問題,因為他們希望確保應用程式可在所有 Android 裝置上運作。使用 Trusty 做為標準,可協助應用程式開發人員輕鬆建立及部署應用程式,不必考量多個 TEE 系統的碎片化問題。Trusty TEE 可為開發人員和合作夥伴提供資訊公開、協作、程式碼可檢視性和簡易偵錯功能。信任的應用程式開發人員可以聚焦於常見的工具和 API,降低引入安全漏洞的風險。這些開發人員可放心開發應用程式,並在多部裝置上重複使用,而無須進一步開發。
應用程式和服務
Trusty 應用程式定義為一組二進位檔案 (可執行檔和資源檔案)、二進位資訊清單和加密編譯簽章。在執行階段,Trusty 應用程式會以 Trusty 核心的無特權模式,以獨立程序的形式運作。每個程序都會在自己的虛擬記憶體沙箱中執行,並利用 TEE 處理器的記憶體管理單元功能。硬體的版本會變更 Trusty 遵循的確切程序,但舉例來說,核心會使用以安全計時器滴答為驅動的以優先順序為準的循環式輪流調度器,排定這些程序。所有 Trusty 應用程式都會共用相同的優先順序。

圖 2. Trusty 應用程式總覽。
第三方 Trusty 應用程式
目前所有 Trusty 應用程式都是由單一廠商開發,並與 Trusty 核心映像檔一併封裝。整個映像檔會在開機期間由系統啟動載入程式簽署及驗證。Trusty 目前不支援第三方應用程式開發作業。雖然 Trusty 可用於開發新應用程式,但這項作業必須極為謹慎;每個新應用程式都會增加系統的受信任運算基礎 (TCB) 範圍。信任的應用程式可以存取裝置機密,並使用這些機密執行運算或資料轉換作業。開發可在 TEE 中執行的新應用程式,可開啟許多創新的可能性。不過,由於 TEE 的定義,這些應用程式必須附加某種信任機制,才能發布。通常,這會以數位簽章的形式呈現,而這項簽章是由應用程式執行產品的使用者信任的實體所簽署。
用途和範例
受信任的執行環境正迅速成為行動裝置的標準。使用者在日常生活中越來越仰賴行動裝置,因此對安全性的需求也持續增加。搭載 TEE 的行動裝置比沒有 TEE 的裝置更安全。
在實作 TEE 的裝置上,主處理器通常會被稱為「不受信任」,這表示它無法存取 RAM 的特定區域、硬體登錄器,以及製造商儲存機密資料 (例如特定裝置的密碼金鑰) 的一次寫入保險絲。在主處理器上執行的軟體會將需要使用機密資料的任何作業,委派給 TEE 處理器。
在 Android 生態系統中,最廣為人知的例子就是用於受保護內容的 DRM 架構。在 TEE 處理器上執行的軟體可存取解密受保護內容所需的裝置專屬金鑰。主處理器只會看到已加密的內容,可提供高層級安全性,並防範軟體攻擊。
TEE 還有許多其他用途,例如行動支付、安全銀行服務、多重驗證、裝置重設保護、重播保護的持續性儲存空間、安全的 PIN 碼和指紋處理,甚至是惡意軟體偵測。