《瑞薩RA產(chǎn)品家族初學(xué)者指南》系列文章已收錄成合集,歡迎點(diǎn)擊上方查看合集并訂閱!
11. 安全性和TrustZone
本章目錄
-
什么是TrustZone,它有什么作用?
-
安全環(huán)境和非安全環(huán)境的劃分
-
器件生命周期管理
-
TrustZone用例
11.2.2 從安全代碼到非安全代碼的回調(diào)
外設(shè)位于安全環(huán)境,但提供中斷服務(wù)的回調(diào)函數(shù)位于非安全環(huán)境,我們該如何處理這種情況?通常,在FSP回調(diào)中,回調(diào)結(jié)構(gòu)由ISR在堆棧中分配,然后將由回調(diào)函數(shù)使用。由于中斷服務(wù)程序(ISR)和回調(diào)函數(shù)位于不同的環(huán)境中,如果回調(diào)函數(shù)試圖訪問安全環(huán)境中的回調(diào)結(jié)構(gòu),將發(fā)生安全故障。
FSP通過將回調(diào)結(jié)構(gòu)分配到兩種環(huán)境都可以使用的內(nèi)存區(qū)域解決了這個(gè)問題。通過使用callbackSet() API對其進(jìn)行初始化,這是一個(gè)允許訪問安全環(huán)境的保護(hù)函數(shù)(有關(guān)保護(hù)函數(shù)的介紹,請參見下文第11.2.3章)。該調(diào)用如下所示:

在模塊的配置結(jié)構(gòu)中已經(jīng)提供了回調(diào)函數(shù)指針和上下文指針,但二者必須再次創(chuàng)建,因?yàn)榘踩说呐渲媒Y(jié)構(gòu)與非安全端的結(jié)構(gòu)是分開構(gòu)建的。指向易失性回調(diào)內(nèi)存的指針指向某個(gè)位置,可在該位置將內(nèi)存分配給可從兩種環(huán)境訪問的結(jié)構(gòu)。這樣便可消除安全故障。
11.2.3 保護(hù)函數(shù)
保護(hù)函數(shù)的應(yīng)用程序編程接口(API)允許從非安全項(xiàng)目訪問位于安全環(huán)境中的驅(qū)動(dòng)程序。瑞薩實(shí)現(xiàn)的這項(xiàng)功能是獨(dú)一無二的,并且正在申請專利。靈活配置軟件包(FSP)將自動(dòng)為FSP配置器中標(biāo)記為非安全可調(diào)用的所有堆棧頂部模塊和/或驅(qū)動(dòng)程序API生成保護(hù)函數(shù),并將其添加到NSC區(qū)域的項(xiàng)目中。此外,F(xiàn)SP將為相應(yīng)的NSC實(shí)例創(chuàng)建非安全模塊實(shí)例。
這些實(shí)例的使用方法沒有特別之處,但其p_ctrl和p_cfg成員設(shè)置為FSP_SECURE_ARGUMENT,相當(dāng)于NULL,并且其p_api成員指向保護(hù)函數(shù)而不是實(shí)際的成員函數(shù)。保護(hù)函數(shù)本身將p_ctrl和p_cfg成員硬編碼到安全環(huán)境內(nèi)存中。在安全和非安全內(nèi)存中都存在驅(qū)動(dòng)程序,并在不同端使用不同通道的情況下,這可消除通過操縱p_ctrl和/或p_cfg結(jié)構(gòu)以直接從非安全代碼訪問安全通道的可能性。保護(hù)函數(shù)還會(huì)檢查所有輸入指針,以確保調(diào)用方不會(huì)覆蓋安全內(nèi)存。

此外,如果設(shè)計(jì)人員希望僅向非安全程序員公開有限范圍的API,則可以選擇添加訪問控制的附加級別或刪除保護(hù)函數(shù)。繼續(xù)以SCI為例,安全環(huán)境的程序員可以打開一個(gè)通道并配置為所需的波特率,但通過刪除g_uart0_write_guard() API之外的所有API,使得只有寫API可供非安全應(yīng)用程序的開發(fā)人員使用。
11.3 器件生命周期管理
器件生命周期定義了器件壽命的不同階段,并控制調(diào)試接口、串行編程接口和瑞薩測試模式的功能。出于安全原因,這樣便可將位于安全環(huán)境中的代碼的編寫與在非安全環(huán)境中運(yùn)行的應(yīng)用程序的編寫分開,并且可以由兩個(gè)獨(dú)立的團(tuán)隊(duì)來開發(fā)產(chǎn)品:由安全開發(fā)人員團(tuán)隊(duì)創(chuàng)建信任根(RoT)或孤立的子系統(tǒng),并由非安全環(huán)境的設(shè)計(jì)人員創(chuàng)建使用該RoT或子系統(tǒng)的應(yīng)用程序。靈活配置軟件包(FSP)和e2 studio支持這種設(shè)計(jì)劃分。
安全環(huán)境的代碼準(zhǔn)備就緒后,可將其預(yù)先燒錄到器件中,并將生命周期設(shè)置為NSECSD,從而鎖定安全環(huán)境,或者作為捆綁包由非安全項(xiàng)目引用。應(yīng)用程序設(shè)計(jì)人員將以此作為起點(diǎn),在非安全環(huán)境中編寫應(yīng)用程序,對其進(jìn)行調(diào)試,然后將其燒錄到器件中。如果需要,他們還可以禁用所使用的閃存模塊的編程和擦除功能。最后一步,將生命周期的狀態(tài)設(shè)置為已部署、調(diào)試鎖定或引導(dǎo)鎖定。這樣一來,整個(gè)器件可獲得保護(hù),并且不能對編程接口和器件進(jìn)行調(diào)試、讀取或編程。圖11-9顯示了可能的狀態(tài)和轉(zhuǎn)換,而圖11-10中的表格提供了對每個(gè)生命周期的解釋。

圖11-9:器件生命周期管理的不同狀態(tài)
有三種不同的調(diào)試訪問級別,它們視生命周期的狀態(tài)而變化:
-
DBG2:允許調(diào)試器連接,訪問存儲(chǔ)器和外設(shè)沒有任何限制。
-
DBG1:允許調(diào)試器連接,但訪問只限于非安全內(nèi)存區(qū)域和外設(shè)。
-
DBG0:不允許進(jìn)行調(diào)試連接。

圖11-10:器件周期管理不同階段的描述
可以使用瑞薩閃存編程器或瑞薩器件分區(qū)管理器執(zhí)行從一種狀態(tài)到另一種狀態(tài)的轉(zhuǎn)換,但后者可選擇的狀態(tài)有限。可以通過使用身份驗(yàn)證密鑰來保護(hù)狀態(tài)之間的轉(zhuǎn)換。有關(guān)不同DLM狀態(tài)和器件特定轉(zhuǎn)換的更多信息,請參見相應(yīng)微控制器的用戶手冊。
原文標(biāo)題:瑞薩RA產(chǎn)品家族初學(xué)者指南-第11章(3)
文章出處:【微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
mcu
+關(guān)注
關(guān)注
147文章
18924瀏覽量
397996 -
瑞薩
+關(guān)注
關(guān)注
37文章
22481瀏覽量
90852
發(fā)布評論請先 登錄
【瑞薩RA6E2地奇星開發(fā)板試用】使用`RA6E2`驅(qū)動(dòng) `ESP8266 WiFi模塊`,調(diào)試AT指令。
【瑞薩RA6E2地奇星開發(fā)板試用】DHT11 測量溫濕度
【瑞薩RA6E2地奇星開發(fā)板試用】介紹、環(huán)境搭建、工程測試
FPGA初學(xué)者求助
【直播預(yù)告】RT-Thread帶你首發(fā)體驗(yàn):基于瑞薩RA8P1 MCU的Titan Board | 問學(xué)直播
瑞薩電子RA系列微控制器的可擴(kuò)展性強(qiáng)的配置軟件包 (FSP)安裝下載與使用指南
瑞薩RA8系列教程 | 瑞薩 RA8 開發(fā)環(huán)境搭建,并點(diǎn)亮一個(gè)LED
【RA-Eco-RA4M2開發(fā)板評測】初學(xué)瑞薩-使用瑞薩flash programmer燒錄程序
瑞薩RA8快速上手指南:Cortex-M85內(nèi)核瑞薩RA8開發(fā)環(huán)境搭建 并點(diǎn)亮一個(gè)LED
瑞薩RA產(chǎn)品家族初學(xué)者指南-第11章(3)
評論