《瑞薩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)境,我們?cè)撊绾翁幚磉@種情況?通常,在FSP回調(diào)中,回調(diào)結(jié)構(gòu)由ISR在堆棧中分配,然后將由回調(diào)函數(shù)使用。由于中斷服務(wù)程序(ISR)和回調(diào)函數(shù)位于不同的環(huán)境中,如果回調(diào)函數(shù)試圖訪問(wèn)安全環(huán)境中的回調(diào)結(jié)構(gòu),將發(fā)生安全故障。
FSP通過(guò)將回調(diào)結(jié)構(gòu)分配到兩種環(huán)境都可以使用的內(nèi)存區(qū)域解決了這個(gè)問(wèn)題。通過(guò)使用callbackSet() API對(duì)其進(jìn)行初始化,這是一個(gè)允許訪問(wèn)安全環(huán)境的保護(hù)函數(shù)(有關(guān)保護(hù)函數(shù)的介紹,請(qǐng)參見(jiàn)下文第11.2.3章)。該調(diào)用如下所示:
在模塊的配置結(jié)構(gòu)中已經(jīng)提供了回調(diào)函數(shù)指針和上下文指針,但二者必須再次創(chuàng)建,因?yàn)榘踩说呐渲媒Y(jié)構(gòu)與非安全端的結(jié)構(gòu)是分開(kāi)構(gòu)建的。指向易失性回調(diào)內(nèi)存的指針指向某個(gè)位置,可在該位置將內(nèi)存分配給可從兩種環(huán)境訪問(wèn)的結(jié)構(gòu)。這樣便可消除安全故障。
11.2.3 保護(hù)函數(shù)
保護(hù)函數(shù)的應(yīng)用程序編程接口(API)允許從非安全項(xiàng)目訪問(wèn)位于安全環(huán)境中的驅(qū)動(dòng)程序。瑞薩實(shí)現(xiàn)的這項(xiàng)功能是獨(dú)一無(wú)二的,并且正在申請(qǐng)專利。靈活配置軟件包(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í)例的使用方法沒(méi)有特別之處,但其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)程序,并在不同端使用不同通道的情況下,這可消除通過(guò)操縱p_ctrl和/或p_cfg結(jié)構(gòu)以直接從非安全代碼訪問(wèn)安全通道的可能性。保護(hù)函數(shù)還會(huì)檢查所有輸入指針,以確保調(diào)用方不會(huì)覆蓋安全內(nèi)存。
此外,如果設(shè)計(jì)人員希望僅向非安全程序員公開(kāi)有限范圍的API,則可以選擇添加訪問(wèn)控制的附加級(jí)別或刪除保護(hù)函數(shù)。繼續(xù)以SCI為例,安全環(huán)境的程序員可以打開(kāi)一個(gè)通道并配置為所需的波特率,但通過(guò)刪除g_uart0_write_guard() API之外的所有API,使得只有寫API可供非安全應(yīng)用程序的開(kāi)發(fā)人員使用。
11.3 器件生命周期管理
器件生命周期定義了器件壽命的不同階段,并控制調(diào)試接口、串行編程接口和瑞薩測(cè)試模式的功能。出于安全原因,這樣便可將位于安全環(huán)境中的代碼的編寫與在非安全環(huán)境中運(yùn)行的應(yīng)用程序的編寫分開(kāi),并且可以由兩個(gè)獨(dú)立的團(tuán)隊(duì)來(lái)開(kāi)發(fā)產(chǎn)品:由安全開(kāi)發(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)用程序,對(duì)其進(jìn)行調(diào)試,然后將其燒錄到器件中。如果需要,他們還可以禁用所使用的閃存模塊的編程和擦除功能。最后一步,將生命周期的狀態(tài)設(shè)置為已部署、調(diào)試鎖定或引導(dǎo)鎖定。這樣一來(lái),整個(gè)器件可獲得保護(hù),并且不能對(duì)編程接口和器件進(jìn)行調(diào)試、讀取或編程。圖11-9顯示了可能的狀態(tài)和轉(zhuǎn)換,而圖11-10中的表格提供了對(duì)每個(gè)生命周期的解釋。
圖11-9:器件生命周期管理的不同狀態(tài)
有三種不同的調(diào)試訪問(wèn)級(jí)別,它們視生命周期的狀態(tài)而變化:
-
DBG2:允許調(diào)試器連接,訪問(wèn)存儲(chǔ)器和外設(shè)沒(méi)有任何限制。
-
DBG1:允許調(diào)試器連接,但訪問(wèn)只限于非安全內(nèi)存區(qū)域和外設(shè)。
-
DBG0:不允許進(jìn)行調(diào)試連接。
圖11-10:器件周期管理不同階段的描述
可以使用瑞薩閃存編程器或瑞薩器件分區(qū)管理器執(zhí)行從一種狀態(tài)到另一種狀態(tài)的轉(zhuǎn)換,但后者可選擇的狀態(tài)有限。可以通過(guò)使用身份驗(yàn)證密鑰來(lái)保護(hù)狀態(tài)之間的轉(zhuǎn)換。有關(guān)不同DLM狀態(tài)和器件特定轉(zhuǎn)換的更多信息,請(qǐng)參見(jiàn)相應(yīng)微控制器的用戶手冊(cè)。
原文標(biāo)題:瑞薩RA產(chǎn)品家族初學(xué)者指南-第11章(3)
文章出處:【微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
mcu
+關(guān)注
關(guān)注
146文章
17135瀏覽量
351031 -
瑞薩
+關(guān)注
關(guān)注
35文章
22309瀏覽量
86255
原文標(biāo)題:瑞薩RA產(chǎn)品家族初學(xué)者指南-第11章(3)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論