我目前正在对ARM的TrustZone进行一些研究,例如在这里:ARM information center。据我所知,通过TrustZone,可以创建基于AMBA AXI总线的安全环境。
在ARM website它说:“这个安全和非安全世界的概念超越了处理器,包含了SoC内存,软件,总线事务,中断和外设。”我读到外围设备可以通过AMBA AXI总线的 S ecure-bit上的 N 连接到TrustZone(额外信号用于区分可信和不可信)要求)。
1)除了AMBA AXI总线的额外引脚外,什么是带有TrustZone的SoC中的TrustZone特定硬件?
2)是否可以将外部非易失性存储器(例如闪存)或其分区连接到TrustZone,以访问安全世界(通过外部存储器接口,然后是内部AXI总线)?如果不是,如何在安全的世界中使用秘密(作为密钥)(在保险丝的帮助下?)?如果是,如何防止包含恶意代码的Flash连接?
3)在芯片出厂之前或之后,是否有可能作为芯片供应商(例如TI或NXP)的客户向安全领域实施代码?
感谢您的回答。
答案 0 :(得分:2)
TrustZone是ARM发布的一套标准。它为OEM(嵌入式软件程序员)和SOC供应商提供了一些安全解决方案的工具。根据需要保护的内容,它们有不同的需求。因此每个SOC 将不同。一些SOC制造商将尝试在同一安全应用程序上竞争,但他们仍然会有所区别。
1)除了AMBA AXI总线的额外引脚外,什么是带有TrustZone的SoC中的TrustZone特定硬件?
供应商想要的任何东西。 GIC(ARMv7-A)中断控制器,L1和L2控制器以及MMU都是大多数Cortex-A CPU中的TrustZone感知外设。这些是由ARM设计并在SOC中实现的。同样,存在可以放置在外围设备和SOC之间的各种存储器分区/排除设备。例如NIC301和各种专有的BUS互连技术。
其他硬件可能包括物理篡改,电压和温度监控,时钟监控和加密加速器。
2)是否可以将外部非易失性存储器(例如闪存)或其分区连接到TrustZone,以访问安全世界(通过外部存储器接口,然后是内部AXI总线)?如果不是,如何在安全的世界中使用秘密(作为密钥)(在保险丝的帮助下?)?如果是,如何防止包含恶意代码的Flash连接?
如上所述,像NIC301这样的芯片可以对AXI外设进行物理分区。见下图任何TrustZone解决方案的一部分都是一些安全启动机制。所有CPU都将在安全的世界中启动。安全启动机制可能会有所不同。例如,一次性可编程ROM 可能适合某些应用。许多都具有可编程熔丝,其具有在SOC ROM中实现的公钥/私钥机制。 SOC ROM启动软件将验证闪存中的图像是否被烧过一次保险丝的人正确签名。
此OEM映像可以设置许多TrustZone外设,其中大多数都具有锁定位。一旦设置,外设中的寄存器在下次硬启动之前不能更改。
3)在芯片出厂之前或之后,是否有可能作为芯片供应商(例如TI或NXP)的客户向安全领域实施代码?
是的,这是安全启动机制。 ARM TrustZone文档中未指定如何保护代码。如果您制造芯片并具有带有MESH层的片上ROM,则可能足以进行安全启动。但是,TI和NXP将实施公钥/私钥机制,并验证是否只能加载由OEM签名的软件。这个OEM软件可能有错误(可能是SOC供应商的ROM加载器),但至少可以创建一个安全的启动链。
使用公钥,即使完全访问芯片,也只允许攻击者从OEM加载以前发布的软件。某些解决方案也可能具有撤销机制,以防止以前发布的软件被使用。
请参阅:trust-zone