- 手機安全和可信應用開發指南:TrustZone與OP-TEE技術詳解
- 帥峰云 黃騰 宋洋
- 3204字
- 2019-01-03 15:01:34
第一篇 基礎技術篇
第1章 可信執行環境
1.1 系統存在的安全問題
隨著移動通信和互聯網技術的飛速發展,智能設備在各個領域扮演著越來越重要的角色。據統計,在2017年,中國使用智能手機上網的用戶數已達6億之多。此外,無人駕駛、物聯網、網絡電視等也都與智能設備相關,或者本身就是智能設備,它們都會用到操作系統。然而由于一些黑客能夠破解智能設備的root權限,進而盜取用戶數據或其他關鍵信息,造成用戶數據的泄露或濫用。其次,如果用戶的車載系統被黑客獲取控制權限,其人身安全將無從保障。因此手機互聯網領域、電視領域、物聯網領域以及車載領域的安全越來越顯得重要。
再者,智能設備上各種應用不斷涌現,若開發人員在開發這些應用時沒有針對安全進行加固保護,則黑客可能會利用這些應用本身固有的安全漏洞獲取智能設備操系統的root權限,輕松截獲用戶的敏感數據。鑒于此,如何保障智能設備的安全變得越來越重要。
那么,如何消除甚至杜絕這類威脅呢?除了提高系統被破解的難度之外,最好還要在系統中提供一個相對可信賴的運行環境,使用戶的關鍵數據或應用在這個相對可信賴的環境中使用和運行。這樣一來,即便系統被攻破,入侵者也無法直接獲取用戶的重要信息,用戶的信息安全也就實現了,這就是可信執行環境(Trusted Execution Environment, TEE)的主要作用和理念。
1.2 TEE如何保護數據安全
為了給移動設備提供一個安全的運行環境,ARM從ARMv6的架構開始引入了TrustZone技術。TrustZone技術將中央處理器(Central Processing Unit, CPU)的工作狀態分為了正常世界狀態(Normal World Status, NWS)和安全世界狀態(Secure World Status, SWS)。支持TrustZone技術的芯片提供了對外圍硬件資源的硬件級別的保護和安全隔離。當CPU處于正常世界狀態時,任何應用都無法訪問安全硬件設備,也無法訪問屬于安全世界狀態下的內存、緩存(Cache)以及其他外圍安全硬件設備。
TEE基于TrustZone技術提供可信運行環境,還為開發人員提供了應用程序編程接口(Application Programming Interface, API),以方便他們開發實際應用程序。
在整個系統的軟件層面,一般的操作系統(如Linux、Android、Windows等)以及應用運行在正常世界狀態中,TEE運行在安全世界狀態中,正常世界狀態內的開發資源相對于安全世界狀態較為豐富,因此通常稱運行在正常世界狀態中的環境為豐富執行環境(Rich Execution Environment, REE),而可信任的操作系統以及上層的可信應用(Trusted Application, TA)運行于安全世界狀態,運行在安全世界狀態中的系統就是前文提到的TEE。
對CPU的工作狀態區分之后,處于正常世界狀態中的Linux即使被root也無法訪問安全世界狀態中的任何資源,包括操作安全設備、訪問安全內存數據、獲取緩存數據等。這很像一個保險箱,不管保險箱的外在環境是否安全,其內部的物件都有足夠的安全性。這是因為CPU在訪問安全設備或者安全內存地址空間時,芯片級別的安全擴展組件會去校驗CPU發送的訪問請求的安全狀態讀寫信號位(Non-secure bit, NS bit)是0還是1,以此來判定當前CPU發送的資源訪問請求是安全請求還是非安全請求。而處于非安全狀態的CPU將訪問指令發送到系統總線上時,其訪問請求的安全狀態讀寫信號位都會被強制設置成1,表示當前CPU的訪問請求為非安全請求。而非安全請求試圖去訪問安全資源時會被安全擴展組件認為是非法訪問的,于是就禁止其訪問安全資源,因此該CPU訪問請求的返回結果要么是訪問失敗,要么就是返回無效結果,這也就實現了對系統資源硬件級別的安全隔離和保護。
在真實環境中,可以將用戶的敏感數據保存到TEE中,并由可信應用(Trusted Application, TA)使用重要算法和處理邏輯來完成對數據的處理。當需要使用用戶的敏感數據做身份驗證時,則通過在REE側定義具體的請求編號(IDentity, ID)從TEE側獲取驗證結果。驗證的整個過程中用戶的敏感數據始終處于TEE中,REE側無法查看到任何TEE中的數據。對于REE而言,TEE中的TA相當于一個黑盒,只會接受有限且提前定義好的合法調用,而至于這些合法調用到底是什么作用,會使用哪些數據,做哪些操作在REE側是無法知曉的。如果在REE側發送的調用請求是非法請求,TEE內的TA是不會有任何的響應或是僅返回錯誤代碼,并不會暴露任何數據給REE側。
1.3 現有TEE解決方案
TEE是一套完整的安全解決方案,主要包含正常世界狀態的客戶端應用(Client Application, CA)、安全世界狀態的可信應用,可信硬件驅動(Secure Driver, SD)以及可信內核系統(Trusted Execution Environment Operation System, TEE OS),其系統配置、內部邏輯、安全設備和安全資源的劃分是與CPU的集成電路(Integrated Circuit, IC)設計緊密掛鉤的,使用ARM架構設計的不同CPU, TEE的配置完全不一樣。國內外針對不同領域的CPU也具有不同的TEE解決方案。
國內外各種TEE解決方案一般都遵循GP(Global Platform)規范進行開發并實現相同的API。GP規范規定了TEE解決方案的架構以及供TA開發使用的API原型,開發者可以使用這些規定的API開發實際的TA并能使其正常運行于不同的TEE解決方案中。
1.3.1 智能手機領域的TEE
智能手機領域的芯片廠商眾多,國外有高通(Qualcomm)、三星(Samsung)、LG,國內有展訊、聯發科(MediaTek)、威盛電子(VIA)、華為海思(Hisilicon)等,目前手機廠商和芯片廠商支持的TEE解決關系如圖1-1所示。

圖1-1 TEE解決方案關系
各家TEE解決方案的內部操作系統的邏輯會不一樣,但都能提供GP規范規定的API,對于二級廠商或TA開發人員來說接口都是統一的。這些TEE解決方案在智能手機領域主要用于實現在線支付(如微信支付、支付寶支付)、數字版權保護(DRM、Winevine Level 1、China DRM)、用戶數據安全保護、安全存儲、指紋識別、虹膜識別、人臉識別等其他安全需求。這樣可以降低用戶手機在被非法root之后帶來的威脅。
Google規定在Android M之后所有的Android設備在使用指紋數據時都需要用TEE來進行保護,否則無法通過Google的CTS認證授權,另外Android也建議使用硬件Keymaster和gatekeeper來強化系統安全性。
1.3.2 智能電視領域的TEE
當前的智能電視領域大多是使用Android系統來實現的,為保護二級廠商的視頻源數據以及各廠家用戶會員權益不被盜取,需要使用TEE來實現數字版權保護、會員鑒權、用戶賬號信息保護等安全功能,而TEE方案一般都是由電視芯片廠商提供的,且所有的TEE源代碼都不對外公開,即使是二級廠商也無法獲取到TEE的源代碼。在我國的智能電視領域,智能電視芯片主要有兩家:星辰半導體(Mstar)和華為海思,兩家廠商使用的TEE方案都不一樣。
Mstar早期的TEE方案是在CPU的一個類似于單片機的核上運行Nuttx系統作為TEE OS來實現TEE方案的,但最新的Mstar芯片已經改用OP-TEE方案來實現TEE解決方案。
華為海思的安全操作系統(Secure Operating System, Secure OS)是按照GP規范自主研發的TEE解決方案,其手機芯片和智能電視芯片都是使用這個TEE方案。華為海思的TEE增加了權限校驗功能(類似于白名單機制),即在使用華為海思的TEE方案提供的API實現特定安全功能的TA時,需要將調用該TA對應的CA接口的進程或者服務的相關信息提前注冊到TEE后方能正常使用,否則會導致調用失敗。
1.3.3 IoT領域及其他領域的TEE
物聯網(Internet of Thing, IoT)領域和車載系統領域將會是未來TEE方案使用的另外一個重要方向,大疆無人機已經使用TEE方案來保護無人機用戶的私人數據、航拍數據以及關鍵的飛控算法。ARM的M系列也開始支持TrustZone技術,如何針對資源受限的IoT設備實現TEE也是未來TEE的重要發展方向之一。
而在車載領域NXP芯片已經集成OP-TEE作為TEE方案,MediaTek的車載芯片也已集成了Trustonic的TEE方案,相信在車載系統領域TEE也將漸漸普及。
1.4 為什么選擇OP-TEE
本書主要是介紹OP-TEE的實現原理,OP-TEE是由非營利的開源軟件工程公司Linaro開發的,從git上可以獲取OP-TEE的所有源代碼,且OP-TEE支持的芯片也越來越多,相信未來OP-TEE將有可能是TEE領域的Linux,并得到更加廣泛的運用。
OP-TEE是按照GP規范開發的,支持QEMU、Hikey(Linaro推廣的96Board系列平臺之一,使用Hisilicon處理器)以及其他通用的ARMv7/ARMv8平臺,開發環境搭建方便,便于開發者開發自有的上層可信應用,且OP-TEE提供了完整的軟件開發工具包(Software Development Kit, SDK),方便編譯TA和CA。OP-TEE遵循GP規范,支持各種加解密和電子簽名驗簽算法以便實現DRM、在線支付、指紋和虹膜識別功能。OP-TEE也支持在芯片中集成第三方的硬件加解密算法。除此之外,在IoT和車載芯片領域也大都使用OP-TEE作為TEE解決方案。
OP-TEE由Linaro組織負責維護,安全漏洞補丁更新和代碼迭代速度較快,系統的健壯性也越來越好,所以利用OP-TEE來研究TrustZone技術的實現并開發TA和CA將會是一個很好的選擇。
本書涉及的內核源代碼使用的是OP-TEE 2.4版本,書中所有的示例都在最新版本中測試通過。
- Learning Apex Programming
- CockroachDB權威指南
- Twilio Best Practices
- CentOS 7 Linux Server Cookbook(Second Edition)
- PostgreSQL技術內幕:事務處理深度探索
- JavaScript前端開發與實例教程(微課視頻版)
- 區塊鏈:以太坊DApp開發實戰
- Eclipse Plug-in Development:Beginner's Guide(Second Edition)
- 重學Java設計模式
- Scratch·愛編程的藝術家
- 零基礎學C語言程序設計
- Mastering Adobe Captivate 7
- Python商務數據分析(微課版)
- Angular Design Patterns
- C#面向對象程序設計(第2版)