0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是TrustZone?TrustZone是如何實(shí)現(xiàn)安全隔離的

Linux閱碼場(chǎng) ? 來(lái)源:洛奇看世界 ? 作者:guyongqiangx ? 2022-12-05 09:27 ? 次閱讀

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:

d54b06e0-7430-11ed-8abf-dac502259ad0.png

圖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),片上ROMRAM安全區(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)用示意圖:

d566eacc-7430-11ed-8abf-dac502259ad0.png

基于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è)虛擬核(安全核和非安全核)的情況:

d5812914-7430-11ed-8abf-dac502259ad0.png

圖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:

d59bef92-7430-11ed-8abf-dac502259ad0.png

圖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)了安全世界和非安全世界之間的切換方式:

d5b71f88-7430-11ed-8abf-dac502259ad0.png

圖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.d5bd419c-7430-11ed-8abf-dac502259ad0.png

圖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)流程:

d5cd5118-7430-11ed-8abf-dac502259ad0.png

圖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:

d5dc6482-7430-11ed-8abf-dac502259ad0.png

圖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

d5f0b112-7430-11ed-8abf-dac502259ad0.png

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)用。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    embOS如何支持Arm TrustZone

    通過(guò)ARMv8-M架構(gòu)支持的TrustZone技術(shù),可以將關(guān)鍵安全固件和私有程序(如安全引導(dǎo)、固件更新和密鑰)與其余應(yīng)用程序隔離,極大降低被攻擊的可能性,增加嵌入式系統(tǒng)
    發(fā)表于 09-22 12:16 ?340次閱讀
    embOS如何支持Arm <b class='flag-5'>TrustZone</b>

    TrustZone結(jié)構(gòu)化消息是什么?

    大家好,我已閱讀任何與TrustZone相關(guān)的內(nèi)容,但我無(wú)法弄清楚這兩個(gè)世界是如何相互溝通的。我所能找到的只是TrustZone API規(guī)范中的內(nèi)容:客戶端和服務(wù)可以通過(guò)兩種機(jī)制進(jìn)行通信:結(jié)構(gòu)化
    發(fā)表于 03-20 08:58

    介紹Cortex-A和Cortex-M的TrustZone之間的差異

    就開(kāi)始引入TrustZone,到Armv7-A和Armv8-A把trustzone作為架構(gòu)的可選的安全擴(kuò)展。雖然TrustZone做架構(gòu)的可選擴(kuò)展,但是所有的Cortex-A的CPU都
    發(fā)表于 07-13 14:45

    Arm架構(gòu)中的TrustZone、CryptoCell以及Cryptoisland之間的區(qū)別是什么

    TrustZone是Arm架構(gòu)的一個(gè)安全擴(kuò)展,現(xiàn)在Armv7-A、Armv8-A,以及Armv8-M都是支持的,實(shí)現(xiàn)CPU時(shí)可以選擇是否實(shí)現(xiàn)這個(gè)安全
    發(fā)表于 07-14 14:15

    了解體系結(jié)構(gòu)-適用于AArch64的TrustZone介紹

    在本指南中,我們介紹了TrustZoneTrustZone通過(guò)內(nèi)置在CPU中的硬件強(qiáng)制隔離,提供了一種高效的全系統(tǒng)安全方法。 我們介紹了Trust
    發(fā)表于 08-10 07:02

    STM32 MCU TrustZone開(kāi)發(fā)調(diào)試技巧分享

    系統(tǒng)隔離與ARM V8-M TrustZone技術(shù)、TrustZone地址安全區(qū)及資源安全屬性配置、Tr
    發(fā)表于 09-05 06:16

    ARM 架構(gòu)中TrustZone 安全處理技術(shù)的研究

    對(duì)基于 ARMv6 架構(gòu)的全新TrustZone 安全處理技術(shù)進(jìn)行了研究,著重從該技術(shù)的實(shí)現(xiàn)原理、運(yùn)行模式和軟硬件支持等方面,論證TrustZone 技術(shù)
    發(fā)表于 08-28 11:23 ?18次下載

    TrustZone是怎樣保護(hù)片上代碼的機(jī)密性的?

    STM32L5基于Cortex-M33 內(nèi)核,其內(nèi)核基于ARMV8-M架構(gòu),自帶有TrustZone安全技術(shù),從內(nèi)核到整個(gè)芯片系統(tǒng),實(shí)現(xiàn)安全區(qū)域和非
    的頭像 發(fā)表于 06-15 15:59 ?1212次閱讀
    <b class='flag-5'>TrustZone</b>是怎樣保護(hù)片上代碼的機(jī)密性的?

    基于LPC55xxx CM33核的TrustZone原理與應(yīng)用

    基本的安全保障。本文基于CM33核的LPC55sxx系列開(kāi)發(fā)板,MCUXpresso IDE v11.1.1_3241集成開(kāi)發(fā)工具。二:實(shí)現(xiàn)原理2.1:區(qū)域劃分TrustZone將內(nèi)存和外設(shè)分為
    發(fā)表于 12-05 15:51 ?13次下載
    基于LPC55xxx CM33核的<b class='flag-5'>TrustZone</b>原理與應(yīng)用

    RA6快速設(shè)計(jì)指南 [8] 使用TrustZone?

    7 使用TrustZone 7.1 Arm TrustZone 技術(shù)的實(shí)現(xiàn) 某些RA6 MCU(如RA6M4和RA6M5)包含Arm TrustZone (TZ)
    的頭像 發(fā)表于 06-19 15:25 ?544次閱讀
    RA6快速設(shè)計(jì)指南 [8] 使用<b class='flag-5'>TrustZone</b>?

    IOT物聯(lián)網(wǎng)安全TrustZone與SE安全芯片的關(guān)系

    選型滿足自己安全要求的技術(shù)為迷茫。本文主要介紹,在IOT領(lǐng)域里安全芯片和TrustZone的關(guān)系?!觥?b class='flag-5'>安全芯片SE和TrustZone到底什
    的頭像 發(fā)表于 04-04 10:57 ?1550次閱讀
    IOT物聯(lián)網(wǎng)<b class='flag-5'>安全</b>:<b class='flag-5'>TrustZone</b>與SE<b class='flag-5'>安全</b>芯片的關(guān)系

    Arm? TrustZone? 技術(shù)簡(jiǎn)介

    ,不同廠家芯片可能不同需要參考對(duì)應(yīng)的手冊(cè)。 二.TrustZone介紹 Arm TrustZone 技術(shù)是Armv8-M 架構(gòu)一個(gè)可選的架構(gòu)擴(kuò)展。 其核心思想就是樸素的硬件隔離思想,系統(tǒng)和軟件劃分為
    的頭像 發(fā)表于 07-04 08:44 ?2793次閱讀
    Arm? <b class='flag-5'>TrustZone</b>? 技術(shù)簡(jiǎn)介

    如何實(shí)現(xiàn)TrustZone的可信執(zhí)行環(huán)境來(lái)支持隱私計(jì)算呢?

    TrustZone技術(shù)是ARM公司開(kāi)發(fā)的一種系統(tǒng)安全擴(kuò)展技術(shù)。TrustZone技術(shù)的主要目標(biāo)是保證嵌入式系統(tǒng)的安全,防止系統(tǒng)中的敏感數(shù)據(jù)發(fā)生安全
    的頭像 發(fā)表于 07-25 16:15 ?1544次閱讀
    如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>TrustZone</b>的可信執(zhí)行環(huán)境來(lái)支持隱私計(jì)算呢?

    調(diào)試TrustZone時(shí),如何處理HardFault?

    調(diào)試TrustZone時(shí),如何處理HardFault?
    的頭像 發(fā)表于 09-27 16:33 ?537次閱讀
    調(diào)試<b class='flag-5'>TrustZone</b>時(shí),如何處理HardFault?

    STM32 TrustZone 開(kāi)發(fā)調(diào)試技巧

    電子發(fā)燒友網(wǎng)站提供《STM32 TrustZone 開(kāi)發(fā)調(diào)試技巧.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 11:16 ?2次下載
    STM32 <b class='flag-5'>TrustZone</b> 開(kāi)發(fā)調(diào)試技巧