STM32L5基于Cortex-M33 內核,其內核基于ARMV8-M架構,自帶有TrustZone安全技術,從內核到整個芯片系統,實現了安全區域和非安全區域之間的有效隔離。在調試端口保護方面,TrustZone 和 RDP(讀保護)的配合,同樣可以實現靈活的調試端口訪問控制,有效阻斷來自調試端口對片上代碼的窺探。
TrustZone 保護片上代碼的機密性
調試端口連接可控
在RDP1或者RDP0.5條件下,如果芯片使用了TrustZone上電調試接口就不可連接(具有類似RDP2的效果)
比RDP2更靈活,可以由用戶代碼控制后續調試端口訪問權限,實現安全調試,并保留修改選項字節的可能性
用戶片上Flash進一步隔離
安全閃存區域不能被非安全世界任意訪問
非安全世界不能訪問安全世界的數據
非安全世界不能訪問安全世界的外設
非安全世界訪問安全世界的函數,需要按照一定規則,不可隨意調用
TrustZone 助力代碼保護示例
資源在“安全世界”和“非安全世界”之間的分配
示例菜單和測試功能
示例運行注意事項
資源的分配
上電運行安全世界代碼,做資源分配
安全世界:
關鍵操作,關鍵數據
配合讀保護,可以阻斷調試端口連接
非安全世界:
人機交互
可以使能調試端口,但是無法訪問到安全世界的關鍵數據和外設
調試端口的連接控制RDP=0
讀保護級別為0(芯片缺省狀態)
芯片復位可被調試端口連接
運行示例
調試端口的連接控制RDP=0.5
讀保護級別為0.5
硬件保證:CPU處于安全狀態時,調試無法連接;包括復位時,運行安全代碼時
軟件操作:安全代碼在跳轉到非安全區域之前,關閉調試端口
保護效果
CPU運行在非安全區域時,缺省調試無法連接;可通過身份認證來使能對非安全代碼的調試
帶身份認證的調試使能
基于“挑戰-應答”模型
芯片產生隨機序列,合法用戶持有匹配私鑰對隨機序列的簽名,才能被芯片使用其存儲在安全世界里的對應公鑰驗簽成功
例程運行注意事項
RDP0.5時,S代碼自動關閉調試端口。使用STM32CUbeProgrammer hotplug也無法連接;IDE下載NS代碼也不會成功;需要用戶通過菜單打開調試端口,之后STM32Cubeprogramer才能連接成功,IDE下載也才能成功。
RDP非0時,片上Flash中如果沒有可以跑到非安全狀態的有效代碼,調試端口不再可連 除非改變啟動方式,從系統BL啟動(系統BL的代碼是一定可以跑到非安全狀態的) 需要確保可以從系統BL啟動(選項字節中的啟動控制:nSWBOOT0)
【Q】為何例程沒有提供RDP回退的菜單? 【A】TrustZone使能時,RDP回退只能由調試接口或者系統BL完成 例程通過硬件和軟件兩方面一起作用,實現了對非安全代碼的可控調試 硬件:讀保護級別不為零+TZ使能 復位時+ 運行在安全代碼區域時,調試不可連接 軟件:安全區代碼在跳轉到非安全區代碼之前,軟件關閉調試端口 菜單【1】、【2】:測試作用,不會集成到產品中 菜單【D】:即使通過通信端口在非安全區注入惡意代碼來調用打開調試端口的功能,由于不知道簽名所需要的私鑰,驗證無法通過,不能打開調試端口 。
責任編輯:lq6
-
STM32
+關注
關注
2272文章
10924瀏覽量
357602
原文標題:ARMV8-M中的TrustZone如何保護代碼的安全?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Bootloader解決方案—INTEWORK-EAS-Boot
![Bootloader解決方案—INTEWORK-EAS-Boot](https://file1.elecfans.com/web3/M00/03/38/wKgZO2dlCuuATUpMAABqW9Z58eQ645.png)
多片ADS1675輸出數據的順序是怎樣的呢?
國聯易安:“三管齊下”,惡意代碼輔助檢測“更高效”
P2Link——高效保障企業數據安全
智能系統的安全性分析
云計算安全性如何保障
過流保護片是怎樣與電池組連接的
STM32H5和STM32U5在trustzone上有哪些不同?
esp32c3怎樣保護flash中的代碼不被拷貝?
特信會議室屏蔽器:如何使用能確保會議安全保密性?|深圳特信電子.
惡意代碼輔助檢測系統:“降低、保障、智能”缺一不可
STM32H5 DA 之初體驗(帶 TrustZone)
![STM32H5 DA 之初體驗(帶 <b class='flag-5'>TrustZone</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論