ZHCAEP3 November 2024 F29H850TU , F29H859TU-Q1
在器件上建立信任根通常需要創(chuàng)建一個安全的執(zhí)行環(huán)境,有時也稱為可信執(zhí)行環(huán)境 (TEE)。安全執(zhí)行環(huán)境背后的基本理念是創(chuàng)建單獨(dú)的代碼執(zhí)行域(或“世界”),這些域?qū)ο到y(tǒng)資源具有不同的權(quán)限和訪問權(quán)限。安全執(zhí)行環(huán)境可以保護(hù)正在使用的代碼和數(shù)據(jù)免受惡意軟件或硬件未經(jīng)授權(quán)的修改、提取或篡改。硬件安全模塊 (HSM) 是安全執(zhí)行環(huán)境的一個典型示例,專用于為主機(jī)微控制器或處理器提供加密服務(wù)、安全存儲、信任根和身份驗(yàn)證。TI 的 AM26x 和 F29x 微控制器包括一個具有這些特性的內(nèi)置 HSM,可為應(yīng)用程序?qū)崿F(xiàn)安全密鑰和代碼配置過程、安全啟動、調(diào)試身份驗(yàn)證和加密服務(wù)。
在許多情況下,僅建立信任根還不夠,因?yàn)楝F(xiàn)代應(yīng)用必須處理互聯(lián)環(huán)境中的潛在網(wǎng)絡(luò)安全威脅。外部通信接口(如 CAN 總線或 UART 端口)可能容易受到攻擊,而攻擊的結(jié)果會損害運(yùn)行這些接口的軟件任務(wù)的完整性。鑒于這些威脅的不可預(yù)測性,完整的網(wǎng)絡(luò)安全威脅評估必然包括假設(shè)存在被攻破的代碼模塊及其對整個系統(tǒng)的機(jī)密性、完整性、可用性和安全性造成的風(fēng)險。因此,運(yùn)行時應(yīng)用程序安全性是嵌入式系統(tǒng)中網(wǎng)絡(luò)安全實(shí)現(xiàn)的一個重要方面。
由于所需的額外處理負(fù)擔(dān)(通常意味著增加延遲和降低整體控制環(huán)路性能),基于軟件的運(yùn)行時安全措施在實(shí)時控制系統(tǒng)中是不可取的。此外,基于軟件的解決方案是不可改變的;被攻破的代碼可能導(dǎo)致整個運(yùn)行時安全裝置失敗?;谟布慕鉀Q方案通常從某種類型的存儲器保護(hù)單元 (MPU) 開始。MPU 使應(yīng)用開發(fā)人員能夠定義固定存儲器區(qū)域,并根據(jù)啟動器嘗試訪問每個區(qū)域的情況來配置其訪問權(quán)限(讀取、寫入和執(zhí)行)。這些啟動器可以包括 CPU、DMA 和調(diào)試器。在 TI F29x 系列微控制器中,內(nèi)存和外設(shè)訪問保護(hù)對上下文敏感。根據(jù)每個應(yīng)用程序代碼模塊所在的地址范圍,應(yīng)用程序可以分為多個代碼模塊。然后,屬于代碼模塊的任何數(shù)據(jù)范圍或外設(shè)都可以與其他代碼模塊共享,并定義了單獨(dú)的讀取或?qū)懭霗?quán)限。這些硬件存儲器保護(hù)特定于執(zhí)行存取的代碼模塊,因此無需由管理 MPU 的軟件操作系統(tǒng)層,從而在不影響性能的情況下保持代碼和數(shù)據(jù)安全。
除了存儲器訪問保護(hù)之外,CPU 內(nèi)部數(shù)據(jù)的安全性對于建立安全的執(zhí)行環(huán)境也至關(guān)重要。入侵者可能在 CPU 執(zhí)行代碼時窺探 CPU,從 CPU 寄存器和共享?xiàng)?nèi)存中讀取機(jī)密。處理該問題的一種方法是基于軟件:操作系統(tǒng)層中的任務(wù)調(diào)度器負(fù)責(zé)使不同的應(yīng)用程序任務(wù)或線程相互隔離。在切換到新任務(wù)時,操作系統(tǒng)會通過保存、清除和恢復(fù)寄存器來維護(hù)線程上下文。這種方法的主要缺點(diǎn)是,對實(shí)時處理應(yīng)用程序非常關(guān)鍵的中斷服務(wù)例程不能使用任務(wù)調(diào)度器直接隔離。因此,幫助隔離 CPU 內(nèi)應(yīng)用程序上下文的硬件特性是在嵌入式實(shí)時系統(tǒng)中實(shí)現(xiàn)運(yùn)行時安全的關(guān)鍵。通常,這涉及到硬件處理?xiàng)V羔?,在“安全”和“非安全”領(lǐng)域之間進(jìn)行區(qū)分,或多個完全隔離的棧(在 C29x 等 CPU 架構(gòu)中)。通常,這種類型的 CPU 指令集包括需要跨越棧邊界的門指令。門指令可以觸發(fā)寄存器歸零等進(jìn)程,并提供一個相關(guān)的訪問保護(hù)方案來指定可以寫入或讀取哪些存儲器。在 Arm? TrustZone?-M 等架構(gòu)中,通常需要 trampoline 函數(shù)或 veneer 函數(shù)來在從一個上下文轉(zhuǎn)換到另一個上下文期間處理這些保護(hù)更改。
另一方面,德州儀器 (TI) C29x 主要處理硬件中的上下文切換,實(shí)時應(yīng)用新的保護(hù)以更大限度地提高控制性能。
通過在 CPU 中啟用對代碼和數(shù)據(jù)的硬件保護(hù),嵌入式系統(tǒng)設(shè)計人員能夠?qū)?yīng)用劃分為安全沙盒和應(yīng)用程序任務(wù)模塊,每個沙盒和應(yīng)用程序任務(wù)模塊都有自己的私有代碼、數(shù)據(jù)和外設(shè)。此外,每個任務(wù)模塊還可以選擇與其他任務(wù)共享存儲器區(qū)域。圖 5-1 展示了一個安全分區(qū)方案示例。實(shí)施此類方案通常需要實(shí)時操作系統(tǒng)層,但是借助硬件中的隔離式棧和上下文感知存儲器訪問保護(hù),系統(tǒng)設(shè)計人員可以實(shí)現(xiàn)完全隔離,同時避免軟件操作系統(tǒng)層附帶的額外延遲。