1、引言
假設軟件存在漏洞,攻擊者利用軟件漏洞就有可能導致關鍵的信息受損。這種情況下,使用系統(tǒng)隔離,將關鍵的資源以及操作和普通的分開,普通的應用程序無法訪問關鍵資源,從而可以有效的降低軟件漏洞帶來的風險。
TrustZone 是系統(tǒng)隔離的一種硬件手段,它將整個系統(tǒng)分為安全世界和非安全世界。安全世界可以存儲像密鑰、配置關鍵外設等,非安全世界運行其余代碼。這樣,即使非安全側遭受到攻擊,由于訪問權限的限制,安全側的數(shù)據(jù)以及關鍵外設不會受到影響。
TrustZone 技術,在一個芯片上,按照地址,劃分了安全世界和非安全世界。但一個地址,它的安全屬性,有三種 Secure、NSC、Non-Secure。
為什么在安全世界中,要存在一個 NSC 區(qū)域呢?TZ 隔離出的兩個世界,安全世界和非安全世界。安全世界可以隨意調(diào)用非安全世界的代碼,而非安全世界調(diào)安全世界的 API 則要經(jīng)過中轉站(NSC 區(qū)域)。
2、按鍵點燈實驗
接下來,我們將通過按鍵點燈實驗,來體會系統(tǒng)隔離的魅力所在。這也將更好的幫助去
理解系統(tǒng)的安全側和非安全側。
2.1. 使用準備
硬件:
- NUCLEO-H563ZI
軟件:
- CubeMX 6.12.1 (或最新版本)
- STM32Cube_FW_H5_V1.2.0 (或最新版本)
- STM32CubeProgrammer 2.17.0 (或最新版本)
- IAR EW for Arm 9.50.2 (或最新版本)
2.2. 實驗思想
在實驗中,開啟 USER_BUTTON (處于非安全側)的外部中斷功能。當用戶按下按鍵并松開手,觸發(fā)上升沿中斷。在上升沿中斷回調(diào)函數(shù)中,去翻轉小燈 LED1_GREEN(處于安全側)、LED2_YELLOW(處于非安全側)、LED3_RED(處于非安全側)。
3、小結
通過上面演示,操作非安全側按鍵去點亮安全側的 LED1 和非安全側的 LED2、LED3, 來幫助大家更好的理解安全側與非安全側的資源與外設調(diào)用。