《瑞薩RA產品家族初學者指南》系列文章已收錄成合集,歡迎點擊上方查看合集并訂閱!
11. 安全性和TrustZone
本章目錄
-
什么是TrustZone,它有什么作用?
-
安全環境和非安全環境的劃分
-
器件生命周期管理
-
TrustZone用例
11.2.2 從安全代碼到非安全代碼的回調
外設位于安全環境,但提供中斷服務的回調函數位于非安全環境,我們該如何處理這種情況?通常,在FSP回調中,回調結構由ISR在堆棧中分配,然后將由回調函數使用。由于中斷服務程序(ISR)和回調函數位于不同的環境中,如果回調函數試圖訪問安全環境中的回調結構,將發生安全故障。
FSP通過將回調結構分配到兩種環境都可以使用的內存區域解決了這個問題。通過使用callbackSet() API對其進行初始化,這是一個允許訪問安全環境的保護函數(有關保護函數的介紹,請參見下文第11.2.3章)。該調用如下所示:
在模塊的配置結構中已經提供了回調函數指針和上下文指針,但二者必須再次創建,因為安全端的配置結構與非安全端的結構是分開構建的。指向易失性回調內存的指針指向某個位置,可在該位置將內存分配給可從兩種環境訪問的結構。這樣便可消除安全故障。
11.2.3 保護函數
保護函數的應用程序編程接口(API)允許從非安全項目訪問位于安全環境中的驅動程序。瑞薩實現的這項功能是獨一無二的,并且正在申請專利。靈活配置軟件包(FSP)將自動為FSP配置器中標記為非安全可調用的所有堆棧頂部模塊和/或驅動程序API生成保護函數,并將其添加到NSC區域的項目中。此外,FSP將為相應的NSC實例創建非安全模塊實例。
這些實例的使用方法沒有特別之處,但其p_ctrl和p_cfg成員設置為FSP_SECURE_ARGUMENT,相當于NULL,并且其p_api成員指向保護函數而不是實際的成員函數。保護函數本身將p_ctrl和p_cfg成員硬編碼到安全環境內存中。在安全和非安全內存中都存在驅動程序,并在不同端使用不同通道的情況下,這可消除通過操縱p_ctrl和/或p_cfg結構以直接從非安全代碼訪問安全通道的可能性。保護函數還會檢查所有輸入指針,以確保調用方不會覆蓋安全內存。
此外,如果設計人員希望僅向非安全程序員公開有限范圍的API,則可以選擇添加訪問控制的附加級別或刪除保護函數。繼續以SCI為例,安全環境的程序員可以打開一個通道并配置為所需的波特率,但通過刪除g_uart0_write_guard() API之外的所有API,使得只有寫API可供非安全應用程序的開發人員使用。
11.3 器件生命周期管理
器件生命周期定義了器件壽命的不同階段,并控制調試接口、串行編程接口和瑞薩測試模式的功能。出于安全原因,這樣便可將位于安全環境中的代碼的編寫與在非安全環境中運行的應用程序的編寫分開,并且可以由兩個獨立的團隊來開發產品:由安全開發人員團隊創建信任根(RoT)或孤立的子系統,并由非安全環境的設計人員創建使用該RoT或子系統的應用程序。靈活配置軟件包(FSP)和e2 studio支持這種設計劃分。
安全環境的代碼準備就緒后,可將其預先燒錄到器件中,并將生命周期設置為NSECSD,從而鎖定安全環境,或者作為捆綁包由非安全項目引用。應用程序設計人員將以此作為起點,在非安全環境中編寫應用程序,對其進行調試,然后將其燒錄到器件中。如果需要,他們還可以禁用所使用的閃存模塊的編程和擦除功能。最后一步,將生命周期的狀態設置為已部署、調試鎖定或引導鎖定。這樣一來,整個器件可獲得保護,并且不能對編程接口和器件進行調試、讀取或編程。圖11-9顯示了可能的狀態和轉換,而圖11-10中的表格提供了對每個生命周期的解釋。
圖11-9:器件生命周期管理的不同狀態
有三種不同的調試訪問級別,它們視生命周期的狀態而變化:
-
DBG2:允許調試器連接,訪問存儲器和外設沒有任何限制。
-
DBG1:允許調試器連接,但訪問只限于非安全內存區域和外設。
-
DBG0:不允許進行調試連接。
圖11-10:器件周期管理不同階段的描述
可以使用瑞薩閃存編程器或瑞薩器件分區管理器執行從一種狀態到另一種狀態的轉換,但后者可選擇的狀態有限??梢酝ㄟ^使用身份驗證密鑰來保護狀態之間的轉換。有關不同DLM狀態和器件特定轉換的更多信息,請參見相應微控制器的用戶手冊。
原文標題:瑞薩RA產品家族初學者指南-第11章(3)
文章出處:【微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
-
mcu
+關注
關注
146文章
17004瀏覽量
350335 -
瑞薩
+關注
關注
35文章
22293瀏覽量
86089
原文標題:瑞薩RA產品家族初學者指南-第11章(3)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論