作者 | strongerHuang
TrustZone,翻译过来叫:安全区、信任区。
TrustZone 是ARM引入的一项硬件级安全技术,旨在通过隔离敏感资源与非安全操作,为嵌入式系统提供更强的安全防护。
在最新的Arm Cortex-M85 内核中都包含 TrustZone 这项功能,当然,TrustZone 这项技术在十多年前就已经有了。我们之前分享的瑞萨 RA8 单片机里面也包含这项技术。
关于 TrustZone
TrustZone 是一种硬件强制隔离机制,将CPU、内存、外设等资源划分为安全区(Secure World)和非安全区(Non-secure World)。
通过硬件级别的权限控制,确保非安全代码无法直接访问安全区的关键资源(如加密密钥、固件等),从而抵御软件攻击或物理侧信道攻击。
在 Cortex-M85 (RA8单片机)中,TrustZone 基于 Armv8.1-M 架构实现,并针对RA8(MCU)场景优化,提供低延迟、低开销的安全隔离,适合实时性要求高的嵌入式应用。
TrustZone 的几点作用1、硬件级资源隔离内存与外设分区:每个内存块、外设均可标记为安全或非安全,非安全代码访问安全资源时会被硬件拦截。
安全状态切换:通过专用指令(如 SG/NSG)在安全/非安全状态间切换,确保关键操作(如密钥处理)仅在安全环境执行。
2、安全服务隔离
安全区可运行可信代码(如加密算法、安全启动、固件更新),非安全区运行普通应用,防止恶意代码窃取敏感数据。
支持安全回调机制,允许非安全代码通过受控接口调用安全服务(如签名验证),避免直接暴露安全逻辑。
3、防御多类攻击阻止软件漏洞(如缓冲区溢出)导致的安全区越权访问。
结合物理防护措施(如防篡改检测),增强对硬件攻击的抵抗。
TrustZone在项目中重要的作用
在座各位,应该有很多都是搞嵌入式开发的,相信或多或少都遇到过软件bug的时候。
其实,嵌入式开发,很多情况下的bug,都是由于内存的问题导致的。说白了,就是“非法”操作了内存地址。同时也有些bug是因为非法操作硬件导致的。
此时,如果引入TrustZone这种功能,能很大程度减少bug的发生。那么,TrustZone在项目中有哪些重要的作用呢?
1、提升系统安全性
敏感数据保护:密钥、证书等存储于安全区,即使应用层被攻破,攻击者也无法直接读取。
安全启动与固件更新:确保只有经签名的固件可在安全区执行,防止恶意固件注入。
2、 降低开发与部署成本
单芯片集成安全功能:无需外置安全元件(SE),减少硬件复杂性和成本。
模块化开发:安全与非安全代码可独立开发,团队协作更高效(如安全团队负责安全区,应用团队负责非安全区)。
3、增强产品竞争力
适应严苛场景:适用于智能家居、医疗设备、车联网等高安全需求领域。
延长产品生命周期:通过可信任的远程固件更新,持续修复漏洞,降低召回风险。
RA8 TrustZone工程
基于瑞萨 e2 studio 可以快速创建一个 RA8D1_TrustZone工程。
主要就是在创建工程的时候,选择TrustZone Secure Project:
然后,官方也提供了工程例程:
生成的工程,和普通的工程,看起来没什么区别,但底层是发生了变化的。比较直观的就是:内存地址。通过工具其实都能看到一些变化信息。
今天就分享到这里,主要是一些基础的信息,更多还需要大家结合实际项目深入理解。希望对大家有所帮助。