ARMv8-M平臺開發(fā)安全軟件的建議
ARM® TrustZone® 是針對片上系統(tǒng)(SoC)設計的系統(tǒng)級安全技術,它基于硬件,內(nèi)置于CPU和系統(tǒng)內(nèi)核,為半導體芯片設計師設計設備安全性能(如可信根)量身打造。TrustZone可用于任何基于ARM Cortex®-A的系統(tǒng),隨著全新Cortex-M23和Cortex-M33處理器的發(fā)布與升級,Cortex-M也已經(jīng)支持該技術。從尺寸最小的微控制器(搭載針對Cortex-M處理器優(yōu)化的TrustZone技術),到高性能處理器(搭載針對Cortex-A處理器優(yōu)化的TrustZone技術),設計師們終于可以從設計初始就著手打造出色的安全性能了。
TrustZone安全技術將非可信資源和可信資源隔離
TrustZone技術的核心理念是將可信資源與非可信資源在硬件上實現(xiàn)隔離。在處理器內(nèi)部,軟件只能安裝于安全或非安全域其中一處;在兩個域間切換則必須經(jīng)過Cortex-A處理器的軟件(后文稱安全監(jiān)視器)和Cortex-M處理器的硬件(核心邏輯)處理才能執(zhí)行。這種將安全(可信)域和非安全(非可信)域隔離理念的實現(xiàn)不僅涉及CPU,還涵蓋存儲、片上總線系統(tǒng)、中斷、周邊設備接口和SoC上的軟件。
針對ARMv8-M處理器(Cortex-M)的TrustZone技術
ARMv8-M架構(gòu)將TrustZone技術拓展至Cortex-M級系統(tǒng),實現(xiàn)了對所有成本點的安全防護。為Cortex-M度身設計的TrustZone技術可以保護固件和周邊設備,并為安全啟動、可信更新以及可信根執(zhí)行實現(xiàn)隔離。該架構(gòu)具備嵌入式解決方案應有的確定性實時響應能力。同時,因為安全與非安全域間的上下文切換在硬件中完成,所以更快實現(xiàn)轉(zhuǎn)換及更高的電源效率。該架構(gòu)無需安裝任何安全監(jiān)視器軟件,因為處理器本身就能完成切換任務,不僅可以減少存儲足跡,還能降低代碼執(zhí)行的動態(tài)功率。
在繼續(xù)討論編程之前,我們先介紹以下幾個概念:
1. 地址定義安全
2. 新增執(zhí)行狀態(tài)
3. 跨域調(diào)用
概念1:地址定義安全
第一個需要了解的概念是:地址定義安全,即每一個地址都與一個特定的安全狀態(tài)相關。Cortex-M處理器采用全新引入的安全屬性單元來檢查地址的安全狀態(tài)。根據(jù)整體SoC設計,系統(tǒng)級接口可以重寫該屬性。選擇此狀態(tài)后,該地址還會通過一個存儲保護單元(視系統(tǒng)配置而定)。
地址定義安全圖解
概念2:新增執(zhí)行狀態(tài)
第二個概念是“新增執(zhí)行狀態(tài)”。ARMv7-M和ARMv6-M架構(gòu)定義了兩種執(zhí)行模式:管理者模式(handler mode)和線程模式(thread mode)。管理者模式是特權模式,可以接入SoC的所有資源;而線程模式則可以設定為特權或非特權兩種。憑借TrustZone安全拓展技術,我們可以對處理器模式進行鏡像處理,構(gòu)造安全和非安全兩種狀態(tài),每種狀態(tài)都各自包含管理者模式和線程模式。安全狀態(tài)和處理器模式是正交的,因此可形成4種狀態(tài)和模式的組合。在安全的存儲器中運行軟件時,處理器自動設定為安全狀態(tài);反之,在非安全存儲器中運行軟件時,處理器自動設定為非安全狀態(tài)。這種設計消除了本來用于管理狀態(tài)切換的安全監(jiān)控軟件的必要性,從而實現(xiàn)減少存儲足跡和功耗的目的。
新增正交態(tài)