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