可信任執行環境 TEE(Trusted Execution Environment) 頂 轉

可信任 (Trusty) 是一套支持可信任執行環境的軟件組件(TEE)。TEE 可在移動設備運行。

Trusty 包括幾個部分:

安全操作系統。一個運行在處理器上的安全操作系統 (Trusty OS)用以提供 TEE 環境 驅動程序。爲Android linux kernel 服務的驅動程序,以便於運行在安全操作系統的 應用程序進行通信 一組運行庫。爲Android 系統軟件和運行在安全操作系統的應用程序提供通信便利。 安全操作系統依賴於內核驅動程序。 任何 TEE OS都可以用來進行 TEE 實現。換言之, TEE 是一個規範。具體的實現可以不同。 TEE 處理器通常是系統中一個獨立的處理器,或者是主處理器的一個虛擬化實例。TEE 處理器利用硬件支持的內存和 I/O 保護機制,實現和系統其他部分的隔離。

現代移動設備中,TEE 處理器方式已經被廣泛使用。一般而言,移動設備中的主處理器被認爲是“不安全的 (untrusted) ”, 並且不能訪問某些特定的內存、硬件寄存器、OTP/Fuse等。OTP/Fuse 硬件組件一般可以用於保存設備相關的加密密鑰等信息)。運行在主處理器上面的軟件把需要訪問祕密數據的任何操作都委託給 TEE 處理器代理操作。

一個典型的並被廣泛使用的 TEE 例子就是 版權管理機制 DRM。主處理器只能看見加密後的內容;TEE 處理器則可以訪問解密密文所需要的設備特定密鑰。此模型提供了一個可防範軟件攻擊的高級別安全保護機制。

除此以外,還有許多利用了 TEE 的場景案例:

移動支付 / mobile payments 銀行安全 / secure banking 磁盤加密 / full-disk encryption 多級授權 / multi-factor authentication 重置保護 / device reset protection 無線顯示 / wireless display, screen cast 安全密碼 / secure PIN 指紋識別 / fingerprint recognition 木馬檢測 / malware detection Trusty 提供API, 可用於兩類應用程序的開發:

運行在 TEE 處理器的可信任應用程序或服務 普通/未信任應用程序,其運行在主處理器並且利用 TEE 處理器提供的服務 運行在主處理器的程序利用 Trusty API 連接受信任的應用程序以交換任意信息, 彷彿通過基於 IP 的網絡服務一樣。應用程序自己定義信息交換的格式和語法。 信息的可靠傳輸是通過 Trusty 基礎架構來保證的,該信息傳輸是完全異步的。

受信任程序在 TEE 操作系統內核中以隔離的進程方式運行。每個進程運行在自身的 虛擬內存沙盒中,該沙盒利用 TEE 處理器的 MMU 機制實現。內核被一個受保護的 時鐘節拍器驅動, 採用基於優先級的,循環算法調度機制。在當前的安卓 Trusty 實 現中,所有進程共享同一優先級。

所有 Trusty 應用程序都是單線程。目前不支持多線程。 Trusty 應用程序一旦被加載,則僅初始化一次並常駐內存,直到系統再次重啓。 Trusty 應用程序不支持動態加載和動態卸載。 Trusty 應用程序被設計成事件驅動型的服務器模式(event-driven server),它等待 來自其他 TEE 處理器程序或者主處理器程序的命令。受信任程序也可以被設計成 其他服務器程序的客戶端。

當前所有Trusty 程序都是由同一組織開發並同 Trusty 內核映像進行打包,產生一個 完整的簽名軟件映像。在開機的時候,bootloader 會進行簽名驗證。目前 Trusty 尚 不支持第三方開發應用程序。

儘管 Trusty OS 支持新應用程序的開發,但是需要極度小心此類開發。每個新應用程序 都將增大系統受信任計算環境 (Trusted Computing Base) 的區域。受信任程序可以訪問 設備祕密信息並且執行相關的計算和數據傳輸。

相關文檔:https://source.android.com/security/trusty/trusty-ref

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章