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