保护你的知识产权:TrustZone 与加密引擎

Evek Golden Lv4

嵌入式安全不再是 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
2
3
4
5
6
// Secure 代码
__attribute__((cmse_nonsecure_entry))
void Secure_AES_Encrypt(uint8_t *data) {
// 检查指针是否合法?数据是否越界?
// 执行加密...
}

3. Secure Boot (安全启动)

TrustZone 提供了运行时的保护,而 Secure Boot 提供了启动时的保护。

**信任链 (Chain of Trust)**:

  1. ROM 代码(不可篡改):验证 Bootloader 的签名。
  2. Bootloader(可信):验证 App 的签名。
  3. 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