1. TrustZone介紹
1.1 安全背景
在介紹 TrustZone 前有必要簡(jiǎn)單回顧下目前的一些安全手段。
CPU 通過(guò)內(nèi)存映射手段給每個(gè)進(jìn)程營(yíng)造一個(gè)單獨(dú)的地址空間來(lái)隔離多個(gè)進(jìn)程的代碼和數(shù)據(jù),通過(guò)內(nèi)核空間和用戶空間不同的特權(quán)級(jí)來(lái)隔離操作系統(tǒng)和用戶進(jìn)程的代碼和數(shù)據(jù)。但由于內(nèi)存中的代碼和數(shù)據(jù)都是明文,容易被同處于內(nèi)存中的其它應(yīng)用偷窺,因此出現(xiàn)了擴(kuò)展的安全模塊,應(yīng)用將加密數(shù)據(jù)送往安全模塊,由安全模塊處理完后再返回結(jié)果給相應(yīng)的應(yīng)用。
很多消費(fèi)電子設(shè)備都使用擴(kuò)展的安全模塊來(lái)確保數(shù)據(jù)安全,目前常見(jiàn)的方式有:
外部掛接硬件安全模塊
數(shù)據(jù)的處理交由外部的安全模塊實(shí)現(xiàn),這些模塊能夠保護(hù)自己的資源和密鑰等數(shù)據(jù)的安全,如 SIM 卡、各種智能卡或連接到外部的硬件加解密模塊等,但其同主芯片的通信線路暴露在外部,容易被監(jiān)聽(tīng)破解。另外,通信的速率比較低。
內(nèi)部集成硬件安全模塊
將外部安全模塊的功能集成到芯片內(nèi),因此一個(gè)芯片上至少有兩個(gè)核:一個(gè)普通核和一個(gè)安全核。優(yōu)點(diǎn)是核與核之間的通信在芯片內(nèi)部實(shí)現(xiàn),不再暴露在外面。缺點(diǎn)是核之間的通信速度仍然較低,而且單獨(dú)的安全核性能有限,還會(huì)會(huì)占用 SoC 面積,成本較高。
1.2 TrustZone 是個(gè)什么鬼?
TrustZone 是 ARM 針對(duì)消費(fèi)電子設(shè)備設(shè)計(jì)的一種硬件架構(gòu),其目的是為消費(fèi)電子產(chǎn)品構(gòu)建一個(gè)安全框架來(lái)抵御各種可能的攻擊。
TrustZone 在概念上將 SoC 的硬件和軟件資源劃分為安全(Secure World)和非安全(Normal World)兩個(gè)世界。
所有需要保密的操作在安全世界執(zhí)行(如指紋識(shí)別、密碼處理、數(shù)據(jù)加解密、安全認(rèn)證等),其余操作在非安全世界執(zhí)行(如用戶操作系統(tǒng)、各種應(yīng)用程序等),安全世界和非安全世界通過(guò)一個(gè)名為 Monitor Mode 的模式進(jìn)行轉(zhuǎn)換,如圖1:
圖1. ARM的安全世界和非安全世界
處理器架構(gòu)上,TrustZone 將每個(gè)物理核虛擬為兩個(gè)核,一個(gè)非安全核(Non-secure Core, NS Core),運(yùn)行非安全世界的代碼;和另一個(gè)安全核(Secure Core),運(yùn)行安全世界的代碼。
兩個(gè)虛擬的核以基于時(shí)間片的方式運(yùn)行,根據(jù)需要實(shí)時(shí)占用物理核,并通過(guò) Monitor Mode 在安全世界和非安全世界之間切換,類似同一CPU下的多應(yīng)用程序環(huán)境,不同的是多應(yīng)用程序環(huán)境下操作系統(tǒng)實(shí)現(xiàn)的是進(jìn)程間切換,而 Trustzone 下的 Monitor Mode 實(shí)現(xiàn)了同一 CPU 上兩個(gè)操作系統(tǒng)間的切換。
AMBA3 AXI(AMBA3Advanced eXtensible Interface)系統(tǒng)總線作為 TrustZone 的基礎(chǔ)架構(gòu)設(shè)施,提供了安全世界和非安全世界的隔離機(jī)制,確保非安全核只能訪問(wèn)非安全世界的系統(tǒng)資源,而安全核能訪問(wèn)所有資源,因此安全世界的資源不會(huì)被非安全世界(或普通世界)所訪問(wèn)。
設(shè)計(jì)上,TrustZone 并不是采用一刀切的方式讓每個(gè)芯片廠家都使用同樣的實(shí)現(xiàn)??傮w上以 AMBA3 AXI 總線為基礎(chǔ),針對(duì)不同的應(yīng)用場(chǎng)景設(shè)計(jì)了各種安全組件,芯片廠商根據(jù)具體的安全需求,選擇不同的安全組件來(lái)構(gòu)建他們的 TrustZone 實(shí)現(xiàn)。
其中主要的組件有:
必選組件
AMBA3 AXI總線,安全機(jī)制的基礎(chǔ)設(shè)施
虛擬化的ARM Core,虛擬安全和非安全核
TZPC (TrustZone Protection Controller),根據(jù)需要控制外設(shè)的安全特性
TZASC (TrustZone Address Space Controller),對(duì)內(nèi)存進(jìn)行安全和非安全區(qū)域劃分和保護(hù)
可選組件
TZMA (TrustZone Memory Adapter),片上ROM或RAM安全區(qū)域和非安全區(qū)域的劃分和保護(hù)
AXI-to-APB bridge,橋接 APB 總線,配合 TZPC 使 APB 總線外設(shè)支持 TrustZone 安全特性
除了以上列出的組件外,還有諸如 Level 2 Cache Controller, DMA Controller, Generic Interrupt Controller等。
邏輯上,安全世界中,安全系統(tǒng)的OS提供統(tǒng)一的服務(wù),針對(duì)不同的安全需求加載不同的安全應(yīng)用 TA(Trusted Application)。例如:針對(duì)某具體 DRM 的 TA,針對(duì) DTCP-IP 的 TA,針對(duì) HDCP 2.0驗(yàn)證的 TA 等。
圖2是一個(gè) ARM 官網(wǎng)對(duì) TrustZone 介紹的應(yīng)用示意圖:
基于TrustZone的應(yīng)用
圖2. 基于 TrustZone 的應(yīng)用示意圖
圖中左邊藍(lán)色部分 Rich OS Application Environment(REE)表示用戶操作環(huán)境,可以運(yùn)行各種應(yīng)用,例如電視或手機(jī)的用戶操作系統(tǒng),圖中右邊綠色部分 Trusted Execution Envrionment(TEE)表示系統(tǒng)的安全環(huán)境,運(yùn)行 Trusted OS,在此基礎(chǔ)上執(zhí)行可信任應(yīng)用,包括身份驗(yàn)證、授權(quán)管理、DRM認(rèn)證等,這部分隱藏在用戶界面背后,獨(dú)立于用戶操作環(huán)境,為用戶操作環(huán)境提供安全服務(wù)。
可信執(zhí)行環(huán)境(TEE, Trusted Execution Environment) 是 Global Platform(GP)提出的概念。對(duì)應(yīng)于 TEE 還有一個(gè) REE(Rich Execution Environment)概念,分別對(duì)應(yīng)于安全世界(Secure World)和非安全世界(Non-secure World, Normal World)。
GlobalPlatform(GP) 是跨行業(yè)的國(guó)際標(biāo)準(zhǔn)組織,致力于開(kāi)發(fā)、制定并發(fā)布安全芯片的技術(shù)標(biāo)準(zhǔn),以促進(jìn)多應(yīng)用產(chǎn)業(yè)環(huán)境的管理 及其安全、可互操作的業(yè)務(wù)部署。目標(biāo)是創(chuàng)建一個(gè)標(biāo)準(zhǔn)化的基礎(chǔ)架構(gòu), 加快安全應(yīng)用程序及其關(guān)聯(lián)資源的部署,如數(shù)據(jù)和密鑰,同時(shí)保護(hù)安全應(yīng)用程序及其關(guān)聯(lián)資源免受軟件方面的攻擊。
2. TrustZone 原理和設(shè)計(jì)
以下主要從 TrustZone 的總線設(shè)計(jì),CPU 設(shè)計(jì)(包括處理器模型、內(nèi)存模型和中斷模型)和安全隔離機(jī)制來(lái)介紹 TrustZone 的設(shè)計(jì)和工作原理。
2.1 總線設(shè)計(jì)
總線
設(shè)計(jì)上,TrustZone 在系統(tǒng)總線上針對(duì)每一個(gè)信道的讀寫(xiě)增加了一個(gè)額外的控制信號(hào)位,這個(gè)控制位叫做 Non-Secure 或者 NS 位,是 AMBA3 AXI 總線針對(duì) TrustZone 作出的最重要、最核心的擴(kuò)展設(shè)計(jì)。
這個(gè)控制信號(hào)針對(duì)讀和寫(xiě)分別叫做 ARPORT[1] 和 AWPORT[1]:
ARPROT[1]: 用于讀操作(Read transaction), 低表示 Secure, 高表示 Non-Secure
AWPROT[1]: 用于寫(xiě)操作(Write transaction), 低表示 Secure,高表示 Non-Secure
總線上的所有主設(shè)備(master)在發(fā)起新的操作(transaction)時(shí)會(huì)設(shè)置這些信號(hào),總線或從設(shè)備(slave)上解析模塊會(huì)對(duì)主設(shè)備發(fā)起的信號(hào)進(jìn)行辨識(shí),來(lái)確保主設(shè)備發(fā)起的操作在安全上沒(méi)有違規(guī)。
例如:硬件設(shè)計(jì)上,所有非安全世界的主設(shè)備(Non-Secure masters)在操作時(shí)必須將信號(hào)的NS位置高,而NS位置高又使得其無(wú)法訪問(wèn)總線上安全世界的從設(shè)備(Secure Slaves),簡(jiǎn)單來(lái)說(shuō)就是對(duì)非安全世界主設(shè)備發(fā)出的地址信號(hào)進(jìn)行解碼時(shí)在安全世界中找不到對(duì)應(yīng)的從設(shè)備,從而導(dǎo)致操作失敗。
NS控制信號(hào)在 AMBA3 AXI 總線規(guī)范中定義。可以將其看作為原有地址的擴(kuò)展位,如果原有32位尋址,增加NS可以看成是33位尋址,其中一半的32位物理尋址位于安全世界,另一半32位物理尋址位于非安全世界。
當(dāng)然,非安全世界的主設(shè)備嘗試訪問(wèn)安全世界的從設(shè)備會(huì)引發(fā)訪問(wèn)錯(cuò)誤,可能是 SLVERR(slave error)或者 DECERR(decode error),具體的錯(cuò)誤依賴于其訪問(wèn)外設(shè)的設(shè)計(jì)或系統(tǒng)總線的配置。
外設(shè)
在 TrustZone 出現(xiàn)前,ARM 的外設(shè)基于 AMBA2 APB (Advanced Peripheral Bus)總線協(xié)議,但是 APB 總線上不存在類似 AXI 總線上的 NS 控制位。
為了兼容已經(jīng)存在的 APB 總線設(shè)計(jì),AMBA3 規(guī)范中包含了 AXI-to-APB bridge 組件,這樣就確?;?AMBA2 APB 的外設(shè)同 AMBA3 AXI的系統(tǒng)兼容。AXI-to-APB bridge 負(fù)責(zé)管理 APB 總線設(shè)備的安全事宜,其會(huì)拒絕不合理的安全請(qǐng)求,保證這些請(qǐng)求不會(huì)被轉(zhuǎn)發(fā)到相應(yīng)的外設(shè)。
例如:新一代的芯片可以通過(guò)增加 AXI-to-APB bridge 組件來(lái)沿用上一代芯片的設(shè)計(jì)來(lái)使其外圍設(shè)備可以支持 TrustZone。
2.2 處理器設(shè)計(jì)
2.2.1 處理器模型
TrustZone 中,每個(gè)物理處理器核被虛擬為一個(gè)安全核(Secure)和一個(gè)非安全核(Non-Secure),安全核運(yùn)行安全世界的代碼,非安全核運(yùn)行除安全世界外的其它代碼。
由于安全世界和非安全世界的代碼采用時(shí)間片機(jī)制輪流運(yùn)行在同一個(gè)物理核上,相應(yīng)的節(jié)省了一個(gè)物理處理器核。
多核處理器上,也有建議說(shuō)讓將某一個(gè)或幾個(gè)核指定為安全專用核,只運(yùn)行安全系統(tǒng)代碼來(lái)構(gòu)建安全世界,其余核運(yùn)行非安全代碼,暫不清楚目前有哪些平臺(tái)采用這個(gè)實(shí)現(xiàn)。
圖3中,系統(tǒng)有4個(gè)物理核,每個(gè)又分為兩個(gè)虛擬核(安全核和非安全核)的情況:
圖3. 多核處理器上的安全核和非安全核
2.2.2 L1內(nèi)存模型
MMU
MMU 是一種硬件電路,它包含兩類部件,一類是分段部件,一類是分頁(yè)部件,對(duì)應(yīng)于內(nèi)存管理的分段機(jī)制和分頁(yè)機(jī)制。分段機(jī)制把一個(gè)邏輯地址轉(zhuǎn)換為線性地址;接著,分頁(yè)機(jī)制把一個(gè)線性地址轉(zhuǎn)換為物理地址。
當(dāng) CPU 訪問(wèn)一個(gè)虛擬地址時(shí),這個(gè)虛地址被送到MMU翻譯,硬件首先把它和TLB中的所有條目同時(shí)(并行地)進(jìn)行比較,如果它的虛頁(yè)號(hào)在 TLB 中,并且訪問(wèn)沒(méi)有違反保護(hù)位,它的頁(yè)面會(huì)直接從 TLB 中取出而不去訪問(wèn)頁(yè)表,從而提高地址轉(zhuǎn)換的效率。
安全世界和非安全世界都有自己的虛擬 MMU,各自管理物理地址的映射。實(shí)際上只是兩個(gè)世界都有一份 TTBR0、TTBR1、TTBCR 寄存器,因此就會(huì)對(duì)應(yīng)兩個(gè)MMU表。
盡管 MMU 有兩套,但 TBL 緩存硬件上只有一套,因此 TBL 對(duì)于兩個(gè)世界來(lái)說(shuō)是共享的,其通過(guò)NS位來(lái)標(biāo)志其每一項(xiàng)具體屬于哪一個(gè)世界。這樣在兩個(gè)世界間進(jìn)行切換時(shí)不再需要重新刷新 TLB,提高執(zhí)行效率。
對(duì)于 TLB 共享并不是硬性規(guī)定的,部分芯片在兩個(gè)世界間切換時(shí)可能通過(guò)硬件部分或全部刷新 TLB。
Cache
同 TLB 類似,硬件上兩個(gè)世界共享一套 Cache,具體的 Cache 數(shù)據(jù)屬于哪一個(gè)世界也由其 NS 位指定,在世界間切換也不需要刷新 Cache。
2.2.3 中斷模型
基于 TrustZone 的處理器有三套異常向量表:
一套用于非安全世界
一套用于安全世界
還有一套用于 Monitor 模式
與之前非 TrustZone 的處理器不同的是,這三套中斷向量表的基地址在運(yùn)行時(shí)可以通過(guò) CP15 的寄存器 VBAR(Vector Base Address Register)進(jìn)行修改。
復(fù)位時(shí),安全世界的中斷向量表由處理器的輸入信號(hào) VINITHI 決定,沒(méi)有設(shè)置時(shí)為 0x00000000,有設(shè)置時(shí)為 0xFFFF0000;非安全世界和 Monitor 模式的中斷向量表默認(rèn)沒(méi)有設(shè)置,需要通過(guò)軟件設(shè)置后才能使用。
默認(rèn)情況下,IRQ 和 FIQ 異常發(fā)生后系統(tǒng)直接進(jìn)入 Monitor 模式,由于 IRQ 是絕大多數(shù)環(huán)境下最常見(jiàn)的中斷源,因此 ARM 建議配置 IRQ 作為非安全世界的中斷源,F(xiàn)IQ 作為安全世界的中斷源。這樣配置有兩個(gè)優(yōu)點(diǎn):
當(dāng)處理器運(yùn)行在非安全世界時(shí),IRQ 直接進(jìn)入非安全世界的處理函數(shù);如果處理器運(yùn)行在安全世界,當(dāng) IRQ 發(fā)生時(shí),會(huì)先進(jìn)入到 Monitor 模式,然后跳到非安全世界的 IRQ 處理函數(shù)執(zhí)行
僅將 FIQ 配置為安全世界的中斷源,而 IRQ 保持不變,現(xiàn)有代碼僅需做少量修改就可以滿足
將 IRQ 設(shè)置為非安全世界的中斷源時(shí)系統(tǒng) IRQ 的切換見(jiàn)圖4:
圖4. IRQ作為非安全世界的中斷源
2.2.4 系統(tǒng)模式切換
基于 TrustZone 的系統(tǒng)有三種狀態(tài),安全世界、非安全世界和用于二者切換的 Monitor Mode。
協(xié)處理器 CP15 的寄存器 SCR(Secure Configuration Register)有一個(gè) NS 位用于指示當(dāng)前處理器位于哪一個(gè)世界,該寄存器在非安全世界是不能訪問(wèn)的。
當(dāng) CPU 處于 Monitor Mode 時(shí),無(wú)論 NS 位是 0 還是 1,處理器都是在安全世界運(yùn)行代碼。
因此 Monitor Mode 下總是安全世界,但如果此時(shí) NS 為 1,訪問(wèn) CP15 的其它寄存器獲取到的是其在非安全世界的值。
非安全世界到Monitor模式的切換
處理器從非安全世界進(jìn)入 Monitor Mode 的操作由系統(tǒng)嚴(yán)格控制,而且所有這些操作在 Monitor Mode 看來(lái)都屬于異常。從非安全世界到 Monitor Mode 的操作可通過(guò)以下方式觸發(fā):
軟件執(zhí)行 SMC (Secure Monitor Call)指令
硬件異常機(jī)制的一個(gè)子集(換而言之,并非所有硬件異常都可以觸發(fā)進(jìn)入 Monitor Mode),包括:
IRQ
FIQ
external Data Abort
external Prefetch Abort
Monitor Mode
Monitor Mode 內(nèi)執(zhí)行的代碼依賴于具體的實(shí)現(xiàn),其功能類似于進(jìn)程切換,不同的是這里是不同模式間 CPU 狀態(tài)切換。
軟件在 Monitor Mode 下先保存當(dāng)前世界的狀態(tài),然后恢復(fù)下一個(gè)世界的狀態(tài)。操作完成后以從異常返回的方式開(kāi)始運(yùn)行下一個(gè)世界的代碼。
為什么安全模式和非安全模式不能直接切換?
非安全世界無(wú)權(quán)訪問(wèn) CP15 的 SCR 寄存器,所以無(wú)法通過(guò)設(shè)置NS來(lái)直接切換到安全世界,只能先轉(zhuǎn)換到 Monitor Mode,再到安全世界。
如果軟件運(yùn)行在安全世界(非Monitor Mode)下,通過(guò)將 CP15 的 NS 位設(shè)置 1,安全世界可以直接跳轉(zhuǎn)到非安全世界,由于此時(shí) CPU 的流水線和寄存器還遺留了安全世界的數(shù)據(jù)和設(shè)置,非安全模式下的應(yīng)用可以獲取到這些數(shù)據(jù),會(huì)有極大的安全風(fēng)險(xiǎn)。因此,只建議在 Monitor Mode 下通過(guò)設(shè)置 NS 位來(lái)切換到非安全模式。
綜上,安全世界和非安全世界不存在直接的切換,所有切換操作都通過(guò) Monitor Mode 來(lái)執(zhí)行。
圖5展現(xiàn)了安全世界和非安全世界之間的切換方式:
圖5. 安全世界和非安全世界之間的切換
2.3 隔離機(jī)制
除了 CPU 執(zhí)行時(shí)實(shí)行安全世界和非安全世界的隔離外,AMBA3 AXI 總線提供了外設(shè)隔離的基礎(chǔ)。
2.3.1 內(nèi)存隔離機(jī)制
這里的內(nèi)存指外部的 DDR 和片上的 ROM 以及 SRAM,其隔離和保護(hù)通過(guò)總線組件 TZASC 和 TZMA 的設(shè)置來(lái)實(shí)現(xiàn)。
TZASC (TrustZone Address Space Controller)
TZASC 可以把外部 DDR 分成多個(gè)區(qū)域,每個(gè)區(qū)域可以單獨(dú)配置為安全或非安全區(qū)域,非安全世界的代碼和應(yīng)用只能訪問(wèn)非安全區(qū)域。TZASC 只能用于內(nèi)存設(shè)備,不適合用于配置塊設(shè)備,如 Nand Flash。
TZMA (TrustZone Memory Adapter)
TZMA 可以把片上 ROM 和 SRAM 隔離出安全和非安全區(qū)域。TZMA 最大可以將片上存儲(chǔ)的低 2MB 配置為安全區(qū)域,其余部分配置為非安全區(qū)域。大小劃分上,片上安全區(qū)域可以在芯片出廠前設(shè)置為固定大小,或運(yùn)行時(shí)通過(guò) TZPC 動(dòng)態(tài)配置。TZMA 使用上有些限制,其不適用于外部?jī)?nèi)存劃分,而且也只能配置一個(gè)安全區(qū)域。
2.3.2 外設(shè)隔離機(jī)制
外設(shè)上,基于 APB 總線的設(shè)備不支持 AXI 總線的 NS 控制信號(hào),所以 AXI 到 APB 總線需要 AXI-to-APB bridge 設(shè)備連接,除此之外,還需要TZPC (TrustZone Protection Controller) 來(lái)向 APB 總線上的設(shè)備提供類似 AXI 上的 NS 控制信號(hào)。
由于 TZPC 可以在運(yùn)行時(shí)動(dòng)態(tài)設(shè)置,這就決定了外設(shè)的安全特性是動(dòng)態(tài)變化的,例如鍵盤平時(shí)可以作為非安全的輸入設(shè)備,在輸入密碼時(shí)可以配置為安全設(shè)備,只允許安全世界訪問(wèn)。
2.3.3 隔離機(jī)制示意圖
整個(gè)系統(tǒng)內(nèi)存和外設(shè)隔離機(jī)制示意圖見(jiàn)圖6.
圖6. 系統(tǒng)內(nèi)存和外設(shè)隔離機(jī)制示意圖
此圖來(lái)源于網(wǎng)上,實(shí)際上 TZPC 還連接到片內(nèi)的 ROM/RAM 設(shè)備上,用于配置片上存儲(chǔ)的安全區(qū)域。
2.4 安全啟動(dòng)
AMBA3 AXI 總線機(jī)制隔離出安全世界和非安全世界,但這是系統(tǒng)啟動(dòng)之后的事情。如何確保系統(tǒng)本身是安全的呢?這就涉及到系統(tǒng)啟動(dòng)的過(guò)程。
系統(tǒng)上電復(fù)位后,先從安全世界開(kāi)始執(zhí)行。安全世界會(huì)對(duì)非安全世界的 bootloader 進(jìn)行驗(yàn)證,確保非安全世界執(zhí)行的代碼經(jīng)過(guò)授權(quán)而沒(méi)有被篡改過(guò)。然后非安全世界的 bootloader 會(huì)加載非安全世界的 OS,完成整個(gè)系統(tǒng)的啟動(dòng)。
在非安全系統(tǒng)的 bootloader 加載 OS 時(shí),仍然需要安全世界對(duì) OS 的代碼進(jìn)行驗(yàn)證,確保沒(méi)有被篡改。
圖7是典型的 TrustZone 芯片的啟動(dòng)流程:
圖7. 典型的 TruestZone 芯片啟動(dòng)流程
整個(gè)啟動(dòng)流程跟目前博通平臺(tái)的安全啟動(dòng)原理基本一致,上電后安全芯片先啟動(dòng),然后校驗(yàn)主芯片的 bootloader,接下來(lái) bootloader 提交系統(tǒng)的 OS 和文件系統(tǒng)給 BSP 進(jìn)行校驗(yàn),通過(guò)后加載主系統(tǒng),確保主系統(tǒng)是安全的。
從上電復(fù)位開(kāi)始的整個(gè)啟動(dòng)過(guò)程中,下一級(jí)的安全基于上一級(jí)的驗(yàn)證,最終依賴于芯片內(nèi)置的 OTP 和安全硬件,逐級(jí)的驗(yàn)證構(gòu)成了整個(gè)系統(tǒng)的信任鏈。信任鏈中的某一個(gè)環(huán)節(jié)被破壞,都會(huì)導(dǎo)致整個(gè)系統(tǒng)不安全。
3. 各家 TrustZone 實(shí)現(xiàn)
基于安全考慮,各家 TrustZone 都實(shí)行閉源,關(guān)于其實(shí)現(xiàn)細(xì)節(jié)的介紹都較少。
網(wǎng)上能找到少許關(guān)于高通方案上 TrustZone 的介紹:
安全世界 QSEE (Qualcomm Secure Execution Environment)
非安全世界 HLOS (High Level OS)
整個(gè)系統(tǒng)的架構(gòu)如圖8:
圖8. 高通QSEE系統(tǒng)架構(gòu)圖
4. 其它
ARMv8-A 架構(gòu)定義了四個(gè)異常等級(jí),分別為 EL0到 EL3,其中數(shù)字越大代表特權(quán)(privilege)越大:
EL0: 無(wú)特權(quán)模式(unprivileged)
EL1: 操作系統(tǒng)內(nèi)核模式(OS kernel mode)
EL2: 虛擬機(jī)監(jiān)視器模式(Hypervisor mode)
EL3: TrustZone monitor mode
TrustZone 設(shè)計(jì)的相關(guān)方
ARM 公司,定義 TrustZone 并實(shí)現(xiàn)硬件設(shè)計(jì),TEE,TZAPI等
芯片廠家,在具體芯片上實(shí)現(xiàn) TrustZone 設(shè)計(jì),包括三星、高通、MTK、TI、ST、華為等
應(yīng)用提供方,如 DRM 廠家和安全應(yīng)用開(kāi)發(fā)商,實(shí)現(xiàn) DRM、Playready、DTCP-IP 和一些其它安全應(yīng)用開(kāi)發(fā)和認(rèn)證
Trust OS
TEE 環(huán)境下也要有一個(gè)操作系統(tǒng),各家都有自己的 Trustzone 的操作系統(tǒng)。如 Trustonic、高通的 QSEE、國(guó)內(nèi)的豆莢,還有開(kāi)源的 OPTEE 和 Trusty 等。
在操作系統(tǒng)之上自然要有應(yīng)用程序,在 Trustzone 里面我們一般叫 TrustApp,當(dāng)然 TEE 里面每個(gè) TrustApp 都在一個(gè)沙盒里,互相之間是隔離的。
比如說(shuō)支付,就可以做成一個(gè) App(需要注意的是,和 Normal Worl d里面的 App 是兩個(gè)概念),這個(gè) App 簡(jiǎn)單來(lái)說(shuō)就負(fù)責(zé)用私鑰把網(wǎng)上發(fā)來(lái)的 Challenge 簽個(gè)名,而這個(gè)簽名的動(dòng)作是需要在 Secure World 里面做的,避免惡意程序竊取到私鑰來(lái)偽造簽名。
例如支付寶,其實(shí)支付寶也是只支持幾個(gè) Trust OS 的。同時(shí),支付寶還定義了一系列標(biāo)準(zhǔn),用來(lái)完成他的行為。
現(xiàn)在的 Trust OS 大都會(huì)遵循 GlobalPlatform 的規(guī)范,這個(gè)組織致力于制定統(tǒng)一的 Trust OS 的 API 的接口規(guī)范,這樣一個(gè) TrustApp 只要用 GP API,就可以方便移植到各個(gè)不同的 TEE 操作系統(tǒng)上了。
Intel 平臺(tái)的 SGX
針對(duì)可信計(jì)算,類似 ARM 的 TrustZone,Intel 也針對(duì) x86 平臺(tái)提出了自己的安全架構(gòu) SGX:
Intel Software Guard Extensions (Intel SGX)
https://software.intel.com/zh-cn/sgx-sdk
SGX 全稱 Intel Software Guard Extensions,顧名思義,其是對(duì)因特爾體系(IA)的一個(gè)擴(kuò)展,用于增強(qiáng)軟件的安全性。
這種方式并不是識(shí)別和隔離平臺(tái)上的所有惡意軟件,而是將合法軟件的安全操作封裝在一個(gè) enclave 中,保護(hù)其不受惡意軟件的攻擊,特權(quán)或者非特權(quán)的軟件都無(wú)法訪問(wèn) enclave。
也就是說(shuō),一旦軟件和數(shù)據(jù)位于 enclave 中,即便操作系統(tǒng)或者和 VMM(Hypervisor)也無(wú)法影響 enclave 里面的代碼和數(shù)據(jù)。
Enclave 的安全邊界只包含 CPU 和它自身。SGX 創(chuàng)建的 enclave 也可以理解為一個(gè)可信執(zhí)行環(huán)境 TEE。不過(guò)其與 ARM TrustZone(TZ)還是有一點(diǎn)小區(qū)別的,TZ 中通過(guò) CPU 劃分為兩個(gè)隔離環(huán)境(安全世界和正常世界),兩者之間通過(guò) SMC 指令通信;而 SGX 中一個(gè) CPU 可以運(yùn)行多個(gè)安全 enclaves,并發(fā)執(zhí)行亦可。
簡(jiǎn)單來(lái)講, Intel SGX 最關(guān)鍵的優(yōu)勢(shì)在于將程序以外的 software stack如 OS 和 BIOS 都排除在了 TCB(Trusted Computing Base)以外。換句話說(shuō),就是在容器 enclave 里的 code 只信任自己和 Intel 的 CPU。
網(wǎng)上有人是這樣對(duì)比 TrustZone 和 SGX 的:
Trustzone 默認(rèn)相信 SecureOS,安全世界。SGX 僅相信 CPU core,通過(guò) SGX 指令構(gòu)建 enclave容器。簡(jiǎn)單比喻,TEE 是個(gè)公用大保險(xiǎn)柜,什么東西都裝進(jìn)去,有漏洞的 app 可能也進(jìn)去了,而且保險(xiǎn)柜鑰匙在管理員手上,必須相信管理員。SGX 每個(gè) app 有自己的保險(xiǎn)柜,鑰匙在自己手上
SGX 要進(jìn)入工業(yè)界應(yīng)用尚需時(shí)間,一個(gè)重要的問(wèn)題是現(xiàn)在在 Intel 發(fā)行的服務(wù)器芯片上還沒(méi)有 SGX,而 SGX 的重要應(yīng)用就是在數(shù)據(jù)中心和云端的應(yīng)用。
審核編輯:劉清
-
SIM卡
+關(guān)注
關(guān)注
6文章
277瀏覽量
28400 -
SoC芯片
+關(guān)注
關(guān)注
1文章
584瀏覽量
34758 -
trustzone
+關(guān)注
關(guān)注
0文章
20瀏覽量
12514
原文標(biāo)題:一篇了解TrustZone
文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論