目前主流的車載操作系統信息安全技術是基于ARM Trust Zone的TEE技術。ARM Trust Zone是基于硬件的安全功能,通過對硬件架構進行修改,在處理器層次引入了兩個不同權限的保護域——安全域和普通域,任何時刻處理器僅在其中的一個環境內運行。同時這兩個域完全是硬件隔離的,具有不同的權限,普通域中運行的應用程序或操作系統訪問安全域資源受到嚴格的限制,反過來安全域中運行的程序可以正常訪問普通域中的資源。兩種域之間的硬件隔離和不同權限等屬性為代碼和數據提供了有效安全機制,普通域用于運行操作系統,提供了正常執行環境(Rich Execution Environment,REE);安全域則使用安全小內核(TEE-kernel)提供可信執行環境(Trusted Execution Environment,TEE),機密數據可以在TEE中被存儲和訪問。即使普通域中操作系統被破壞入侵或ROOT,攻擊者也無法讀取或篡改TEE,保護關鍵業務與數據。TEE支持設備安全啟動、安全升級保護、敏感信息保護、安全管理等,對關鍵業務實時保護,TEE不需要額外的硬件支持,可由軟件控制自主切換。
(1)信息通訊的安全防護
系統可使用非對稱加密技術、鑒權技術、證書管理和認證技術、安全協議技術、防火墻技術、VPN等技術,對系統通信進行信息安全防車載操作系統總體技術要求研究報告護。
(2)系統服務層的信息安全防護
系統可使用訪問控制、惡意行為檢測、加密存儲等技術,對系統服務層進行信息安全防護。其中訪問控制機制,依據安全策略控制用戶、進程等主體對文件、數據庫等客體進行訪問。禁止不必要的服務(如FTP服務等),禁止非授權的遠程接入服務,禁止ROOT用戶直接登錄,且限制用戶提權操作,刪除或禁用無用賬號。
(3)系統應用的信息安全防護
系統應用可通過混淆、加殼防護、防反編譯、安全應用管理器等技術進行信息安全防護。
(4)密碼加密安全
常見密碼算法類型包括對稱加密算法、非對稱加密算法、雜湊算法。
?對稱加密算法:數據加密標準DES、高級數據加密標準AES、國際數據加密算法IDEA、分組密碼算法SM4。
?非對稱加密算法:RSA、橢圓曲線密碼算法ECC、數字簽名算法DSA、橢圓曲線公鑰密碼算法SM2。
?雜湊算法:MD5(不安全)、SHA1(160比特、不安全)、SM3、SHA256,用于保障數據完整性、數字簽名、MAC設計。
隨著國密算法的引入,國密安全模塊逐漸成為系統中的組成部分。國密安全服務通過固化在只讀存儲中的根證書和CA平臺進行交互,當系統收到外部請求,服務先將請求報文中的證書部分進行校驗比對,再通過證書附著的公鑰對請求內容進行驗簽,以此確認報文真實可靠,通過這種方式可以服務對外部進入的軟件升級包、控制命令、推送消息等進入的消息進行驗證,防止其被篡改。同時,組合AES、3DES以及國密的SM2和SM4構成的對稱、非對稱加密組合為通訊的私密性提供有效的保護。國密安全服務能夠為總線通訊、網絡連接、數據存儲等其他模塊提供加密、驗簽、簽名和密鑰存儲、證書管理等功能。
ARM Trust Zone
為提高系統的安全性,ARM早在ARMv6架構中就引入了Trust Zone技術,且在ARMv7和ARMv8中得到增強,Trust Zone技術能提供芯片級別對硬件資源的保護和隔離,當前在手機芯片領域已被廣泛應用。
一個完整的片上系統(SoC)由ARM核、系統總線、片上RAM、片上ROM以及其他外圍設備組件構成。只有支持Trust Zone技術的ARM核配合安全擴展組件,才能為整個系統提供芯片硬件級別的保護和隔離。
SoC硬件框
支持Trust Zone技術的ARM核在運行時將工作狀態劃分為兩種:安全狀態和非安全狀態。當處理器核處于安全狀態時只能運行TEE側的代碼,且具有REE側地址空間的訪問權限。當處理器核處于非安全狀態時只能運行REE側的代碼,且只能通過事先定義好的客戶端接口來獲取TEE側中特定的數據和調用特定的功能。
系統通過調用安全監控模式調用(secure monitor call,smc)指令實現ARM核的安全狀態與非安全狀態之間的切換。而ARM核對系統資源的訪問請求是否合法,則由SoC上的安全組件通過判定ARM核發送到SoC系統總線上的訪問請求中的安全狀態讀寫信號位(Non-secure bit,NS bit)來決定。只有當ARM核處于安全狀態(NS bit=0)時發送到系統總線上的讀寫操作才會被識別為安全讀寫操作,對應TEE側的數據資源才能被訪問。反之,當ARM核處于非安全狀態(NS bit=1)時,ARM核發送到系統總線上的讀寫操作請求會被作為非安全讀寫操作,安全組件會根據對資源的訪問權限配置來決定是否響應該訪問請求。這也是Trust Zone技術能實現對系統資源硬件級別的保護和隔離的根本原因。
在ARMv8架構中使用執行等級(Execution Level,EL)EL0~EL3來定義ARM核的運行等級,其中EL0~EL2等級分為安全態和非安全態。ARMv8架構與ARMv7架構中ARM核運行權限的對應關系如圖所示。
ARMv7/v8運行權限對比
一、ARM安全擴展組件
Trust Zone技術之所以能提高系統的安全性,是因為對外部資源和內存資源的硬件隔離。這些硬件隔離包括中斷隔離、片上RAM和ROM的隔離、片外RAM和ROM的隔離、外圍設備的硬件隔離、外部RAM和ROM的隔離等。實現硬件層面的各種隔離,需要對整個系統的硬件和處理器核做出相應的擴展。這些擴展包括:
·對處理器核的虛擬化,也就是將AMR處理器的運行狀態分為安全態和非安全態。
·對總線的擴展,增加安全位讀寫信號線。
·對內存管理單元(Memory Management Unit,MMU)的擴展,增加頁表的安全位。
·對緩存(Cache)的擴展,增加安全位。
·對其他外圍組件進行了相應的擴展,提供安全操作權限控制和安全操作信號。
二、AXI總線上安全狀態位的擴展
為了支持Trust Zone技術,控制處理器在不同狀態下對硬件資源訪問的權限,ARM對先進可擴展接口(Advanced eXtensible Interface,AXI)系統總線進行了擴展。在原有AXI總線基礎上對每一個讀寫信道增加了一個額外的控制信號位,用來表示當前的讀寫操作是安全操作還是非安全操作,該信號位稱為安全狀態位(NS bit)或者非安全狀態位(Non-Secure bit)。
·AWPROT[1]:總線寫事務——低位表示安全寫事務操作,高位表示非安全寫事務操作。
·ARPROT[1]:總線讀事務——低位表示安全讀事務操作,高位表示非安全讀事務操作。
當主設備通過總線發起讀寫操作時,從設備或者外圍資源同時也需要將對應的PROT控制信號發送到總線上。總線或者從設備的解碼邏輯必須能夠解析該PROT控制信號,以便保證安全設備在非安全態下不被非法訪問。所有的非安全主設備必須將安全狀態位置成高位,這樣就能夠保證非安全主設備無法訪問到安全從設備。如果一個非安全主設備試圖訪問一個安全從設備,將會在總線或者從設備上觸發一個錯誤操作,至于該錯誤如何處理就依賴于從設備的處理邏輯和總線的配置。通常這種非法操作最終將產生一個SLVERR(slave error)或者DECERR(decode error)。
三、AXI-to-APB橋的作用
Trust Zone同樣能夠保護外圍設備的安全,例如中斷控制、時鐘、I/O設備,因此Trust-Zone架構還能用來解決更加廣泛的安全問題。比如一個安全中斷控制器和安全時鐘允許一個非中斷的安全任務來監控系統,能夠為DRM提供可靠的時鐘,能夠為用戶提供一個安全的輸入設備從而保證用戶密碼數據不會被惡意軟件竊取。
AMBA3規范包含了一個低門數、低帶寬的外設總線,被稱作外設總線(Advanced Peripheral Bus,APB),APB通過AXI-to-APB橋連接到系統總線上。而APB總線并不具有安全狀態位,為實現APB外設與Trust Zone技術相兼容,APB-to-AXI橋將負責管理APB總線上設備的安全。APB-to-AXI橋會拒絕不匹配的安全事務設置,并且不會將該事務請求發送給外設。
四、Trust Zone地址空間控制組件
Trust Zone地址空間控制組件(Trust Zone Address Space Controller,TZASC)是AXI總線上的一個主設備,TZASC能夠將從設備全部的地址空間分割成一系列的不同地址范圍。在安全狀態下,通過編程TZASC能夠將這一系列分割后的地址區域設定成安全空間或者是非安全空間。被配置成安全屬性的區域將會拒絕非安全的訪問請求。
使用TZASC主要是將一個AXI從設備分割成幾個安全設備,例如off-Soc、DRAM等。ARM的動態內存控制器(Dynamic Memory Controller,DMC)并不支持安全和非安全分區的功能。如果將DMC接到TZASC上,就能實現DRAM支持安全區域和非安全區域訪問的功能。需要注意的是,TZASC組件只支持存儲映射設備對安全和非安全區域的劃分與擴展,但不支持對塊設備(如EMMC、NAND flash等)的安全和非安全區域的劃分與擴展。
TZASC組件示意
五、Trust Zone內存適配器組件
Trust Zone內存適配器組件(Trust Zone Memory Adapter,TZMA)允許對片上靜態內存(on-SoC Static Memory)或者片上ROM進行安全區域和非安全區域的劃分。TZMA支持最大2MB空間的片上靜態RAM的劃分,可以將2MB空間劃分成兩個部分,高地址部分為非安全區域,低地址部分為安全區域,兩個區域必須按照4KB進行對齊。分區的具體大小通過TZMA的輸入信號R0SIZE來控制,該信號來自TZPC的輸出信號TZPCR0SIZE。即通過編程TZPC可以動態地配置片上靜態RAM或者ROM的大小。
使用TZMA組件的鏈接示意
六、Trust Zone保護控制器組件
Trust Zone保護控制器組件(Trust Zone Protection Controller,TZPC)是用來設定TZPCDECPORT信號和TZPCR0SIZE等相關控制信號的。這些信號用來告知APB-to-AXI對應的外設是安全設備還是非安全設備,而TZPCR0SIZE信號用來控制TZMA對片上RAM或片上ROM安全區域大小的劃分。TZPC包含三組通用寄存器TZPCDECPROT[2:0],每組通用寄存器可以產生8種TZPCDECPROT信號,也就是TZPC最多可以將24個外設設定成安全外設。TZPC組件還包含一個TZPCROSIZE寄存器,該寄存器用來為TZMA提供分區大小信息。
TZPC組件接口示意
當上電初始化時,TZPC的TZPCDECROT寄存器中的位會被清零,同時TZPCR0SIZE寄存器會被設置成0x200,表示接入到TZMA上的片上RAM或者ROM的安全區域大小為2MB。通過修改TZPC的寄存器配置的值可實現用戶對資源的特定配置。
TZPC使用示例
七、Trust Zone中斷控制器組件
在支持Trust Zone的SoC上,ARM添加了Trust Zone中斷控制器(Trust Zone Interrupt Controller,TZIC)。TZIC的作用是讓處理器處于非安全態時無法捕獲到安全中斷。TZIC是第一級中斷控制器,所有的中斷源都需要接到TZIC上。TZIC根據配置來判定產生的中斷類型,然后決定是將該中斷信號先發送到非安全的向量中斷控制器(Vector Interrupt Controller,VIC)后以nIRQ信號發送到處理器,還是以nTZICFIQ信號直接發送到處理器。
TZIC在SoC中的使用示意
通過對TZIC的相關寄存器進行編程,可對TZIC進行配置并設定每個接入到TZIC的中斷源的中斷類型。TZIC具有眾多寄存器,細節說明可以參考相關ARM的文檔。在TZIC中用來設置中斷源類型的寄存器為TZICIntSelect,如果TZICIntSelect中的某一位被設置成1,則該相應的中斷源請求會被設置成快速中斷請求(Fast Interrupt Request,FIQ)。如果某一位被設置成0,則該中斷源的中斷請求會被交給VIC進行處理。如果VIC的IntSelect將獲取到的中斷源設置成FIQ,那么該中斷源會被再次反饋給TZIC進行處理。
八、Cache和MMU的擴展
在支持Trust Zone的SoC上,會對MMU進行虛擬化,使得寄存器TTBR0、TTBR1、TTBCR在安全狀態和非安全狀態下是相互隔離的,因此兩種狀態下的虛擬地址轉換表是獨立的。
存放在MMU中的每一條頁表描述符都會包含一個安全狀態位,用以表示被映射的內存是屬于安全內存還是非安全內存。虛擬化的MMU共享轉換監測緩沖區(Translation Lookaside Buffer,TLB),同樣TLB中的每一項也會打上安全狀態位標記,只不過該標記是用來表示該條轉換是正常世界狀態轉化的還是安全世界狀態轉化的。
Cache也同樣進行了擴展,Cache中的每一項都會按照安全狀態和非安全狀態打上對應的標簽,在不同的狀態下,處理器只能使用對應狀態下的Cache。
九、Trust Zone技術對資源隔離的實現
ARM處理器核的虛擬化和資源隔離是Trust Zone實現安全需求的根本。支持Trust Zone的處理器核具有虛擬化,也即將一個物理核分成安全狀態和非安全狀態。當處理器處于非安全狀態時,只能訪問屬于非安全的外設和內存,而不能訪問安全的資源;當處理器處于安全態時,處理器既可以訪問安全資源,也可以訪問非安全的資源,只有當處理器核為安全世界狀態時才可能發出PROT的安全訪問信號。
十、中斷源的隔離
在原來的ARM芯片中,使用VIC來對外部中斷源進行控制和管理,支持Trust Zone后,ARM提出了TZIC組件,在芯片設計時,該組件作為一級中斷源控制器,控制所有的外部中斷源,通過編程TZIC組件的相關寄存器來設定哪個中斷源為安全中斷源FIQ,而未被設定的中斷源將會被傳遞給VIC進行處理。一般情況下VIC會將接收到的中斷源設定成普通中斷請求(Interrupt Request,IRQ),如果在VIC中將接收到的中斷源設定成FIQ,則該中斷源會被反饋給TZIC組件,TZIC組件會將安全中斷源送到安全世界狀態中進行處理。
十一、片上RAM和片上ROM的隔離
芯片內部存在小容量的RAM或者ROM,以供芯片上電時運行芯片ROM或者存放芯片自身相關的數據。Trust Zone架構對該部分也進行了隔離操作。隔離操作通過使用TZMA和TZPC組件來實現。
TZMA用來將片上RAM或者ROM劃分成安全區域和非安全區域,安全區域的大小則由接入的TZPCR0SIZE信號來決定。而TZPCR0SIZE的值可以通過編程TZPC組件中的TZPCR0SIZE寄存器來實現。
當處理器核訪問片上RAM或者ROM時,TZMA會判定訪問請求的PROT信號是安全操作還是非安全操作,如果處理器發出的請求為非安全請求而該請求又嘗試去訪問安全區域時,TZMA就會認為該請求為非法請求。這樣就能實現片上RAM和ROM的隔離,達到非安全態的處理器核無法訪問片上安全區域的RAM和ROM。
十二、片外DRAM的隔離
一個完整的系統必然會有片外RAM,對片外RAM的隔離是通過TZASC組件實現的,ARM本身的DMC可以將DRAM分割成不同的區域,這些區域是沒有安全和非安全分類。將DMC與TZASC相連后再掛到總線上,通過對TZASC組件進行編程可以將DRAM劃分成安全區域和非安全區域。當主設備訪問DRAM時,除需要提供物理地址之外,還會發送PROT信號。TZASC組件首先會判定主設備需要訪問的DARM地址是屬于安全區域還是非安全區域,然后再結合接收到的PROT信號來判定該次訪問是否有效。如果PROT信號為非安全訪問操作,且訪問的DRAM地址屬于安全區域,則TZASC就不會響應這次訪問操作,這樣就能實現DRAM中安全區域和非安全區域的隔離。
十三、外圍設備的隔離
其他外圍設備都會掛載到APB總線上,然后通過AXI-to-APB橋連接到AXI總線上,AXI-to-APB結合TZPC組件的TZPCDECROT的值及訪問請求的PROT信號來判定該訪問是否有效。當處理器需要訪問外圍設備時,會將地址和PROT信號發送到AXI總線上。
AXI-to-APB橋會對接收到的請求進行解析,獲取需要訪問的所需外圍設備,然后通過查詢TZPCDECROT的值來判斷外設的安全類型,再根據PROT信號就能判定該請求的安全類型。如果該請求是非安全請求,但需要訪問的外圍設備屬于安全設備,則AXI-to-APB會判定該訪問無效。通過對TZPC中的TZPCDECROT寄存器進行編程能夠設置外設的安全類型,從而做到外設在硬件層面的隔離。
十四、ARM可信固件
ARM可信任固件(ARM Trusted Firmware,ATF)是由ARM官方提供的底層固件,該固件統一了ARM底層接口標準,如電源狀態控制接口(Power Status Control Interface,PSCI)、安全啟動需求(Trusted Board Boot Requirements,TBBR)、安全世界狀態(SWS)與正常世界狀態(NWS)切換的安全監控模式調用(secure monitor call,smc)操作等。ATF旨在將ARM底層的操作統一使代碼能夠重用和便于移植。
ATF的源代碼共分為bl1、bl2、bl31、bl32、bl33部分,其中bl1、bl2、bl31部分屬于固定的固件,bl32和bl33分別用于加載TEEOS和REE側的鏡像。整個加載過程可配置成安全啟動的方式,每一個鏡像文件在被加載之前都會驗證鏡像文件的電子簽名是否合法。
ATF主要完成的功能如下:
·初始化安全世界狀態運行環境、異常向量、控制寄存器、中斷控制器、配置平臺的中斷。
·初始化ARM通用中斷控制器(General Interrupt Controller,GIC)2.0版本和3.0版本的驅動初始化。
·執行ARM系統IP的標準初始化操作以及安全擴展組件的基本配置。
·安全監控模式調用(Secure Monitor Call,smc)請求的邏輯處理代碼(Monitor模式/EL3)。
·實現可信板級引導功能,對引導過程中加載的鏡像文件進行電子簽名檢查。
·支持自有固件的引導,開發者可根據具體需求將自有固件添加到ATF的引導流程中。
十五、ATF與TEE的關系
為規范和簡化Trust Zone OS的集成,在ARMv8架構中,ARM引入ATF作為底層固件并開放了源碼,用于完成系統中BootLoader、Linux內核、TEEOS的加載和啟動以及正常世界狀態和安全世界狀態的切換。
ATF將整個啟動過程劃分成不同的啟動階段,由BLx來表示。例如,TEEOS的加載是由ATF中的bl32來完成的,安全世界狀態和正常世界狀態之間的切換是由bl31來完成的。在加載完TEEOS之后,TEEOS需要返回一個處理函數的接口結構體變量給bl31。當在REE側觸發安全監控模式調用指令時,bl31通過查詢該結構體變量就可知需要將安全監控模式調用指令請求發送給TEE中的那個接口并完成正常世界狀態到安全世界狀態的切換。
ARMv8架構之后ARM提供了ATF,BootLoader、TEE鏡像文件、Linux內核鏡像文件、recovery鏡像文件都是由ATF來進行引導和加載而不是由ChipRom來完成的。ChipRom只會去驗證ATF中bl1的合法性,后續引導過程同樣也是按照鏈式驗簽的方式進行,符合TBBR規范。在ARMv8架構中整個安全引導的流程如圖所示。
ARMv8的Secure Boot流程
在ARMv8架構中,如果系統需要支持TEE,則幾乎都必須使用由ARM提供的ATF作為底層固件。
十六、ARM V9 CCA機密計算
Arm CCA建立在Armv8-A中已經廣泛使用的隔離技術之上。Arm CCA提供額外的安全架構,即使在使用中也能保護數據和代碼,并能夠更好地控制誰可以訪問數據和算法。這項在Armv9-A中引入的技術將通過降低與共享數據相關的風險并幫助開發人員實施強大的隱私控制來幫助釋放數據的真正力量和潛力。
Arm CCA引入了兩項新功能:支持Realms和動態Trust Zone。
1、機密計算Realms
Arm機密計算架構引入了Realm Management Extension(RME),該擴展支持稱為Realm的新型可證明隔離環境。該環境建立在Trust Zone Normal和Secure世界上,增加兩個額外的世界,每個世界都有自己的安全狀態和專用的物理地址空間。RME還允許在運行時在世界之間移動內存,而新硬件會檢查每個內存訪問,阻止那些世界之間的隔離邊界不允許的訪問。
RME保護主流計算工作負載,例如虛擬機或容器免受特權軟件和硬件代理的影響,包括hypervisor程序、普通世界內核甚至Trust Zone應用程序。
非常適合保護在公共云環境和主機操作系統的安全性和完整性難以審核或保證的任何平臺中運行的工作負載。
數據和代碼不受任何平臺服務和其他執行環境的影響:
?管理軟件,包括創建Realm的任何管理程序或內核
?The host OS
?Other Realms
?Devices not trusted by the Realm
?Realm受到Trust Zone代碼的保護
Realms、Normal和Secure世界之間的關系
2、動態Trust zone技術
除了支持Realm之外,Realm Management Extension還允許在Normal和Secure世界之間按需移動內存。這允許Trust Zone使用的內存量根據給定用例動態擴展。稱之為Arm動態Trust Zone技術。
Trust Zone動態內存更有效地利用寶貴的DRAM提高了使用Trust Zone進行內存密集型操作的靈活性例如媒體解碼、內容保護和機器學習模型的保護。
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
18930瀏覽量
227294 -
ARM
+關注
關注
134文章
8967瀏覽量
365082 -
trustzone
+關注
關注
0文章
20瀏覽量
12514 -
車載操作系統
+關注
關注
0文章
12瀏覽量
7300
原文標題:ARM Trust Zone技術:硬件級的安全保護
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論