本文對當前流行的移動終端TEE技術做簡要概述,並對一些細節展開討論。
1. 當前移動安全背景
當前移動終端面臨這嚴重的安全威脅,威脅點如下圖所示:
因此移動廠商、用戶、服務提供商等各方都對移動安全提出了強烈的需求。
2. REE介紹(Rich Execution Environment)
REE簡介
所有移動設備都支持REE
運行通用OS:Android、iOS、Linux
爲上層App提供設備的所有功能
開放的、可擴展的且通用的
在互聯互通的網絡世界中運轉
REE存在安全隱患
基於OS實現的App隔離極易被繞過;
OS代碼龐大,漏洞頻發;
OS很難被檢驗和認證;
OS可以看到App內部的所有數據;
大量的惡意代碼和高級的攻擊技術;
缺乏隔離意味着App無法安全存儲密鑰;
需要一個隔離環境操作密鑰和敏感數據.
虛擬化技術實現的隔離
多個OS執行在虛擬的處理器上
基於軟件的隔離,缺乏硬件安全性
Hypervisor可以訪問所有OS的數據:進而可以訪問所有App的數據
Hypervisor存在bugs
Malware通過控制hypervisor 竊取各種密鑰
運行性能損耗大
SE實現的安全平臺
SE具備極強的安全等級
SE向外提供的接口和功能極其有限:緩慢的串口連接、性能極低的CPU、無法處理大量數據、無UI能力
SE主要關注於保護內部密鑰
TEE+SE的方案更加有強大:強於單獨使用某一技術
3.TEE(Trusted Execution Environment)的提出
GlobalPlatform TEE 架構
TEE具備的特性
受硬件機制保護:TEE隔離於REE、只能通過特定的入口與TEE通信、並不規定某一種硬件實現方法
高性能:TEE運行時使用CPU的全部性能(獨佔)
快速通信機制:TEE可以訪問REE的內存、REE無法訪問受硬件保護的TEE內存
TEE中可以同時運行多個Trusted Application(TA)
由GlobalPlatform(GP)標準化:可在多種平臺上移植
TEE中的所有組件模塊先定義安全,再考慮性能
TEE中的可執行代碼在執行前先要被驗證(validate)
對於密鑰使用安全存儲機制:認證性、完整性和機密性
GP定義了TEE的保護輪廓(Protection Profile):定義了所需的硬件保護強度TA間相互隔離
TEE的安全設計
基本目標:
1.保護敏感數據免受REE和其他環境的惡意行爲
2.必須使用硬件機制進行保護,且該機制僅能受控於TEE保護強度:
1.對於密碼學算法,當前採用128bit的安全強度可抵禦某些基於硬件的攻擊:
1.抵禦能力不如SE
2.SoC內部無安全防護措施TEE必須被安全啓動:
1.使用片上(on-chip)資源實現完全的安全啓動流程
2.在控制權轉移過程中完成完整性的傳遞TEE提供可信存儲:
1.保護數據的認證性、機密性和完整性
2.安全防護能力等同於TEE
3.可以被存儲於非安全區域
4.必須提供某種回滾保護機制
TEE軟件架構
TEE Internal APIs
TEE Internal Core API:向上提供TrustedOS的功能、與CA通信、TA與TA通信、安全存儲、密碼學功能、時間
其他APIs:構建於Internal Core API之上,共享錯誤處理和API定義規則
私有APIs:GP未定義,無法通用,允許產品的特定差異化
啓動流程
GP標準:啓動流程只在系統啓動時執行一次、要求啓動流程至少建立一個信任根(RoT)、需要一些機制和方法去實現
一般情況下啓動基於ROM代碼:允許其他實現、依次驗證加載的代碼
一般情況下TEE首先啓動:阻止REE接口生效
系統可以實現一個啓動時的TEE(完全TEE的子集)
啓動流程1:Trusted OS首先啓動,如下圖:
啓動流程2:Trusted OS按需啓動,如下圖:
4.TEE實現:ARM TrustZone
TrustZone
爲TA提供系統硬件隔離
嵌入式安全解決方案
ARM Cortex-A系列處理器及Cortex-M微處理器
創建了一個隔離的Secure World
REE與TEE通過SMC實現切換
應用場景包括:認證,支付,內容保護
目前實現和應用TEE的主要方式