國煒 王宗岳 焦四輩 翟世俊 李喬



摘要:為了闡述移動終端上兩種用于安全應用的隔離技術TEE和虛擬化的異同,首先分析了每一種隔離技術的框架和系統原理,隨后通過分析這兩種隔離技術在安全框架、SoC實現、生態維護、應用場景方面的差異,總結了在實際移動終端安全方案的設計中應考慮的因素。
關鍵詞:移動終端 安全隔離 可信執行環境 虛擬化
1 引言
隨著移動應用、移動終端操作系統、集成電路等技術領域的飛快發展,移動智能終端的存儲、計算、通信等能力的迅速提升,其已不再局限于通信和娛樂等領域,已經廣泛應用于移動辦公、金融支付等與人們工作和生活密切相關的眾多領域。移動智能終端為了追求種類豐富的應用和機制的用戶體驗,通常搭載開放的操作系統。但是,開發的系統容易引入系統漏洞和惡意病毒,導致金融風險、個人及企業信息泄露等安全問題。
為了打造更安全的移動智能終端,學術及產業界相繼提出了應用、操作系統、硬件等層面的隔離技術及方案,確保移動終端數據和應用的安全性。因此近幾年,TEE(Trusted Execution Environment,可信執行環境)和移動終端虛擬化技術被廣泛地涉及,然而就應用模式和安全要求來說,TEE和虛擬化技術有著本質的不同。本文將從應用模式額安全要求兩個維度來闡述這兩種技術的共同點與差異。
2 TEE
2.1 TEE的產生
TEE作為一種移動安全技術,由標準化組織GlobalPlatform開發并應用于移動安全應用中。它為實現智能終端安全目標和產業利益相關方的需求提供了較佳的解決方案,找到了終端開放性與安全性之間的平衡點。TEE是一種隔離的執行環境,與搭載REE(Rich Execution Environment,通用的操作系統)一同運行,其安全水平高于REE,足以滿足大多數移動用戶的安全需求。搭載TEE的智能終端在提供豐富應用的同時,能夠滿足金融支付、隱私保護、數字版權保護等應用的高安全需求,得到了用戶和智能終端廠商、服務提供商的廣泛認可。
TTE提供了硬件芯片、操作系統、應用軟件三個層面的隔離,來保護用戶的敏感數據與敏感操作。在硬件芯片層面上,TEE使用的CPU、內存和存儲空間與REE完全隔離,REE無法直接訪問TEE硬件資源。在操作系統層面上,TEE內搭載獨立的安全操作系統,用于實現密碼運算、密鑰管理、安全存儲、安全時鐘、安全用戶接口等安全功能,保護用戶的敏感操作。在應用層面上,應用軟件被分為安全部分和非安全部分,REE用于實現圖形界面、音效等非安全部分;而TEE用于實現身份認證、加密存儲等安全部分,REE下的應用只能通過調用TEE客戶端API接口與TEE中的可信應用進行交互,訪問TEE操作系統中的安全資源和安全服務,在未授權訪問的情況下,REE中的應用不能訪問TEE的任何資源。
2.2 TEE的軟件安全架構
TEE的軟件安全架構如圖1所示[2],由兩個分離的部件集組成:第一部分是REE端客戶端應用和API,其中API包含TEE功能API和TEE客戶端API,客戶端應用使用TEE客戶端API接入到右側的可信應用提供的安全服務。REE通信代理提供REE和TEE之間的安全通道;第二部分是TEE端的可信應用、可信操作系統(包含TEE通信代理、可信核框架、可信功能、以及可信內核)與可信外圍設備(包括可信用戶界面、安全元件、存儲空間等)。
運行在TEE內的可信應用使用TEE內部API訪問TEE內的通用的安全功能。可信核框架為可信應用提供類似操作系統的功能,可信功能為應用開發者提供必要的支持能力。
2.3 TEE的安全屬性
(1)基于硬件隔離機制的平臺封閉性
可信執行環境提供基于硬件隔離的安全執行區域來保護數據安全和程序正確執行,實現TEE需要將設備的硬件和軟件資源全部劃分成安全區域和非安全區域,兩個區域具有獨立的系統資源,包括寄存器、物理內存和外設,不能隨意進行數據交換。安全區域中的代碼和資源受到嚴格的訪問控制策略保護,非安全區域的進程禁止訪問安全區域,以保證存儲在安全區域的資源不被非法訪問或竊取;安全區域用于實現TEE,運行安全操作系統、存儲密鑰及執行安全敏感的任務,保證了TEE平臺的封閉性,能夠有效減少系統漏洞的披露、外界的攻擊和病毒的入侵。
(2)基于信任鏈機制的平臺完整性
為了保證整個系統的安全,TEE從系統引導啟動開始逐步驗證,保證TEE平臺的完整性。設備上電復位后,加載ROM中的安全引導程序,并利用根密鑰驗證其完整性。然后,該引導程序進入TEE初始化階段并啟動安全操作系統,逐級核查安全操作系統啟動過程中的各個階段的關鍵代碼以保證安全操作系統的完整性,同時防止未授權或經過惡意篡改軟件的運行。安全操作系統啟動后,運行普通執行環境的引導程序并啟動普通操作系統。至此基于信任鏈完成了移動終端整個系統的安全啟動,能夠有效抵御TEE啟動過程中的非法篡改、代碼執行等惡意行為。
(3)基于安全存儲機制的平臺機密性
用戶的身份、密鑰和證書等敏感信息需要高度保護,TEE通過使用加密和完整性技術來保護安全敏感的數據和密鑰。對于安全存儲來說,最大的風險是密鑰的非安全存儲以及密鑰在使用過程中的對外暴露[3],TEE提供基于硬件隔離的安全環境來存儲和處理敏感信息,增強了密鑰等敏感信息使用的隔離性和安全性,可以有效保證敏感信息的安全存儲,防止密鑰隱私信息泄露。
2.4 基于TrustZone的TEE實現
ARM公司在2006年提出TEE概念,基于這個概念提出了硬件虛擬化技術TrustZone及相關硬件IP方案,并逐漸應用于主流的ARM架構的芯片處理器上。TrustZone技術包括ARM處理器架構以及系統架構上硬件安全體系的擴展,其目的是防范設備可能遭受的多種特定威脅[4]。目前,ARM TrustZone是在移動智能終端上構建TEE安全方案的主流技術。
TrustZone技術的關鍵是隔離,即在處理器架構上,每個物理的處理器核提供兩個虛擬核,一個是非安全核(Non-secure),另一個是安全核(Secure),同時通過使用監視模式來進行兩個虛擬核的狀態切換。TrustZone技術將所有SoC(System-on-a-Chip,片上系統)硬件資源和軟件資源進行隔離,使這些資源分別屬于由兩個狀態核所控制的執行區域中。通過TrustZone的總線硬件邏輯來可確保非安全執行內的區域組件無法訪問安全區域資源,以便在這兩個區域之間構成一道強大的隔離邊界。將敏感的數據和密鑰資源放入安全執行區域,以及在安全狀態的處理器內核中運行可信的軟件,可確保敏感資源能夠防范眾多潛在的攻擊,包括使用鍵盤或觸摸屏等輸入設備來竊取密碼等。TrustZone技術的硬件和軟件架構如圖2所示[5]。
3 虛擬化技術
3.1 概述
虛擬化是一個廣義的術語,是一個為了簡化管理,優化資源的解決方案。如同現在空曠、通透的寫字樓,整個樓層幾乎看不到墻壁,用戶可以用同樣的成本構建出更加自主適用的辦公空間,進而節省成本,發揮空間最大利用率[6]。
虛擬化技術既是使用控制程序(Control Program,也被稱為Virtual Machine Monitor或Hypervisor),隱藏特定計算平臺的實際物理特性,為用戶提供抽象的、統一的、模擬的計算環境(稱為虛擬機)。虛擬機中運行的操作系統被稱為客戶機操作系統(Guest OS),運行虛擬機監控器的操作系統被稱為主機操作系統(Host OS)[7],所以在某種意義上來說,虛擬化技術實現了某種程度的資源隔離。根據虛擬化技術所實現的隔離層次來說,可以將虛擬化技術分為軟件的虛擬化和硬件虛擬化。在軟件虛擬化技術方案中,虛擬機中的操作系統可以看成是真實操作系統下的一個應用程序,這樣,虛擬操作系統上執行的應用程序到實際真實的操作系統之間,就要比通常的真實操作系統上的應用程序多經過一個通信層。而CPU層虛擬化技術是一種硬件實現虛擬化的方案,通過特別的指令集,來使支持虛擬化方案的CPU來控制虛擬過程。通過這些特別的指令集以及CPU的虛擬化,可以很容易提高虛擬機的性能,相比軟件的虛擬化技術在性能和安全性方面得到了很大程度的提高。
本文為了將虛擬化技術與TEE做等實力的對比,將著重采用Hypervisor Type 1類型的虛擬化,這種類型是直接將虛擬化放在硬件平臺上,實現了硬件平臺上操作系統的一部分功能。而Hypervisor Type 2是將其作為宿主操作系統的一個應用程序來運行。在此種情況下,宿主操作系統直接運行在硬件上,用Hypervisor應用程序創建虛擬機,虛擬機里面運行的操作系統稱為客戶操作系統。
3.2 虛擬化技術(Type 1)架構
通過使用CPU的超級權限模式(Supervisor Mode)將控制程序(Hypervisor)與虛擬機進行隔離,同時通過控制程序所控制的MMU(Memory Management Unit,內存管理單元)將每一個虛擬機進行隔離。
圖3是兩種可能的架構圖示[8]。左邊的圖示表示了控制程序工作在管理用戶模式(Supervisor Mode),而客戶操作系統及他們的應用工作在用戶模式。右邊的圖示表示了控制程序工作在控制模式(Hypervisor Mode),控制模式較管理用戶模式具有更多的特權,它允許一個客戶操作系統工作在管理用戶模式,而它的應用工作在用戶模式,因此控制模式下保證了受來自客戶操作系統的最小的干擾。ARM Cortex A15支持控制模式,除此之外,它還具有一些擴展能力,如中斷處理、頁表管理等。
3.3 TEE和虛擬化架構
ARM Cortex A15采用硬件隔離的安全方案來同時支持TEE和虛擬化技術[9],也就是說在一套芯片核上TrustZone與控制模式(Hypervisor Mode)共存。
TrustZone:將CPU和其它硬件資源分為Non-Secure和Secure兩種狀態。Non-Secure狀態用于執行非可信的操作系統和應用程序,Secure狀態用于執行可信的操作系統和應用程序。監控模式(Monitor Mode)只存在于Secure狀態下,并且提供Non-Secure狀態和Secure狀態之間的切換,它是最高權限的處理器模式。
Hypervisor Mode:硬件隔離的控制器工作在CPU的Hypervisor Mode。相比Supervisor Mode,Hypervisor Mode具有更高的權限,這種模式僅僅工作在處理器處于Non-Secure狀態下。
在一定程度上,監控代碼可以被看作是控制代碼,它可以允許Non-Secure狀態和Secure狀態里的虛擬機任選其一,架構圖如圖4所示。
在ARM Cortex A15架構上,TEE和虛擬化都是基于硬件隔離的安全方案,這樣有效地避免了不同操作系統之間不必要的干擾。例如,TEE實現了主操作系統和安全操作系統之間通信的控制,以及安全操作系統與設備資源(鍵盤、顯示等)的控制。同樣,Hypervisor Mode也實現了不同操作系統之間信息傳遞的控制。
雖然虛擬技術和TEE具有看似相同的目的和概念,然而他們在某些方面還具有一定的差異化,以下將逐一介紹他們之間的不同點。
3.4 TEE與虛擬化技術的差異
(1)安全框架
TEE是硬件安全方案,它將安全敏感操作從REE系統中隔離出來,由一個特別的安全操作系統來執行這些安全服務功能。這些安全服務類似于DRM(Digital Rights Management,數字版權管理)和支付,被稱為可信應用TA。除此之外,TEE具備一些內置的安全功能,如安全存儲、加解密、安全數據、可信用戶接口以及與REE保持通信功能的安全通道,并且TEE僅僅伴隨著帶有安全啟動過程的平臺出現,這個安全啟動保證了TEE環境的可靠性和完整性,這些構成了整個平臺可信的基礎。
TEE環境里的所有代碼資源都是受保護的,并且對這些代碼的管理是需要一定的基于硬件控制的權限,而非軟件控制的權限。可信應用的下載和安裝也是基于一定的信任基礎上,特別對于第三方開發的可信應用,在應用下載和安裝之前,都要對該應用的來源做鑒別和認證,這樣就減少了惡意軟件、木馬程序對安全操作系統的攻擊。
相比TEE的安全功能,虛擬化技術允許在一個主機處理器上執行多個操作系統,這些操作系統雖然彼此隔離,但是并沒有使這些操作系統具有安全特性。虛擬化并沒有提供相應的接口來處理安全功能,更沒有分離出安全硬件。如果其中一個操作系統面臨攻擊,雖然其它的操作系統都是彼此間相互隔離,可這些其它的操作系統卻同樣面臨著被攻擊的危險。從將操作系統彼此隔離以便保證一些操作系統的安全角度來說,虛擬化技術突顯弱化。
(2)SoC實現
SoC實際上是一個很復雜的系統,對于ARM架構的芯片來講,TEE的實現是基于TrustZone技術,也就是說當處理器處于Secure狀態下時開始執行TEE中的安全功能。同時處理器的狀態信息會傳遞到總線以及SoC的外圍設備接口中,這樣就在給定的狀態中無形地增加了一個防火墻配置,以此來決定哪些外圍設備可以訪問,哪些不能訪問。這種在Secure狀態下的配置可以是靜態配置,也可以是動態配置,因此TEE具有一定的權限訪問系統所有外圍設備,然而REE中的操作系統或控制器只能訪問那些沒有安全標簽的資源。除此之外,硬件調試能力也可以基于CPU處于安全模式下配置,例如將對設備的調試功能在CPU處于Non-Secure模式下開啟,而在CPU處于Secure模式下關閉。
對于SoC系統,TEE具有控制所有硬件外圍設備并在CPU不同的狀態下過濾對這些外圍設備的訪問,這樣系統自己就要很清楚目前是哪一個執行環境正在訪問哪些資源。
而對于虛擬化技術來說,控制器僅僅是軟件部件,它可以直接接入外圍設備,系統自己并不感知虛擬機,因為虛擬化僅僅是用來組織運行在ARM核上的軟件,所以依靠它來打造一個完整的安全系統會非常的困難。并且,控制器必須非常小心地處理所有可能的非直接存儲訪問,這就意味著所有的總線管理者(如DMA、多媒體加速器、顯示控制器等)也必須要被虛擬化,有的時候這些僅僅被一個操作系統使用,否則操作系統會使用硬件來間接地訪問其它虛擬機的地址空間。
在ARM SoC系統上,虛擬化僅僅受限在ARM核,這樣系統其實并不感知虛擬機。明顯地,如果與DMA或者顯示控制器交互的所有交互必須經過控制器,這樣勢必會帶來性能的影響,并且大量的復雜化設計也會帶來代碼存在漏洞的風險。
(3)生態創建和良好維持
目前TEE已經大量部署,對于它所依賴的平臺完全可以做到透明化,并且TEE具有操作系統不可知性,即無論移動平臺使用的是什么操作系統,都會具有一套標準的通信接口來保證操作系統與運行在TEE中的可信應用互相通信。除此之外,從平臺的部署、平臺的認證,到業務的開發與部署,所有的環節都已就緒,這位移動行業以及應用服務提供商使用TEE技術來執行安全敏感的應用和保護敏感的信息提供了一整套成熟的技術與生態。
TEE聚焦在硬件安全特性,這些硬件特性通常前后兼容平臺版本,因此一旦TEE被移植到一個平臺,移植到這個平臺其它版本所需的工作量也會有限。
相反,移動平臺上的虛擬化產品并沒有一個標準化的生態來關注行業的安全需求。除此之外,虛擬化在以下兩個層面會更加受侵入,其一是虛擬機層面,為使操作系統在控制器上運行,需要對操作系統進行必要的移植和重編譯。其二是控制器驅動需要適應每一個新的平臺監視器版本。
(4)應用場景
TEE被設計成一個安全解決方案,因此在以下安全應用場景,TEE發揮了強大的作用[10]:
1)移動支付:涉及金融敏感性的移動支付應用,其需求等級較高的安全級別,通過TEE與安全元件的結合使用,來存取控制敏感數據。
2)數字版權管理:授權用戶接入到特定的媒體內容,它可以基于過期日期、播放次數、播放設備或者其它手段來限制用戶的接入。擁有TEE設計的移動終端將DRM敏感部件存儲在其安全的區域內,靠這些敏感部件來管理版權。
3)企業應用:可信執行環境使企業能夠讓員工遠程工作,且不必擔心安全風險。既可以讓員工使用自己的智能手機或平板電腦工作,又可以保證公司的安全資產不會冒任何丟失的風險,因為應用中的所有信息都采用安全存儲方法。
然而虛擬化技術是使多個軟件環境運行在共享的物理資源上,因此它的使用場景更適用于那些以降低成本、提高效率的應用場景中。
4 結論
由本文的分析可知,TEE是一種基于硬件隔離的安全解決方案,它一般被用來執行一些敏感的應用,如DRM、移動金融支付以及企業移動辦公。TEE成熟的產業為整個移動行業提供了一套標準的基于平臺硬件安全能力的生態圈。
虛擬化技術是在一個共享的物理資源上分離軟件集的有用的解決方案,然而,它的初衷并不是被用來執行安全服務。對虛擬化技術做一些擴展性增強,或許能夠慢慢地改善控制器方案的安全性,但是為了它能夠像TEE一樣服務于安全敏感的應用,它還需要更多的普及,以及簡化硬件訪問控制的設計實施。
參考文獻:
[1] OMTP Documents.1.1. Open Mobile Terminal Platform Advanced Trusted Environment OMTP TR1 v1.1[Z]. 2012.
[2] Global Platform Device Technology. TEE System Architecture Version 1.0[Z]. 2011.
[3] 焦四輩,楊正軍,國煒. 智能終端可信之星環境安全性分析[J]. 互聯網天地, 2016(8).
[4] ARM. ARM Security Technology[EB/OL]. (2015-03-01). http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.prd29-genc-009492c/index.html.
[5] 張大偉.郭煊.韓臻. 安全可信智能移動終端研究[J]. 中興通訊技術, 2015(5): 39-44.
[6] 數據中心. 虛擬化,虛擬化技術,虛擬化服務器,存儲虛擬化[Z]. 2016.
[7] 商慶同. 虛擬化管理平臺適配層的研究與評價[D]. 北京: 北京郵電大學, 2011.
[8] 鄧志. 處理器虛擬化技術[M]. 北京: 電子工業出版社, 2014.
[9] A Techcon. Virtual Prototyping Methodology to Boot Linux on the ARM Cortex A15[Z]. 2014.
[10] 國煒,潘娟. 移動智能終端可信環境分析[J]. 現代電信科技, 2012(12): 8-12. ★