1. 關于TrustZone
TrustZone技術是ARM公司開發的一種系統安全擴展技術。TrustZone技術的主要目標是保證嵌入式系統的安全,防止系統中的敏感數據發生安全泄漏或者系統中的關鍵功能遭到惡意程序的攻擊。TrustZone的技術架構如下圖所示:
TrustZone通過軟硬結合的方式對整個系統進行了資源劃分,并將其中一部分劃為安全域,另一部分劃為普通域。安全域為整個系統提供相應的安全服務,既可以僅運行一個安全服務,也可以運行一個完整的操作系統;普通域則是一個傳統的通用操作系統。兩個執行區域之間相互獨立,一般地,二者的系統運行時均不會受到對方的影響。
為確保系統內安全域和普通域之間的獨立性,安全域中的敏感數據由其內部設備進行管理。支持TrustZone技術的系統在其安全域和普通域中各自擁有獨立的地址映射表,使得兩個執行區域內的地址轉換完全獨立,從而杜絕了安全域在地址轉換過程中受到攻擊的可能性。
1.1 TrustZone 的CPU架構
ARM處理器在實現TrustZone技術時通常會被劃分為兩個虛擬內核,稱之為普通態和安全態,分別負責運行系統中普通域和安全域內的任務。
如上圖所示,以ARMv8為例,系統處于普通態時,EL0中一般執行普通的用戶程序;EL1中一般運行通用操作系統內核等特權軟件;EL2用于實現虛擬化技術,一般運行支持虛擬化技術的相關代碼。出于系統安全考慮,普通域內不存在EL3模式。當系統處于安全態時,EL0中通常運行如加密、解密等安全相關的安全服務;EL1中的軟件負責為其上層應用提供支持;EL3模式具有整個系統的最高權限,一般運行系統的底層固件如用于切換執行區域的安全監控器。在安全域中,通常不存在EL2模式,但ARMv8.4發布后,開發者可以根據實際需要使用。
1.2 TrustZone 的軟件架構
安全域內的應用主要負責為系統提供具體的安全服務,如敏感數據的加解密、安全儲存等。可信內核主要用于支持上層應用的正常運行,負責處理安全域中的安全中斷、與普通域間的通信以及為上層應用提供統一的安全接口等。
普通域內用戶空間的應用通常不會感知到TrustZone的存在,系統會通過用戶空間為這些應用提供相應的接口。在執行區域間相互通信時,通常使用消息隊列等方式進行,這些數據結構所處的內存被稱為共享內存。由于安全域和普通域內的軟件都需要對共享內存中的數據進行操作,且系統處于普通態時無法獲取安全域內 的任何資源,故共享內存必須為非安全內存。
安全域內的安全服務在接收到經由可信內核處理的信息后,將處理相應請求并把結果發送到對應的共享內存,最終返回普通域。
1.3 基于TrustZone的TEE
基于TrustZone的技術特性,可信執行環境可作為一個獨立的執行環境運行在ARM處理器的安全域中,并為整個系統提供靈活的安全服務。TEE標準的系統架構如下圖所示。
其中可信執行環境由可信操作系統(Trusted OS,TOS)、可信應用(Trusted Application,TA)組成。TOS負責管理TEE內的軟硬件資源以及為TA提供其運行需要的資源和接口。TA則負責為REE內的程序提供具體的安全服務。在TEE內部,TA之間也是相互獨立的,除非通過特殊的API接口,否則它們無法直接訪問其它TA內的資源。
2. 關于雙操作系統
為同時保證系統的功能性及實時性的需求,將實時系統與非實時系統整合在同一硬件平臺上可以組成雙操作系統架構。在該架構中,實時系統負責處理實時任務及一些安全相關的任務,非實時系統負責處理功能相對復雜但實時性要求較低的非關鍵任務。雙操作系統架構的性能取決于多個指標如復雜度、獨立性和實時響應時間等。這些指標之間往往相互矛盾,很難達到完美。
雙操作系統的實現同樣有兩種形式,一種是雙內核操作系統,另一種基于虛擬化技術。
2.1 雙內核系統
雙內核系統將一個小的實時操作系統(RTOS)內核置于通用操作系統(GPOS)的底層,并把GPOS 作為該系統內的一個實時任務運行。
雙內核系統具有較低的運行開銷且不需要任何硬件的額外支持,但是該架構需要大幅修改GPOS的內核代碼,顯著降低了系統的靈活性。而且,雙內核系統中RTOS和GPOS間的獨立性較差,當GPOS遭到惡意攻擊或其本身運行發生錯誤時,RTOS內的高關鍵度任務也會因此而無法正常運行。
2.2 虛擬化雙系統
虛擬化技術將RTOS和GPOS作為兩個虛擬機同時運行在同一硬件平臺上,兩個虛擬機由虛擬機管理器(Hypervisor)負責管理。
虛擬化使得操作系統之間具有較好的獨立性,操作系統的數量也不僅限于GPOS和RTOS兩個,同時,所有上層的操作系統均不需要做任何修改,具有良好的靈活性。但是該技術會為整個系統帶來較大的額外開銷,降低了RTOS和GPOS的性能,同時虛擬機管理器必須重新設計以滿足系統實時性的要求。
3. 雙操作系統支持TrustZone
利用TrustZone技術,可以在安全域內運行嵌入式實時操作系統,負責處理關鍵度較高的實時任務,普通域內運行Linux內核,負責處理關鍵度較低的通用任務。若普通域內的相關任務不需要和安全域相互通信,則Linux內核僅需要做極少量的修改,且在運行過程中將無法感知到安全域的存在,其內部程序也無法訪問安全域內的任何資源,保證了安全域的獨立性。若普通域中有程序需要使用安全域內提供的系統服務,可在Linux內核中添 加TrustZone驅動,該驅動將負責通過安全監控器與安全域間傳遞數據,普通域的用戶層通常還需添加TrustZone相關的庫,用于為用戶程序提供TrustZone相關的API接口。
其中,安全監控器在系統中主要負責執行區域間的切換,具體包括:
(1)響應兩個執行區域的指令。
(2)在通用操作系統運行期間負責響應安全中斷,并將中斷交由安全域中實時操作系統的中斷處理程序處理。
(3)當發生執行區域間的切換時,負責保存并恢復相關上下文等具體的切換工作。
3.1 中斷處理機制
系統將所有中斷劃分為安全中斷和非安全中斷,其中非安全中斷由普通域的Linux負責處理,安全中斷則由TrustZone 中的RTOS負責處理。
若安全域產生了非安全中斷,為保證當前安全域內運行的關鍵任務可以正確執行,系統將暫時忽略該中斷,也就是說,RTOS運行時,IRQ中斷會一直處于屏蔽狀態,待關鍵任務執行完畢,系統切換至普通域后,該中斷才會由Linux負責處理。若普通域產生了安全中斷,為確保安全域內關鍵任務的實時響應能力,系統將立刻通過安全監控器將系統切換至安全域處理中斷。
3.2 調度策略
雙操作系統中的調度算法需要建立合適的任務模型。為了判斷系統中相應任務集的可調度性,一般需要計算所有任務的最壞響應時間。在確定了任務響應時間的分析方法后,需要一個算法為系統內所有任務分配各自的優先級。完成優先級排序后,將根據該優先級序列調度任務集中的任務運行。
一般地,可以采用兩級調度策略,第一級是兩個操作系統間的調度,由RTOS負責,采用固定優先級與時間片輪轉相結合的調度策略。為使RTOS內的調度器可以調度Linux的運行,RTOS內部始終存在兩個區域切換任務。當RTOS調度到區域切換任務時,將通過相應接口切換至Linux中運行。其中,一個任務作為RTOS的空閑任務運行;另一個任務用于降低Linux內核的響應時間,提高用戶的使用體驗,減小對其性能的影響。
4.小結
如果通過TrustZone 技術來實現TEE以支持隱私計算,那么,雙操作系統可能是一個潛在的解決方案,同樣地要處理諸如中斷和調度等問題,或許,可以看作是分布式操作系統的一個特例。
審核編輯:劉清
-
轉換器
+關注
關注
27文章
8742瀏覽量
147771 -
ARM處理器
+關注
關注
6文章
361瀏覽量
41877 -
RTOS
+關注
關注
22文章
819瀏覽量
119828 -
虛擬機
+關注
關注
1文章
931瀏覽量
28365 -
LINUX內核
+關注
關注
1文章
316瀏覽量
21704
原文標題:隱私計算之TEE的雙操作系統支撐
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論