一.前言
本文對TrustZone 進行簡單的介紹,不涉及具體的技術(shù)細節(jié),旨在有一個概念性的感性的理解,后面有機會再分享幾篇更詳細的技術(shù)細節(jié)介紹和實際應用案例。
本文后續(xù)內(nèi)容以瑞薩的RA系列為例,不同廠家芯片可能不同需要參考對應的手冊。
二.TrustZone介紹
Arm TrustZone 技術(shù)是Armv8-M 架構(gòu)一個可選的架構(gòu)擴展。
其核心思想就是樸素的硬件隔離思想,系統(tǒng)和軟件劃分為安全區(qū)域和非安全區(qū)域,安全軟件可以訪問安全和非安全存儲器和資源,而非安全軟件只能訪問非安全存儲器和資源。安全與非安全狀態(tài)與現(xiàn)有的線程和處理模式組合,即有四種處理器狀態(tài),如下所示:
系統(tǒng)實現(xiàn)了安全擴展,則系統(tǒng)默認以安全狀態(tài)啟動的,即啟動時是無所不能的,一般此時對應bootrom完全相關工作,然后跳轉(zhuǎn)到用戶非安全程序運行。如果未實現(xiàn)安全擴展,則系統(tǒng)始終處于非安全狀態(tài)。
注意安全是一個系統(tǒng)工程,Arm TrustZone只是提供了一種實現(xiàn)安全的隔離技術(shù),并未包括安全的所有方面,比如他就不涉及加密等,也并不是說使用Arm TrustZone就安全了,安全是需要系統(tǒng)考慮的,任何一處不安全整個系統(tǒng)就不安全,符合木桶原理。打個比方,武俠小說中很牛逼的反派人物,練就了金鐘罩鐵布衫刀槍不入,但是往往會有一個弱點就是比如足下或者腋下很脆弱,這就不是安全系統(tǒng),木桶原理導致其很容易從非安全處被攻破,所以最后大決戰(zhàn)階段正派一開始被暴擊,最后快要掛了時,對準反派的弱點比如足下一擊,立馬KO。所以安全的考慮要系統(tǒng)的考慮,而不僅僅是考慮使用一種什么技術(shù),及你就能考慮處理器就可以達到的。
三.關鍵組件
隔離的目的就是要隔離關鍵組件(資源),使得其受保護,不能被非信任軟件直接訪問,避免被攻擊。
關鍵組件包括以下內(nèi)容:
l安全自舉程序,即前面提到的bootrom程序,因為系統(tǒng)啟動默認是安全狀態(tài)的(能不能啟動時不是安全狀態(tài)呢?不能,如果此時不是安全狀態(tài)則沒法配置安全資源,沒法進行初始化配置,所以啟動時必須是安全狀態(tài),此時無所不能)。所以啟動程序要保證受保護,不會被攻破。
l密鑰,這個不用說,密鑰肯定是要保證不能被非法獲取的,否則別人有了你家的鑰匙,你再牛逼的防盜門也沒啥用。
l閃存編程支持,這也很重要,因為程序最終是要寫入FLASH的,如何保證程序燒錄的安全,不被篡改,不燒錄非授信程序等都是保證安全的前提。
l高價值資產(chǎn),其他的,比如用戶信息數(shù)據(jù)等都是需要受保護的。
四.安全系統(tǒng)
要構(gòu)建安全硬件平臺,安全注意事項不僅僅要考慮處理器級別,而是需要考慮系統(tǒng)級別,所以一再強調(diào)的是系統(tǒng)安全,而不是處理器安全,主要包括:
存儲器系統(tǒng)
總線系統(tǒng)
外設
調(diào)試系統(tǒng)等。
4.1存儲器系統(tǒng)
前面提到了TrustZone 技術(shù)的核心是隔離,所以針對存儲器系統(tǒng)就是劃分不同的區(qū)域?qū)煌膶傩浴4a閃存、數(shù)據(jù)閃存和 SRAM 分為 安全 (S)、非安全 (NS) 和非安全可調(diào)用 (NSC) 區(qū)域,比如瑞薩的RA系列MCU這個劃分是通過IDAU控制的。
如下圖所示:
代碼閃存和SRAM都可以執(zhí)行程序所以有非安全可調(diào)用區(qū)域,而數(shù)據(jù)閃存不可執(zhí)行程序只有非安全和安全區(qū)域之分。
當器件生命周期為安全軟件開發(fā) (SSD) 狀態(tài)時,可通過使用串行編程命令將這些存儲器安全屬性編程到非易失性存儲器中。
安全區(qū)域,執(zhí)行安全程序,具備最高權(quán)限可以訪問所有資源。
安全地址用于只能由安全代碼或安全 master 訪問的內(nèi)存和外設。安全事務是那些由 master 發(fā)起并在安全狀態(tài)下運行的事務。
非安全區(qū)域,執(zhí)行非安全程序,只能訪問非安全資源,也可以調(diào)用非安全可調(diào)用區(qū)域API,執(zhí)行一些安全程序的接口。
非安全地址用于設備上運行的所有軟件均可訪問的內(nèi)存和外設。非?安全事務源自以非安全方式運行的 master或訪問非安全地址的安全 master(僅數(shù)據(jù)事務,非獲取指令)。僅允許非安全事務訪問非?安全地址。非安全事務不能訪問安全地址。
非安全可調(diào)用區(qū)域NSC,即中間地帶,提供非安全程序可調(diào)用的安全API。
NSC 是一種特殊類型的安全位置。這種類型的內(nèi)存是 Armv8-M 處理器允許為其保留 SG(安全門)指令的唯一類型,該指令允許軟件從非安全狀態(tài)轉(zhuǎn)為安全狀態(tài)。該 SG 指令可用于防止非安全應用程序從分支進入無效入口點。
當非安全代碼調(diào)用安全端函數(shù)時:
– API 中的第一條指令必須是 SG 指令。
– SG 指令必須在 NSC 區(qū)域內(nèi)。
安全代碼還提供非安全可調(diào)用函數(shù),為非安全代碼提供安全服務訪問。
基于 TrustZone 區(qū)域 的代碼和數(shù)據(jù)閃存安全功能
從非安全區(qū)域讀取代碼和數(shù)據(jù)閃存區(qū)域?qū)⑸?TrustZone 安全故障。
代碼和數(shù)據(jù)閃存 編程和擦除 (P/E) 模式入口可以配置為僅通過安全軟件實現(xiàn),也可以配置為通過安全和非安全軟件實現(xiàn)。默認情況下,MCU 將代碼和數(shù)據(jù)閃存 P/E 功能配置為僅通過安全軟件實現(xiàn)。閃存驅(qū)動程序可以置于安全分區(qū) 中,并且可以配置為非安全可調(diào)用,以允許非安全應用程序執(zhí)行閃存 P/E 操作。
支持安全區(qū)域和非安全區(qū)域的臨時和永久閃存塊保護。
SRAM
SRAM 存儲器可以通過存儲器安全屬性 (MSA) 分為安全/非安全 可調(diào)用/非安全狀態(tài),并且可以防止非安全訪問。當 MSA 指示 SRAM 存儲區(qū)域處于安全或非安全可調(diào)用狀態(tài) 時,非安全訪問無法覆寫它們。
4.2總線系統(tǒng)
直接存儲器訪問控制器 (DMAC) 和數(shù)據(jù)傳輸控制器 (DTC) 由主 TrustZone 過濾器監(jiān)控。在訪問總線之前,會提 前檢測閃存和 SRAM 的 TrustZone 違例區(qū)域。DMAC 和 DTC 中的主 TrustZone 過濾器可以檢測 IDAU 定義的閃 存區(qū)域(代碼閃存和數(shù)據(jù)閃存)和 SRAM 區(qū)域的安全區(qū)域。當非安全通道訪問這些地 址時,主 TrustZone 過濾器會檢測到安全違例,不允許訪問違例地址。
以太網(wǎng)DMA控制器
EDMAC RAM 緩沖區(qū)置于 TrustZone 的非安全 RAM 中。EDMAC 被硬編碼為 TrustZone 非安 全總線主器件。這些硬件特性允許以下兩個以太網(wǎng)程序分區(qū)選項:
在安全區(qū)域中運行以太網(wǎng)程序 ,在非安全區(qū)域中放置 EDMAC RAM 緩沖區(qū)
在非安全區(qū)域中運行以太網(wǎng)程序 EDMAC RAM 緩沖區(qū)。
MPU
總線主 MPU 可用于除 CPU 外的每個總線主器件的存儲器保護功能。安全軟件可以設置總線主 MPU 的安全 屬性。
4.3外設
MCU 中的大多數(shù)外設都可以配置為安全或非安全,但CS 區(qū)域控制器、QSPI、OSPI、ETHERC 和 EDMAC始終是非安全。
外設分為兩種類型。 類型 1 外設具有一種安全屬性,對所有寄存器的訪問由一種安全屬性控制。安全應用程序?qū)㈩愋?1 外設安 全屬性設置到外設安全屬性寄存器(PSARx:x = B 至 E)。外設的不同通道可以采用不同的安全屬性。例如,UART 通道 0 和通道 1 可以具有不同的安全或非安 全屬性。
類型 2 外設具有每個寄存器或每個位的安全屬性,根據(jù)這些安全屬性控制對每個寄存器或位域的訪問。安 全應用程序?qū)㈩愋?2 外設安全屬性設置到每個模塊中的安全屬性寄存器。
總結(jié)一下就是外設類型1顆粒度更大,所有寄存器一起控制安全屬性,類型2顆粒度更小。
時鐘生成電路針對每個時鐘樹控制都有單獨的安全屬性??墒褂靡幌聲r鐘控制方案。
整個時鐘樹僅通過安全項目進行控制,在非安全項目中被鎖定。
整個時鐘樹可通過非安全項目和安全項目進行控制。
4.4調(diào)試系統(tǒng)
開發(fā)階段希望有更強大的調(diào)試功能,以方便進行各種調(diào)試分析,而發(fā)布階段希望關閉調(diào)試功能以放置通過調(diào)試系統(tǒng)被攻破。所以調(diào)試功能分為了不同級別
調(diào)試功能分為 DBG0、DBG1 和 DBG2 三個級別,以 對支持 TrustZone 技術(shù)的調(diào)試功能提供支持,并為開發(fā)、生產(chǎn)和部署的產(chǎn)品提供安全性。
DBG2:允許調(diào)試器連接,無限制訪問存儲器和外設。
DBG1:允許調(diào)試器連接,但僅限訪問非安全存儲區(qū)域和外設
DBG0:不允許調(diào)試器連接
調(diào)試級別根據(jù)產(chǎn)品的器件生命周期狀態(tài)確定。通過器件生命周期管理系統(tǒng)可以實現(xiàn)調(diào)試級別的回退。
五.器件生命周期管理
使用 TrustZone 技術(shù)功能和安全加密引擎 9 (SCE9) 實現(xiàn)增強型器件 生命周期管理系統(tǒng)。器件生命周期管理在啟用 TrustZone 技術(shù)的應用程序開發(fā)、生產(chǎn)和部署階段非常重要,主要實現(xiàn)以下功能:
根據(jù)器件生命周期狀態(tài)定義和切換,在開發(fā)和生產(chǎn)階段創(chuàng)建、安 裝和使用器件生命周期管理密鑰等。
六.參考
《TrustZone technology for Armv8-M Architecture Version 2.1》
《Renesas RA Family Security Design with Arm TrustZone - IP Protection》
審核編輯 黃宇
-
處理器
+關注
關注
68文章
19858瀏覽量
234321 -
存儲器
+關注
關注
38文章
7644瀏覽量
166915 -
trustzone
+關注
關注
0文章
22瀏覽量
12670
發(fā)布評論請先 登錄
Arm 公司面向 PC 市場的 ?Arm Niva? 深度解讀
【直播預告】《實時操作系統(tǒng)應用技術(shù)—基于RT-Thread與ARM的編程實踐》教學脈絡及資源簡介

藍牙LE Audio技術(shù)簡介和優(yōu)勢分析
RA8T1基于480MHz Arm Cortex-M85、搭載Helium和TrustZone的電機控制微控制器技術(shù)手冊

Arm精銳超級分辨率技術(shù)助力提升游戲性能

TrustZone介紹及用途

用STM32Cubeprogrammer燒錄TrustZone的示范程序不成功怎么解決?
Arm 技術(shù)預測:2025 年及未來的技術(shù)趨勢

利用Arm Kleidi技術(shù)實現(xiàn)PyTorch優(yōu)化

評論