chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

Linux閱碼場 ? 來源:洛奇看世界 ? 作者:guyongqiangx ? 2022-12-05 09:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. TrustZone介紹

1.1 安全背景

在介紹 TrustZone 前有必要簡單回顧下目前的一些安全手段。

CPU 通過內(nèi)存映射手段給每個(gè)進(jìn)程營造一個(gè)單獨(dú)的地址空間來隔離多個(gè)進(jìn)程的代碼和數(shù)據(jù),通過內(nèi)核空間和用戶空間不同的特權(quán)級(jí)來隔離操作系統(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ò)展的安全模塊來確保數(shù)據(jù)安全,目前常見的方式有:

外部掛接硬件安全模塊

數(shù)據(jù)的處理交由外部的安全模塊實(shí)現(xiàn),這些模塊能夠保護(hù)自己的資源和密鑰等數(shù)據(jù)的安全,如 SIM 卡、各種智能卡或連接到外部的硬件加解密模塊等,但其同主芯片的通信線路暴露在外部,容易被監(jiān)聽破解。另外,通信的速率比較低。

內(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 針對消費(fèi)電子設(shè)備設(shè)計(jì)的一種硬件架構(gòu),其目的是為消費(fèi)電子產(chǎn)品構(gòu)建一個(gè)安全框架來抵御各種可能的攻擊。

TrustZone 在概念上將 SoC 的硬件和軟件資源劃分為安全(Secure World)和非安全(Normal World)兩個(gè)世界。

所有需要保密的操作在安全世界執(zhí)行(如指紋識(shí)別、密碼處理、數(shù)據(jù)加解密、安全認(rèn)證等),其余操作在非安全世界執(zhí)行(如用戶操作系統(tǒng)、各種應(yīng)用程序等),安全世界和非安全世界通過一個(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í)占用物理核,并通過 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ī)制,確保非安全核只能訪問非安全世界的系統(tǒng)資源,而安全核能訪問所有資源,因此安全世界的資源不會(huì)被非安全世界(或普通世界)所訪問。

設(shè)計(jì)上,TrustZone 并不是采用一刀切的方式讓每個(gè)芯片廠家都使用同樣的實(shí)現(xiàn)。總體上以 AMBA3 AXI 總線為基礎(chǔ),針對不同的應(yīng)用場景設(shè)計(jì)了各種安全組件,芯片廠商根據(jù)具體的安全需求,選擇不同的安全組件來構(gòu)建他們的 TrustZone 實(shí)現(xiàn)。

其中主要的組件有:

必選組件

AMBA3 AXI總線,安全機(jī)制的基礎(chǔ)設(shè)施

虛擬化的ARM Core,虛擬安全和非安全核

TZPC (TrustZone Protection Controller),根據(jù)需要控制外設(shè)的安全特性

TZASC (TrustZone Address Space Controller),對內(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ù),針對不同的安全需求加載不同的安全應(yīng)用 TA(Trusted Application)。例如:針對某具體 DRM 的 TA,針對 DTCP-IP 的 TA,針對 HDCP 2.0驗(yàn)證的 TA 等。

圖2是一個(gè) ARM 官網(wǎng)對 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)提出的概念。對應(yīng)于 TEE 還有一個(gè) REE(Rich Execution Environment)概念,分別對應(yīng)于安全世界(Secure World)和非安全世界(Non-secure World, Normal World)。

GlobalPlatform(GP) 是跨行業(yè)的國際標(biāo)準(zhǔn)組織,致力于開發(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ī)制來介紹 TrustZone 的設(shè)計(jì)和工作原理

2.1 總線設(shè)計(jì)

總線

設(shè)計(jì)上,TrustZone 在系統(tǒng)總線上針對每一個(gè)信道的讀寫增加了一個(gè)額外的控制信號(hào)位,這個(gè)控制位叫做 Non-Secure 或者 NS 位,是 AMBA3 AXI 總線針對 TrustZone 作出的最重要、最核心的擴(kuò)展設(shè)計(jì)。

這個(gè)控制信號(hào)針對讀和寫分別叫做 ARPORT[1] 和 AWPORT[1]:

ARPROT[1]: 用于讀操作(Read transaction), 低表示 Secure, 高表示 Non-Secure

AWPROT[1]: 用于寫操作(Write transaction), 低表示 Secure,高表示 Non-Secure

總線上的所有主設(shè)備(master)在發(fā)起新的操作(transaction)時(shí)會(huì)設(shè)置這些信號(hào),總線或從設(shè)備(slave)上解析模塊會(huì)對主設(shè)備發(fā)起的信號(hào)進(jìn)行辨識(shí),來確保主設(shè)備發(fā)起的操作在安全上沒有違規(guī)。

例如:硬件設(shè)計(jì)上,所有非安全世界的主設(shè)備(Non-Secure masters)在操作時(shí)必須將信號(hào)的NS位置高,而NS位置高又使得其無法訪問總線上安全世界的從設(shè)備(Secure Slaves),簡單來說就是對非安全世界主設(shè)備發(fā)出的地址信號(hào)進(jìn)行解碼時(shí)在安全世界中找不到對應(yīng)的從設(shè)備,從而導(dǎo)致操作失敗。

NS控制信號(hào)在 AMBA3 AXI 總線規(guī)范中定義??梢詫⑵淇醋鳛樵械刂返臄U(kuò)展位,如果原有32位尋址,增加NS可以看成是33位尋址,其中一半的32位物理尋址位于安全世界,另一半32位物理尋址位于非安全世界。

當(dāng)然,非安全世界的主設(shè)備嘗試訪問安全世界的從設(shè)備會(huì)引發(fā)訪問錯(cuò)誤,可能是 SLVERR(slave error)或者 DECERR(decode error),具體的錯(cuò)誤依賴于其訪問外設(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ì)拒絕不合理的安全請求,保證這些請求不會(huì)被轉(zhuǎn)發(fā)到相應(yīng)的外設(shè)。

例如:新一代的芯片可以通過增加 AXI-to-APB bridge 組件來沿用上一代芯片的設(shè)計(jì)來使其外圍設(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è)物理處理器核。

多核處理器上,也有建議說讓將某一個(gè)或幾個(gè)核指定為安全專用核,只運(yùn)行安全系統(tǒng)代碼來構(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īng)于內(nèi)存管理的分段機(jī)制和分頁機(jī)制。分段機(jī)制把一個(gè)邏輯地址轉(zhuǎn)換為線性地址;接著,分頁機(jī)制把一個(gè)線性地址轉(zhuǎn)換為物理地址。

當(dāng) CPU 訪問一個(gè)虛擬地址時(shí),這個(gè)虛地址被送到MMU翻譯,硬件首先把它和TLB中的所有條目同時(shí)(并行地)進(jìn)行比較,如果它的虛頁號(hào)在 TLB 中,并且訪問沒有違反保護(hù)位,它的頁面會(huì)直接從 TLB 中取出而不去訪問頁表,從而提高地址轉(zhuǎn)換的效率。

安全世界和非安全世界都有自己的虛擬 MMU,各自管理物理地址的映射。實(shí)際上只是兩個(gè)世界都有一份 TTBR0、TTBR1、TTBCR 寄存器,因此就會(huì)對應(yīng)兩個(gè)MMU表。

盡管 MMU 有兩套,但 TBL 緩存硬件上只有一套,因此 TBL 對于兩個(gè)世界來說是共享的,其通過NS位來標(biāo)志其每一項(xiàng)具體屬于哪一個(gè)世界。這樣在兩個(gè)世界間進(jìn)行切換時(shí)不再需要重新刷新 TLB,提高執(zhí)行效率。

對于 TLB 共享并不是硬性規(guī)定的,部分芯片在兩個(gè)世界間切換時(shí)可能通過硬件部分或全部刷新 TLB。

Cache

同 TLB 類似,硬件上兩個(gè)世界共享一套 Cache,具體的 Cache 數(shù)據(jù)屬于哪一個(gè)世界也由其 NS 位指定,在世界間切換也不需要刷新 Cache。

2.2.3 中斷模型

基于 TrustZone 的處理器有三套異常向量表:

一套用于非安全世界

一套用于安全世界

還有一套用于 Monitor 模式

與之前非 TrustZone 的處理器不同的是,這三套中斷向量表的基地址在運(yùn)行時(shí)可以通過 CP15 的寄存器 VBAR(Vector Base Address Register)進(jìn)行修改。

復(fù)位時(shí),安全世界的中斷向量表由處理器的輸入信號(hào) VINITHI 決定,沒有設(shè)置時(shí)為 0x00000000,有設(shè)置時(shí)為 0xFFFF0000;非安全世界和 Monitor 模式的中斷向量表默認(rèn)沒有設(shè)置,需要通過軟件設(shè)置后才能使用。

默認(rèn)情況下,IRQ 和 FIQ 異常發(fā)生后系統(tǒng)直接進(jìn)入 Monitor 模式,由于 IRQ 是絕大多數(shù)環(huá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 的切換見圖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è)世界,該寄存器在非安全世界是不能訪問的。

當(dāng) CPU 處于 Monitor Mode 時(shí),無論 NS 位是 0 還是 1,處理器都是在安全世界運(yùn)行代碼。

因此 Monitor Mode 下總是安全世界,但如果此時(shí) NS 為 1,訪問 CP15 的其它寄存器獲取到的是其在非安全世界的值。

非安全世界到Monitor模式的切換

處理器從非安全世界進(jìn)入 Monitor Mode 的操作由系統(tǒng)嚴(yán)格控制,而且所有這些操作在 Monitor Mode 看來都屬于異常。從非安全世界到 Monitor Mode 的操作可通過以下方式觸發(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)。操作完成后以從異常返回的方式開始運(yùn)行下一個(gè)世界的代碼。

為什么安全模式和非安全模式不能直接切換?

非安全世界無權(quán)訪問 CP15 的 SCR 寄存器,所以無法通過設(shè)置NS來直接切換到安全世界,只能先轉(zhuǎn)換到 Monitor Mode,再到安全世界。

如果軟件運(yùn)行在安全世界(非Monitor Mode)下,通過將 CP15 的 NS 位設(shè)置 1,安全世界可以直接跳轉(zhuǎn)到非安全世界,由于此時(shí) CPU 的流水線和寄存器還遺留了安全世界的數(shù)據(jù)和設(shè)置,非安全模式下的應(yīng)用可以獲取到這些數(shù)據(jù),會(huì)有極大的安全風(fēng)險(xiǎn)。因此,只建議在 Monitor Mode 下通過設(shè)置 NS 位來切換到非安全模式。

綜上,安全世界和非安全世界不存在直接的切換,所有切換操作都通過 Monitor Mode 來執(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ù)通過總線組件 TZASC 和 TZMA 的設(shè)置來實(shí)現(xiàn)。

TZASC (TrustZone Address Space Controller)

TZASC 可以把外部 DDR 分成多個(gè)區(qū)域,每個(gè)區(qū)域可以單獨(dú)配置為安全或非安全區(qū)域,非安全世界的代碼和應(yīng)用只能訪問非安全區(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í)通過 TZPC 動(dòng)態(tài)配置。TZMA 使用上有些限制,其不適用于外部內(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) 來向 APB 總線上的設(shè)備提供類似 AXI 上的 NS 控制信號(hào)。

由于 TZPC 可以在運(yùn)行時(shí)動(dòng)態(tài)設(shè)置,這就決定了外設(shè)的安全特性是動(dòng)態(tài)變化的,例如鍵盤平時(shí)可以作為非安全的輸入設(shè)備,在輸入密碼時(shí)可以配置為安全設(shè)備,只允許安全世界訪問。

2.3.3 隔離機(jī)制示意圖

整個(gè)系統(tǒng)內(nèi)存和外設(shè)隔離機(jī)制示意圖見圖6.d5bd419c-7430-11ed-8abf-dac502259ad0.png

圖6. 系統(tǒng)內(nèi)存和外設(shè)隔離機(jī)制示意圖

此圖來源于網(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)的過程。

系統(tǒng)上電復(fù)位后,先從安全世界開始執(zhí)行。安全世界會(huì)對非安全世界的 bootloader 進(jìn)行驗(yàn)證,確保非安全世界執(zhí)行的代碼經(jīng)過授權(quán)而沒有被篡改過。然后非安全世界的 bootloader 會(huì)加載非安全世界的 OS,完成整個(gè)系統(tǒng)的啟動(dòng)。

在非安全系統(tǒng)的 bootloader 加載 OS 時(shí),仍然需要安全世界對 OS 的代碼進(jìn)行驗(yàn)證,確保沒有被篡改。

圖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,接下來 bootloader 提交系統(tǒng)的 OS 和文件系統(tǒng)給 BSP 進(jìn)行校驗(yàn),通過后加載主系統(tǒng),確保主系統(tǒng)是安全的。

從上電復(fù)位開始的整個(gè)啟動(dòng)過程中,下一級(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: 無特權(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)用開發(fā)商,實(shí)現(xiàn) DRM、Playready、DTCP-IP 和一些其它安全應(yīng)用開發(fā)和認(rèn)證

Trust OS

TEE 環(huán)境下也要有一個(gè)操作系統(tǒng),各家都有自己的 Trustzone 的操作系統(tǒng)。如 Trustonic、高通的 QSEE、國內(nèi)的豆莢,還有開源的 OPTEE 和 Trusty 等。

在操作系統(tǒng)之上自然要有應(yīng)用程序,在 Trustzone 里面我們一般叫 TrustApp,當(dāng)然 TEE 里面每個(gè) TrustApp 都在一個(gè)沙盒里,互相之間是隔離的。

比如說支付,就可以做成一個(gè) App(需要注意的是,和 Normal Worl d里面的 App 是兩個(gè)概念),這個(gè) App 簡單來說就負(fù)責(zé)用私鑰把網(wǎng)上發(fā)來的 Challenge 簽個(gè)名,而這個(gè)簽名的動(dòng)作是需要在 Secure World 里面做的,避免惡意程序竊取到私鑰來偽造簽名。

例如支付寶,其實(shí)支付寶也是只支持幾個(gè) Trust OS 的。同時(shí),支付寶還定義了一系列標(biāo)準(zhǔn),用來完成他的行為。

現(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

針對可信計(jì)算,類似 ARM 的 TrustZone,Intel 也針對 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,顧名思義,其是對因特爾體系(IA)的一個(gè)擴(kuò)展,用于增強(qiáng)軟件的安全性。

這種方式并不是識(shí)別和隔離平臺(tái)上的所有惡意軟件,而是將合法軟件的安全操作封裝在一個(gè) enclave 中,保護(hù)其不受惡意軟件的攻擊,特權(quán)或者非特權(quán)的軟件都無法訪問 enclave。

也就是說,一旦軟件和數(shù)據(jù)位于 enclave 中,即便操作系統(tǒng)或者和 VMM(Hypervisor)也無法影響 enclave 里面的代碼和數(shù)據(jù)。

Enclave 的安全邊界只包含 CPU 和它自身。SGX 創(chuàng)建的 enclave 也可以理解為一個(gè)可信執(zhí)行環(huán)境 TEE。不過其與 ARM TrustZone(TZ)還是有一點(diǎn)小區(qū)別的,TZ 中通過 CPU 劃分為兩個(gè)隔離環(huán)境(安全世界和正常世界),兩者之間通過 SMC 指令通信;而 SGX 中一個(gè) CPU 可以運(yùn)行多個(gè)安全 enclaves,并發(fā)執(zhí)行亦可。

簡單來講, Intel SGX 最關(guān)鍵的優(yōu)勢在于將程序以外的 software stack如 OS 和 BIOS 都排除在了 TCB(Trusted Computing Base)以外。換句話說,就是在容器 enclave 里的 code 只信任自己和 Intel 的 CPU。

網(wǎng)上有人是這樣對比 TrustZone 和 SGX 的:

Trustzone 默認(rèn)相信 SecureOS,安全世界。SGX 僅相信 CPU core,通過 SGX 指令構(gòu)建 enclave容器。簡單比喻,TEE 是個(gè)公用大保險(xiǎn)柜,什么東西都裝進(jìn)去,有漏洞的 app 可能也進(jìn)去了,而且保險(xiǎn)柜鑰匙在管理員手上,必須相信管理員。SGX 每個(gè) app 有自己的保險(xiǎn)柜,鑰匙在自己手上

SGX 要進(jìn)入工業(yè)界應(yīng)用尚需時(shí)間,一個(gè)重要的問題是現(xiàn)在在 Intel 發(fā)行的服務(wù)器芯片上還沒有 SGX,而 SGX 的重要應(yīng)用就是在數(shù)據(jù)中心和云端的應(yīng)用。





審核編輯:劉清

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

    關(guān)注

    6

    文章

    291

    瀏覽量

    30077
  • SoC芯片
    +關(guān)注

    關(guān)注

    1

    文章

    657

    瀏覽量

    36407
  • trustzone
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    12792

原文標(biāo)題:一篇了解TrustZone

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    embOS如何支持Arm TrustZone

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

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

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

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

    就開始引入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通過內(nèi)置在CPU中的硬件強(qiáng)制隔離,提供了一種高效的全系統(tǒng)安全方法。 我們介紹了Trust
    發(fā)表于 08-10 07:02

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

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

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

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

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

    基本的安全保障。本文基于CM33核的LPC55sxx系列開發(fā)板,MCUXpresso IDE v11.1.1_3241集成開發(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 ?1209次閱讀
    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)系。■■安全芯片SE和TrustZone到底什
    的頭像 發(fā)表于 04-04 10:57 ?2676次閱讀
    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ù)簡介

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

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

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

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

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

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

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

    TrustZone介紹及用途

    TrustZone是Arm開發(fā)的一項(xiàng)核心技術(shù),作為Armv8-M架構(gòu)的一部分,通過強(qiáng)制硬件隔離提供系統(tǒng)級(jí)安全措施。TrustZone要求在軟件中劃分
    的頭像 發(fā)表于 04-08 09:47 ?1009次閱讀
    <b class='flag-5'>TrustZone</b>介紹及用途