關鍵詞:TrustZone、AMBA3 AXI、AXI-to-APB、Monitor Mode、SMC、SCR NS、CP15、TZAPI等等。
參考文檔:《ARM Security Technology Building a Secure System using TrustZone Technology》
Chapter 1首先介紹什么是安全?有哪些威脅?需要做哪些工作才能確保安全?
Chapter 2接着介紹了常見系統安全方案?以及TrustZone的硬件安全方案?
Chapter 3然后詳細介紹了TrustZone硬件架構:系統架構、處理器架構、調試架構。
Chapter 4羅列了涉及到的所有IP。
在介紹了硬件架構之后,Chapter 5介紹了軟件架構:安全啟動、Monitor Mode、多處理器安全、TrustZone API等。
最后Chapter 6介紹了一個Gadget2008示例。
Chapter 1 Introduction
Class-breaking attacks:是指一種可復制的攻擊,往往是指對同一類設備。
Hack attack:僅可進行軟件攻擊,包括病毒和惡意軟件等。
Shack attack:指低成本硬件攻擊,攻擊設備較易獲取。攻擊者往往可以接觸設備,但是沒有專業設備或專業知識對IC進行攻擊。
Lab attack:最復雜最具破壞性的,可以借助實驗室設備對設備進行逆向工程。
Chapter 2 SystemSecurity
2.1 System security
常見三種系統安全方案:External hardware security module、Internal hardware security module、Software virtualization,及其優缺點對比。
2.2 TrustZone hardware security
保護關鍵Key的必須安全模塊Cryptographic hardware blocks。
基於TrustZone架構實現安全啟動、經過驗證的調試。
Chapter 3 TrustZone Hardware Architecture
3.2 System architecture
AMBA3 AXI為每個讀寫通道增加了控制信號,表示Non-Secure或者Secure狀態。
AWPROT[1]: Write transaction – low is Secure and high is Non-secure. ARPROT[1]: Read transaction – low is Secure and high is Non-secure.
所有總線主設備發起傳輸前必須這是這些信號,總線或者從設備解碼邏輯必須符合安全規則。
AXI-to-APB橋提供了APB外設兼容TrustZone安全技術的能力。
總線傳輸上的NS位,可以看成是第33給地址位:安全傳輸32位地址空間,非安全傳輸32位地址空間。
3.3 Processor architecture
每個物理核被虛擬成兩個核:一個安全核、一個非安全核。這兩個核的切換由Monitor mode負責。
非安全核僅能看到非安全系統資源;安全核可以看到所有資源。
安全世界和非安全世界切換
兩個虛擬核通過分時使用物理核實現,他們之間的切換由Monitor Mode負責。
觸發進入Monitor Mode的手段有:SMC、IRQ、FIQ、external Data Abort、external Prefetch Abort。
CP15的SCR寄存器NS位表示當前安全還是非安全世界執行。
L1內存系統安全
MMU、Caches、TCM、ACP(Accelerator Coherence Port)。
中斷安全
ARM建議IRQ作為普通世界中斷源,FIQ作為安全世界中斷源。
如果當前CPU運行在對應安全狀態,中斷產生后不會導致Monitor Mode切換。反之,則會導致上下文切換,並且跳轉到另一個世界執行。
處理器異常向量表包含三組:普通世界、安全世界、Monitor Mode。
安全處理器配置
CP15
多核處理器安全
多核處理器中每個物理核都包含一個普通世界虛擬核和一個安全世界虛擬核。
如下1個cluster的4核CPU,被虛擬成8個核。
3.4 Debug architecture
ARM的調試解決方案可以分為兩部分:處理器調試和系統調試。
Processor debug control
TrustZone調試將調試介入控制分成獨立配置的4部分:
- Secure privileged invasive (JTAG) debug - SPIDEN
- Secure privileged non-invasive (trace) debug - SPNIDEN
- Secure user invasive debug - SUIDEN
- Secure user non-invasive debug - SUNIDEN
Multiprocessor debug control
Cluster中每個核都包含獨立的DBGEN、NIDEN、SPIDEN和SPNIDEN。
Performance analysis
CP15中包含Performance Monitor。
System debug control
ARM CoreSight是系統調試解決方案,可用於調試或跟蹤處理器和其他系統組件。
Chapter 4 TrustZone Hardware Library
4.1 System IP
4.1.1 Matrix
PrimeCell® High-Performance Matrix - PL301:實現AMBA3 AXI總線,對系統安全和非安全進行系統范圍的隔離。
4.1.2 Cache Controller
PrimeCell Level 2 Cache Controller - PL310:L2緩存,標記每個cache line的安全狀態。
4.1.3 DMA Controller
PrimeCell DMA Controller - PL330:實現安全世界和非安全世界並發工作。
4.1.4 TZASC
PrimeCell TrustZone Address Space Controller - PL380:將一段存儲區域划分為若干安全和或非安全區。
TZASC作為一個AXI組件將其從屬地址空間划分成一系列安全或非安全內存空間。TZASC僅可由安全軟件進行編程,並拒絕非安全傳輸到一個配置為安全的區域。
4.1.5 TZMA
PrimeCell Infrastructure AMBA3 AXI TrustZone Memory Adapter - BP141:將片內ROM和STAM一段內存設置為安全區域和非安全區域。
TZMA用於配置SOC片內靜態內存(ROM/SRAM)為安全區域。將一塊較大內存配置為安全和非安全區域的成本要低於為每個區域使用獨立的內存。
TZMA允許將一塊最大2MB內存配置為兩個區域,低地址為安全區,高地址為非安全區。
安全區和非安全區一般以4KB為單位,可以通過送到TZMA的信號R0SIZE配置。
R0ZISE可由TZPC一個外設發出的TZPCR0ZISE進行動態設置。
TZMA不能用於對動態內存分區;或超過一個安全區的情況,此時可由TZASC進行配置。
4.1.6 GIC
PrimeCell Generic Interrupt Controller - PL390:設置安全或非安全中斷。
GIC同時支持安全和非安全世界的支持優先級的中斷源。
4.1.7 TZPC
PrimeCell Infrastructure AMBA3 TrustZone Protection Controller - BP147:是APB總線具備安全設置功能。
TZPC掛載於APB總線上,用於提供控制信號給其他設備。
4.2 Processor IP
介紹可以作為智能卡安全核的處理器,也可以和TrustZone核結合使用,提供更高安全性能。
Chapter 5 TrustZone Software Architecture
5.1 Software overview
實現TrustZone功能兩種軟件結構:安全OS和同步庫調用。
安全OS缺點是復雜,但是功能更強大。可以模擬實現安全應用並發執行、使用MMU對不同安全應用形成隔離等等。
同步庫函數調用實現簡單,但是每次技能處理一個安全相關任務、庫函數完全被普通世界操作系統通過SMC調用和管理、安全世界不能獨立執行。
5.2 Booting a secure system
啟動流程
啟動過程是一個系統安全的關鍵點,可以通過更改鏡像文件實現系統進行攻擊。所以在啟動過程中對鏡像進行驗證是必要的。
所以從Bootrom啟動開始,每一步進行安全檢查,直到所有安全世界和普通世界運行,形成一個完成的信任鏈。
一個典型的TrustZone處理器啟動流程:
BootRom:負責初始化關鍵外設,比如初始化外部存儲控制器並從中讀取二級Bootloader。這里需要對二級Bootlader的合法性進行驗證,通過后才能跳轉到二級Bootlaoder。
二級Bootloader:負責加載並驗證安全OS,通過后啟動安全OS。
安全OS:負責啟動普通世界OS。
安全啟動
安全啟動從BootRom開始對啟動每個階段,對每個鏡像文件基於密碼的檢查,杜絕未授權或惡意修改。
加密簽名協議:使用PrK對鏡像生成一個簽名,並且和二進制軟件一同發布;設備中存有相應的PuK,PuK可用於驗證二進制文件是否被修改。
所有階段鏡像在執行之前必須被驗證,才能確保形成完整的啟動流程信任鏈。
5.3 Monitor mode software
模式監控軟件管理CPU在安全和非安全狀態切換,類似於進程切換:保存將要退出CPU狀態,恢復將要進入CPU狀態。
普通世界進入模式監控可以通過如下手段:interrupt、external abort、SMC;安全世界進入模式監控通過寫CPSR寄存器。
安全模式軟件是安全世界和普通世界切換的紐帶,一般建議執行期間關閉中斷使能。
模式監控上下文切換
模式監控上下文切換需要保存的信息有:
- 所有ARM通用寄存器
- 所有協處理器,比如NEON或VFP等。
- 所有CP15中不同世界獨立配置寄存器。
硬件異常:IRQ、FIQ、external abort。
軟件異常:SMC。
Lazy context switching:針對VFP和NEON狀態保存消耗大的設備。
5.4 Secure software and multiprocessor systems
安全世界的執行會降低普通世界調度效率,可以通過將所有的安全任務僅在一個核上運行。
5.5 TrustZone API
通過TZAPI,非安全世界客戶端發送命令到安全世界請求服務。
Chapter 6 TrustZone System Design
一個名為Gadget2008 SOC安全設計方案介紹。
6.3.4 Putting the hardware together
TZASC在AXI總線和DMC中間,對DRAM進行安全和非安全多區域划分。如何划分?對齊地址是多少?最多多少個分區?
TZMA在AXI總線和SRAM之間,僅能划分成安全和分安全兩個分區。還可由TZPC對分區進行動態調整。
TZPC對外設安全進行控制。
BootROM/NV Counter/OTP完全位於安全區,SRAM可以划分成安全和非安全兩個區。
GIC可以被安全或非安全中斷源。