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