TrustZone 是 ARM 发布的一套标准。它为 OEM(嵌入式软件程序员)和 SOC 供应商提供了一些工具来制定安全的解决方案。根据需要保护的内容,它们有不同的需求。所以每个SOCwill有所不同。一些 SOC 制造商将尝试在相同的安全应用上展开竞争,但他们仍会差异化。
1) 除了 AMBA AXI 总线的额外引脚之外,具有 TrustZone 的 SoC 中的 TrustZone 特定硬件是什么?
供应商想要的任何东西。 GIC (ARMv7-A) 中断控制器、L1 和 L2 控制器以及 MMU 都是大多数 Cortex-A CPU 中的 TrustZone 感知外设。这些由 ARM 设计并在 SOC 中实现。此外,还有各种可以放置在外设和 SOC 之间的内存分区/排除设备。例如 NIC301 和各种专有的总线互连技术。
其他硬件可能包括物理篡改、电压和温度监控、时钟监控和加密加速器。
2) 是否可以将外部非易失性存储器(例如闪存)或其分区连接到 TrustZone 并访问安全世界(通过外部存储器接口,然后通过内部 AXI 总线)?如果不是,如何存储秘密(作为密钥)以便在安全世界中使用(在保险丝的帮助下??)?如果是,如何防止连接包含恶意代码的Flash?
As the above alludes, chips like the NIC301 can physically partition AXI peripherals.See image below Part of any TrustZone solution is some secure boot mechanism. All CPU will boot in the secure world. The secure boot mechanism may vary. For instance, a one time programmable ROM might be appropriate for some applications. Many have programmable fuses with a public/private key mechanism implemented in SOC ROM. The SOC ROM boot software will verify that the image in flash is properly signed by whoever burned the one time fuses.
此 OEM 映像可以设置许多 TrustZone 外围设备,其中大多数将具有lock少量。一旦设置,外设中的寄存器在下次硬启动之前无法更改。
3) 作为芯片供应商(例如 TI 或 NXP)的客户,是否可以在芯片出厂之前或之后将代码实施到安全世界?
是的,这就是安全启动机制。 ARM TrustZone 文档中没有指定如何保护代码。如果您制造芯片并拥有带 MESH 层保护的片上 ROM,则可能足以实现安全启动。不过,TI 和 NXP 将实施公钥/私钥机制,并验证只有 OEM 签名的软件才能加载。该 OEM 软件可能存在错误(SOC 供应商的 ROM 加载程序也可能存在错误),但至少可以创建安全引导链。
有了公钥,即使完全访问芯片,攻击者也只能加载 OEM 先前发布的软件。某些解决方案可能还具有撤销机制,以防止使用以前发布的软件。
See: 信任区
- 典型的ARM总线
- ARM 分区检查器
- 处理 ARM TrustZone