保护你的知识产权:TrustZone 与加密引擎
嵌入式安全不再是 POS 机和军工产品的专利。随着 IoT 设备连接到互联网,固件抄袭、隐私泄露的风险无处不在。
ARMv8-M (如 Cortex-M23/M33) 引入了 TrustZone 技术,为 MCU 带来了硬件级别的安全隔离。
1. 两个世界:Secure vs Non-Secure
TrustZone 的核心思想是隔离。CPU 在硬件上被分为两个状态:
- **Secure World (S)**:只有可信的代码才能运行。所有的密钥、指纹数据、核心算法都放在这里。
- **Non-Secure World (NS)**:普通的 RTOS、各种网络协议栈、UI 都在这里跑。如果这里被黑客攻破了(比如 WiFi 协议栈缓冲区溢出),黑客也进不去 Secure World。
这种隔离是全方位的:
- 内存隔离:MPC (Memory Protection Controller) 阻止 NS 代码访问 S 区域的 RAM/Flash。
- 外设隔离:PPC (Peripheral Protection Controller) 规定哪些 GPIO 或 UART 只能被 Secure 世界控制。
2. 它们如何对话?
如果 NS 世界的应用程序想调用 S 世界的加密算法怎么办?
不能直接 Jump 过去,否则会触发 SecureFault。
必须通过 NSC (Non-Secure Callable) 区域。
这就像古代皇宫的门口,NSC 区存放了一组特殊的指令 SG (Secure Gateway)。NS 代码只能跳到这个门口,通过这些定义好的“API 网关”进入皇宫。
1 | // Secure 代码 |
3. Secure Boot (安全启动)
TrustZone 提供了运行时的保护,而 Secure Boot 提供了启动时的保护。
**信任链 (Chain of Trust)**:
- ROM 代码(不可篡改):验证 Bootloader 的签名。
- Bootloader(可信):验证 App 的签名。
- App:正常运行。
在这个过程中,只要有一环签名不对,设备就会变砖(拒绝启动)。这有效防止了黑客刷入被篡改的恶意固件。
4. 读保护 (RDP)
对于防止 IP 窃取(固件提取),最简单有效的是开启 **Read Out Protection (RDP)**。
- Level 0:无保护。
- Level 1:调试接口 (SWD/JTAG) 无法访问 Flash,但可以整片擦除后恢复访问(保护了代码,但允许回收板子)。
- Level 2:调试接口永久关闭,Flash 永久锁定。这就是“熔丝已断”,神仙也读不出来了。
总结
安全是有成本的(代码复杂度增加、量产烧录变慢)。作为工程师,我们需要权衡“破解难度”与“防护成本”,找到那个平衡点。
- Title: 保护你的知识产权:TrustZone 与加密引擎
- Author: Evek Golden
- Created at : 2025-01-09 16:30:00
- Updated at : 2026-06-12 08:57:02
- Link: https://blog.cocodemo.uno/posts/tz8j2n1/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments