1、TrustZone
ARM TrustZone技術是芯片級的安全解決方案,通過在CPU內(nèi)核的設計中集成系統(tǒng)安全性擴展,同時提供安全軟件平臺,為安全支付、數(shù)字版權管理(DRM, Digital Rights Management)、企業(yè)服務等應用提供了安全的運行環(huán)境。
TrustZone將硬件和軟件資源劃分為兩個執(zhí)行環(huán)境:安全世界(Secure World)和普通世界(Normal World)。不同執(zhí)行環(huán)境的系統(tǒng)軟件和應用軟件、內(nèi)存區(qū)和外圍設備等均相互獨立。TrustZone的硬件邏輯,使安全世界的資源與普通世界隔離,不能被普通世界的組件訪問。
把敏感資源放在安全世界,能保護絕大多數(shù)的資源免受很多潛在的攻擊,包括一些很難保證安全的操作,如用鍵盤或者觸摸屏輸入密碼。普通世界和安全世界的代碼以分時共享的方式在同一個物理處理器核上運行,使其不需要專用的處理器內(nèi)核來執(zhí)行安全代碼,節(jié)省了芯片面積和能耗。
1、TrustZone硬件架構
TrustZone的硬件架構如圖3-1所示,其核心包括處理器內(nèi)核、直接內(nèi)存訪問(DMA,Direct Memory Access)、安全RAM、安全啟動ROM、通用中斷控制(GIC,Generic Interrupt Controller)、TrustZone地址空間控制器(TZASC,Trust Zone Address Space Controller)、TrustZone保護控制器、動態(tài)內(nèi)存控制器(DMC,Dynamic Memory Controller)和DRAM(Dynamic Random Access Memory,動態(tài)內(nèi)存控制器),TrustZone內(nèi)部組件通過AXI(Advanced eXtensible Interface,先進的可擴展接口)系統(tǒng)總線通信,與外設通過AXI-to-APB橋通信。
(1)系統(tǒng)安全性
TrustZone隔離了所有SoC(System on Chip,系統(tǒng)級芯片)硬件和軟件資源,劃分為兩個執(zhí)行環(huán)境,即用于安全子系統(tǒng)的安全區(qū)域以及用于存儲其他所有內(nèi)容的普通區(qū)域。TrustZone通過AXI和APB實現(xiàn)了硬件資源的區(qū)域分離,并通過AXI總線的硬件邏輯確保普通區(qū)域的組件無法訪問安全區(qū)域的資源。將敏感數(shù)據(jù)存儲在安全區(qū)域,將安全軟件運行在安全處理器內(nèi)核中,確保敏感數(shù)據(jù)存儲和訪問免受攻擊,如使用鍵盤或觸摸屏輸入密碼等難以防護的攻擊。
TrustZone架構的總線結構中, AXI是一種面向高性能、高帶寬、低延遲的片內(nèi)總線,用于連接高速設備 ; APB是一種低門數(shù)、低帶寬的外設總線,用于連接低速設備 ,APB通過AXI-to-APB橋連接到AXI系統(tǒng)總線上。
AMBA協(xié)議是用于連接和管理片上系統(tǒng)中功能塊的開放標準和芯片互連規(guī)范,TrustZone使用的AXI總線和APB外設總線均遵循AMBA3協(xié)議。
為支持TrustZone技術,AMBA3 AXI系統(tǒng)總線在 每個讀寫信道都增加了一個額外的控制信號,稱作非安全位(NS位) 。
當主設備向總線提出讀寫事務請求時,必須將控制信號發(fā)送到總線上,總線從設備的解碼邏輯解釋該控制信號, 允許安全主設備對安全從設備的訪問,并拒絕非安全主設備對安全從設備的訪問, 依據(jù)外設的硬件設計和總線配置,從設備或總線可以產(chǎn)生錯誤訪問的狀態(tài)信號。
TrustZone架構 通過AMBA3 APB外設總線提供了保護外設安全性的特性,包括中斷控制器、時鐘及用戶I/O設備。 相比僅僅保護數(shù)據(jù)安全,TrustZone架構的安全世界可以解決更廣泛的安全問題。
安全中斷控制器和時鐘允許非中斷安全任務來監(jiān)控系統(tǒng), 安全時鐘源保證了DRM的可靠性,安全鍵盤保證用戶輸入密碼的安全性 。為了使現(xiàn)有AMBA2 APB外設與實現(xiàn)TrustZone技術的系統(tǒng)兼容,APB總線沒有帶對應的NS位,而由AXI-to-APB橋負責管理APB外設的安全。AXI-to-APB橋會主動拒絕異常的安全設置事務請求,而不會把請求發(fā)送給外設。
(2)處理器內(nèi)核安全性
通過ARM處理器內(nèi)核的擴展,普通區(qū)域和安全區(qū)域的代碼能夠以分時的方式安全有效地運行在同一個物理處理器內(nèi)核上,不需要使用專用安全處理器內(nèi)核,在保證處理器內(nèi)核安全的同時兼顧了芯片面積和能耗。(有點像時間片任務切換)
目前ARM主流產(chǎn)品,如ARM Cortex-A5、ARM Cortex-A7、ARM Cortex-A9等處理器均已支持前述處理器內(nèi)核安全擴展。
在處理器架構上,每個帶TrustZone安全擴展的處理器核都提供兩個虛擬核:安全核和非安全核。
它們分屬不同的執(zhí)行環(huán)境安全區(qū)域和非安全區(qū)域,如圖3-2所示。同時處理器引入了一個特殊的機制——監(jiān)控模式,負責不同執(zhí)行環(huán)境間的切換。非安全核僅能訪問非安全系統(tǒng)資源,但安全核能訪問所有資源。
ARM CP15協(xié)處理器中引入一個安全配置寄存器(SCR),該寄存器中有一個NS位,NS位表明當前處理器所處的安全狀態(tài):0代表安全態(tài),1代表非安全態(tài)。 安全配置寄存器中的NS位是TrustZone對系統(tǒng)所做的關鍵擴展 ,該NS位不僅可以影響CPU內(nèi)核和內(nèi)存子系統(tǒng),還可以影響片內(nèi)外設的工作。
當ARM處理器處于特權模式工作狀態(tài),即系統(tǒng)模式(sys)、中斷模式(irq)、快速中斷模式(iq)、管理模式(svc)、數(shù)據(jù)訪問終止模式(abt)或未定義指令終止模式(und)時,可以讀寫安全配置寄存器,而在用戶模式(usr)時不允許讀寫。
NS位只能被運行在安全態(tài)且處于特權模式的軟件改變,系統(tǒng)在非安全態(tài)時不能訪問SCR寄存器,通過NS位的狀態(tài)控制處理器安全狀態(tài)的切換。
在TrustZone處理器中同時引入了一個特殊的模式——監(jiān)控模式。監(jiān)控模式是一種特殊的安全狀態(tài),當系統(tǒng)處于監(jiān)控模式時,不管NS位是否為0,都可以訪問安全世界的資源。從非特權模式到特權模式只能通過異常來進行,與該過程類似的,從非安全態(tài)到監(jiān)控模式也是通過異常進行的。從非安全狀態(tài)可以通過3種異常進入監(jiān)控模式:執(zhí)行SMC(Secure Monitor Call,安全監(jiān)視調(diào)用)指令、外部中止、FIQ(Fast Interrupt Request,快速中斷請求)和IRQ(Interrupt Request,中斷請求)。監(jiān)控模式還負責實現(xiàn)兩個虛擬核之間切換時的上下文備份和恢復。
監(jiān)控器可以在沒有任何執(zhí)行環(huán)境的代碼幫助下直接捕獲FIQ和IRQ,當執(zhí)行流到達監(jiān)控器的時候,監(jiān)控器能將中斷請求路由到相應的中斷處理程序與安全中斷控制器結合起來,從而讓安全中斷源發(fā)出的中斷不被普通世界軟件操作。(是不是中斷管理器)
ARM推薦使用IRQ作為普通世界中斷源,F(xiàn)IQ作為安全世界中斷源。如果中斷發(fā)生在相應的執(zhí)行環(huán)境,則不需要進行執(zhí)行環(huán)境的切換;如果中斷發(fā)生在另外的執(zhí)行環(huán)境,由監(jiān)控器控制切換執(zhí)行環(huán)境。一般情況下在執(zhí)行監(jiān)控器代碼的時候應該關閉中斷。同時在CP15協(xié)處理器中還引入一個配置寄存器以防止普通世界的惡意軟件屏蔽安全世界的中斷。
內(nèi)存管理是實現(xiàn)安全管理的另一關鍵技術。TrustZone技術的內(nèi)存管理,通過對一個增強的內(nèi)存子系統(tǒng)MMU(Memory Management Unit,內(nèi)存管理單元)和Cache增加相應的控制邏輯實現(xiàn)。
ARM處理器中一級存儲系統(tǒng)的主要部件就是內(nèi)存管理單元,用來將程序和數(shù)據(jù)的虛擬地址轉換為物理地址。頁表描述了虛擬地址到物理地址的映射關系,以及每一頁的訪問權限和Cache屬性。
在有MMU但是沒有TrustZone安全擴展的 ARM內(nèi)核中,只有一個頁表基地址寄存器, 通過特權模式代碼重寫頁表基地址寄存器,使其重新指向一個新的頁表來提供多個獨立的地址空間。
在TrustZone安全擴展處理器中, 有兩個頁表基地址寄存器,不同安全狀態(tài)使用不同的頁表基地址寄存器, 相當于有兩個虛擬MMU,每個虛擬MMU分屬不同的虛擬核,使每個執(zhí)行環(huán)境有一個本地頁表集,各個執(zhí)行環(huán)境的虛擬地址到物理地址的轉換是獨立的,在切換執(zhí)行環(huán)境時不需要切換頁表。
這樣,在兩種模式切換時不必刷新緩存,進而提升軟件在這兩種模式間通信時的性能。為了實現(xiàn)這種特性,L1、L2等各級處理器緩存需要為 Tag域增加一個NS位 ,用來標識這一行的安全狀態(tài)。無論Cache行的安全狀態(tài)如何,只要沒被鎖住,都可以被換出到主存中,為新的緩沖數(shù)據(jù)留出存儲空間。高性能設計能夠在Cache中同時支持安全模式及普通模式的數(shù)據(jù)緩存,是一個非常有用的特性。
TrustZone技術中使用協(xié)處理器實現(xiàn)處理器擴展功能,ARM協(xié)處理器附屬于ARM處理器,通過 擴展指令集或提供配置寄存器來擴展內(nèi)核功能 。CP15協(xié)處理器是TrustZone技術中使用的最重要的ARM協(xié)處理器,用于控制Cache、TCM和存儲器管理。
協(xié)處理器通過設置某些寄存器實現(xiàn)普通世界和安全世界的工作協(xié)同。其中某些寄存器是有備份的,即普通世界和安全世界各有一個這樣的寄存器,此時修改寄存器只會對它所在執(zhí)行環(huán)境起作用;有的協(xié)處理器寄存器是沒有備份的,對它的修改會影響到全局,如控制對Cache進行鎖定操作的寄存器。
對這種全局寄存器的訪問必須嚴格控制,一般只對安全世界提供讀寫權限,而普通世界只能讀取。
(3)調(diào)試安全性
通過安全感知的調(diào)試結構對安全區(qū)域的調(diào)試進行嚴格控制,而不會影響普通區(qū)域的調(diào)試。(這個方面我倒是一直沒有接觸到)
2、TrustZone軟件架構
TrustZone硬件架構將新的安全擴展特性應用于CPU內(nèi)核之中,為 建立安全執(zhí)行環(huán)境提供了硬件基礎 ,操作系統(tǒng)廠商、手機制造商和芯片廠商可以根據(jù)自己的安全需求,在一個可共用的硬件框架之上擴展和開發(fā)不同的安全解決方案。
ARM同時提供了一個典型的安全軟件架構,如圖3-3所示。安全軟件架構包括安全世界、普通世界兩個區(qū)域,通過監(jiān)控器實現(xiàn)兩者的切換。目前的絕大多數(shù)解決方案都是嚴格基于此架構實現(xiàn)。
TrustZone的安全軟件架構設計基于智能終端的使用模式,包含安全啟動、監(jiān)控模式、TrustZone API 3個方面。
(1)安全啟動
TrustZone軟件安全啟動過程如圖3-4所示。
在系統(tǒng)初始化時,在安全特權模式下從片內(nèi)安全引導代碼區(qū)啟動,采用這種方式以避免OS被攻擊。
片內(nèi)安全引導代碼完成系統(tǒng)安全狀態(tài)的設置,然后引導OS啟動。
在OS啟動的每一個階段,功能模塊均需通過驗證才允許加載 。
通過檢查保存在安全域內(nèi)的簽名可以保證OS引導代碼的完整性,避免終端設備被非法重新硬件編程。
(可以看看我在ATF的那個翻譯-COT信任鏈,這種啟動鏈的安全校驗更多地是像一種思維模式)
(2)監(jiān)控模式
TrustZone監(jiān)控器實現(xiàn)軟件系統(tǒng)在安全世界和普通世界之間的切換管理。
如前所述,普通世界的應用程序可以通過3種異常進入監(jiān)控模式:執(zhí)行安全監(jiān)視調(diào)用SMC指令、外部中止、FIQ和IRQ。
典型的切換過程如下。當普通世界的應用需要切換到安全世界的服務時,首先切換到普通世界的特權模式,在該模式下調(diào)用SMI,處理器將切換進入監(jiān)控模式;
監(jiān)控模式首先備份普通世界的運行時環(huán)境和上下文,然后進入安全世界的特權模式,再轉換為安全世界的用戶模式,此時的運行環(huán)境為安全世界的執(zhí)行環(huán)境,可以執(zhí)行相應的安全服務。
上述過程包括普通世界和安全世界的切換,以及用戶模式和特權模式的切換。 執(zhí)行環(huán)境的切換只有在各自世界的特權模式下才能實現(xiàn) ,但應用的調(diào)用關系只能在 用戶模式下執(zhí)行 ,避免應用越權使用系統(tǒng)級別的調(diào)用。(執(zhí)行和切換)
監(jiān)控模式中的代碼實現(xiàn)兩個虛擬運行世界的上下文備份和恢復。CP15協(xié)處理器中的安全狀態(tài)寄存器SCR的NS位標志著當前處理器所處的安全狀態(tài),該寄存器不允許被普通世界的應用訪問。由于監(jiān)控器負責環(huán)境切換時對狀態(tài)的存儲和恢復,所以執(zhí)行環(huán)境的切換不需要在各自系統(tǒng)中增加環(huán)境切換代碼。
TrustZone通過優(yōu)化中斷向量表的設計避免惡意中斷攻擊,并滿足必要的執(zhí)行環(huán)境切換需求。
TrustZone把中斷向量表分成兩部分:安全的中斷向量表置于安全存儲器,而且指向安全的中斷處理程序;
非安全的中斷向量表和處理程序置于普通存儲器中,以避免某些惡意程序修改安全的中斷向量表和處理程序或其他通過非法手段進入安全世界。
處理器執(zhí)行完安全任務后,TrustZone監(jiān)視器最后還要 執(zhí)行一遍SMI指令 ,其目的在于清除CP15的NS位。
監(jiān)視器還會將之前的內(nèi)容重新存回所有寄存器,使處理器恢復到之前的非安全狀態(tài)。
通過這種恢復機制,所有安全世界中的指令和數(shù)據(jù)還是原值,未受任何的修改,這也是安全世界之所以安全的關鍵。(函數(shù)的堆棧調(diào)用)
(3)TrustZone API
TrustZone API為希望獲取安全保護的應用程序提供了一個標準接口,定義了運行在普通世界中的客戶端與安全世界之間交互的接口,應用程序必須通過調(diào)用TrustZone API才能被允許進入安全世界。
應用使用TrustZone API能夠與一個獨立于實際所在系統(tǒng)的安全部件進行通信,使開發(fā)者能夠?qū)W⒂趹贸绦虮旧淼墓δ芎托阅埽⑶铱s短開發(fā)周期,同時保證應用的安全性。
但是,希望使用TrustZone提供安全保護的應用程序必須根據(jù)它們運行的安全平臺進行重寫,導致市場被過度細分,制約了應用程序與服務之間良好的生態(tài)環(huán)境的形成。
客戶端包括應用程序和Service Stub服務抽象層,調(diào)用普通世界下的TrustZone API呼出,通過TrustZone交互機制傳送給安全世界下的服務管理器和安全服務。
大部分的API函數(shù)都設計為客戶端程序與安全服務間的溝通橋梁,兩者通過結構體信息(Structured Messages)及共享內(nèi)容(Shared Memory)這兩個機制形成通信信道。
當傳遞的信息量較小時,可通過結構體信息來傳送及溝通; 而當傳遞的信息量較大時,則會直接將客戶端的memory映射到安全服務區(qū)的memory空間,然后通過該Share Memory作為客戶端與服務端之間直接存取信息的緩沖區(qū)。 (這個部分就是動態(tài)TA加載)
2、SecureBoot安全啟動技術
由于廠家版本的OS大多嵌入了相當數(shù)量的廠家生態(tài)應用,同時不明來源的系統(tǒng)鏡像和不可靠的刷機是系統(tǒng)風險引入的一個重要途徑,多數(shù)手機廠商希望用戶能保留和使用廠家的OS版本。另外,有的惡意病毒會通過從定向系統(tǒng)啟動位置引入安全風險,由此提出了系統(tǒng)安全啟動技術。
安全啟動技術的邏輯大同小異,本節(jié)以展訊的SecureBoot為例說明。
展訊的SecureBoot安全啟動技術采用多級認證的機制,建立了自底向上的可信啟動過程。
SecureBoot對系統(tǒng)軟件采用簽名認證的方式,在手機出廠前對手機操作系統(tǒng)的Image文件進行簽名認證,計算簽名文件的散列值并寫入芯片的一次性可編程模塊。手機每次啟動時先校驗系統(tǒng)的散列值,然后對簽名Images逐級校驗,實現(xiàn)從手機芯片到系統(tǒng)軟件的鏈式校驗過程。
防止非授權更改甚至替換手機原版操作系統(tǒng)中固件或者操作系統(tǒng),避免手機出廠后沒有得到客戶簽名認證的非授權操作,保護手機中原有的操作系統(tǒng)和軟件版本。
SecureBoot在啟動過程中從Rom Code到Images采用了多層鏈式校驗機制;包括對RomCode的散列校驗,對SPL的完整性的RSA校驗。需要注意的是,RSA私鑰是SecureBoot的保障,需要小心保存。
SecureBoot安全啟動的流程如下。
- (1)ROMCode讀取存儲于一次性可編程模塊中BSC(Base Station Controller,基站控制器)的散列值和UID(User Identification,用戶身份)。
- (2)加載SPL(Second Program Loader,第二次裝載系統(tǒng))和BSC。
- (3)RomCode利用散列函數(shù)來驗證BSC的完整性。
- (4)RomCode利用RSA算法來驗證SPL的完整性。
- (5)加載和運行安全操作系統(tǒng)引導程序。
- (6)驗證和運行安全操作系統(tǒng)。
- (7)SPL利用RSA算法驗證UBoot。
- (8)UBoot利用RSA算法驗證bootimage、recoveryimage、modem、sp等。
-
處理器
+關注
關注
68文章
19421瀏覽量
231231 -
寄存器
+關注
關注
31文章
5363瀏覽量
121211 -
AMBA總線
+關注
關注
0文章
35瀏覽量
9613 -
ARM芯片
+關注
關注
1文章
126瀏覽量
21583 -
中斷控制器
+關注
關注
0文章
59瀏覽量
9491
發(fā)布評論請先 登錄
相關推薦
軟件架構存在的意義
決定嵌入式系統(tǒng)軟件架構的因素和架構的影響
軟件架構的作用與設計思路
Arm架構中的TrustZone、CryptoCell以及Cryptoisland之間的區(qū)別是什么
STM32 MCU TrustZone開發(fā)調(diào)試技巧分享
ARM 架構中TrustZone 安全處理技術的研究
USB接口的硬件和軟件架構及應用設計
![USB接口的<b class='flag-5'>硬件</b>和<b class='flag-5'>軟件</b><b class='flag-5'>架構</b>及應用設計](https://file.elecfans.com/web1/M00/83/15/pIYBAFxAUWmACiI6AAEYZHhRvb8526.png)
簡單了解AUTOSRA軟件架構
什么是系統(tǒng)架構 為什么要做架構設計
Arm? TrustZone? 技術簡介
![Arm? <b class='flag-5'>TrustZone</b>? 技術簡介](https://file1.elecfans.com/web2/M00/8C/14/wKgaomSlQIKACGndAAAsmQnvcDI759.png)
評論