1、引言
假设软件存在漏洞,攻击者利用软件漏洞就有可能导致关键的信息受损。这种情况下,使用系统隔离,将关键的资源以及操作和普通的分开,普通的应用程序无法访问关键资源,从而可以有效的降低软件漏洞带来的风险。
TrustZone 是系统隔离的一种硬件手段,它将整个系统分为安全世界和非安全世界。安全世界可以存储像密钥、配置关键外设等,非安全世界运行其余代码。这样,即使非安全侧遭受到攻击,由于访问权限的限制,安全侧的数据以及关键外设不会受到影响。
TrustZone 技术,在一个芯片上,按照地址,划分了安全世界和非安全世界。但一个地址,它的安全属性,有三种 Secure、NSC、Non-Secure。
为什么在安全世界中,要存在一个 NSC 区域呢?TZ 隔离出的两个世界,安全世界和非安全世界。安全世界可以随意调用非安全世界的代码,而非安全世界调安全世界的 API 则要经过中转站(NSC 区域)。
2、按键点灯实验
接下来,我们将通过按键点灯实验,来体会系统隔离的魅力所在。这也将更好的帮助去
理解系统的安全侧和非安全侧。
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 (处于非安全侧)的外部中断功能。当用户按下按键并松开手,触发上升沿中断。在上升沿中断回调函数中,去翻转小灯 LED1_GREEN(处于安全侧)、LED2_YELLOW(处于非安全侧)、LED3_RED(处于非安全侧)。
3、小结
通过上面演示,操作非安全侧按键去点亮安全侧的 LED1 和非安全侧的 LED2、LED3, 来帮助大家更好的理解安全侧与非安全侧的资源与外设调用。