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