STM32L5基于Cortex-M33 內(nèi)核,其內(nèi)核基于ARMV8-M架構(gòu),自帶有TrustZone安全技術(shù),從內(nèi)核到整個(gè)芯片系統(tǒng),實(shí)現(xiàn)了安全區(qū)域和非安全區(qū)域之間的有效隔離。在調(diào)試端口保護(hù)方面,TrustZone 和 RDP(讀保護(hù))的配合,同樣可以實(shí)現(xiàn)靈活的調(diào)試端口訪問控制,有效阻斷來自調(diào)試端口對(duì)片上代碼的窺探。
TrustZone 保護(hù)片上代碼的機(jī)密性
調(diào)試端口連接可控
在RDP1或者RDP0.5條件下,如果芯片使用了TrustZone上電調(diào)試接口就不可連接(具有類似RDP2的效果)
比RDP2更靈活,可以由用戶代碼控制后續(xù)調(diào)試端口訪問權(quán)限,實(shí)現(xiàn)安全調(diào)試,并保留修改選項(xiàng)字節(jié)的可能性
用戶片上Flash進(jìn)一步隔離
安全閃存區(qū)域不能被非安全世界任意訪問
非安全世界不能訪問安全世界的數(shù)據(jù)
非安全世界不能訪問安全世界的外設(shè)
非安全世界訪問安全世界的函數(shù),需要按照一定規(guī)則,不可隨意調(diào)用
TrustZone 助力代碼保護(hù)示例
資源在“安全世界”和“非安全世界”之間的分配
示例菜單和測(cè)試功能
示例運(yùn)行注意事項(xiàng)
資源的分配
上電運(yùn)行安全世界代碼,做資源分配
安全世界:
關(guān)鍵操作,關(guān)鍵數(shù)據(jù)
配合讀保護(hù),可以阻斷調(diào)試端口連接
非安全世界:
人機(jī)交互
可以使能調(diào)試端口,但是無法訪問到安全世界的關(guān)鍵數(shù)據(jù)和外設(shè)
調(diào)試端口的連接控制RDP=0
讀保護(hù)級(jí)別為0(芯片缺省狀態(tài))
芯片復(fù)位可被調(diào)試端口連接
運(yùn)行示例
調(diào)試端口的連接控制RDP=0.5
讀保護(hù)級(jí)別為0.5
硬件保證:CPU處于安全狀態(tài)時(shí),調(diào)試無法連接;包括復(fù)位時(shí),運(yùn)行安全代碼時(shí)
軟件操作:安全代碼在跳轉(zhuǎn)到非安全區(qū)域之前,關(guān)閉調(diào)試端口
保護(hù)效果
CPU運(yùn)行在非安全區(qū)域時(shí),缺省調(diào)試無法連接;可通過身份認(rèn)證來使能對(duì)非安全代碼的調(diào)試
帶身份認(rèn)證的調(diào)試使能
基于“挑戰(zhàn)-應(yīng)答”模型
芯片產(chǎn)生隨機(jī)序列,合法用戶持有匹配私鑰對(duì)隨機(jī)序列的簽名,才能被芯片使用其存儲(chǔ)在安全世界里的對(duì)應(yīng)公鑰驗(yàn)簽成功
例程運(yùn)行注意事項(xiàng)
RDP0.5時(shí),S代碼自動(dòng)關(guān)閉調(diào)試端口。使用STM32CUbeProgrammer hotplug也無法連接;IDE下載NS代碼也不會(huì)成功;需要用戶通過菜單打開調(diào)試端口,之后STM32Cubeprogramer才能連接成功,IDE下載也才能成功。
RDP非0時(shí),片上Flash中如果沒有可以跑到非安全狀態(tài)的有效代碼,調(diào)試端口不再可連 除非改變啟動(dòng)方式,從系統(tǒng)BL啟動(dòng)(系統(tǒng)BL的代碼是一定可以跑到非安全狀態(tài)的) 需要確??梢詮南到y(tǒng)BL啟動(dòng)(選項(xiàng)字節(jié)中的啟動(dòng)控制:nSWBOOT0)
【Q】為何例程沒有提供RDP回退的菜單? 【A】TrustZone使能時(shí),RDP回退只能由調(diào)試接口或者系統(tǒng)BL完成 例程通過硬件和軟件兩方面一起作用,實(shí)現(xiàn)了對(duì)非安全代碼的可控調(diào)試 硬件:讀保護(hù)級(jí)別不為零+TZ使能 復(fù)位時(shí)+ 運(yùn)行在安全代碼區(qū)域時(shí),調(diào)試不可連接 軟件:安全區(qū)代碼在跳轉(zhuǎn)到非安全區(qū)代碼之前,軟件關(guān)閉調(diào)試端口 菜單【1】、【2】:測(cè)試作用,不會(huì)集成到產(chǎn)品中 菜單【D】:即使通過通信端口在非安全區(qū)注入惡意代碼來調(diào)用打開調(diào)試端口的功能,由于不知道簽名所需要的私鑰,驗(yàn)證無法通過,不能打開調(diào)試端口 。
責(zé)任編輯:lq6
-
STM32
+關(guān)注
關(guān)注
2270文章
10906瀏覽量
356518
原文標(biāo)題:ARMV8-M中的TrustZone如何保護(hù)代碼的安全?
文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論