TrustZone与ROM作为安全启动中的信任根

时间:2018-10-08 12:48:14

标签: security arm embedded cortex-m trust-zone

我偶然发现的许多文献都将TrustZone称为促进安全启动的机制(如here以及更多内容)。

据我所知,安全启动的运行方式如下:

信任根验证img1验证img2 ...

因此,如果芯片正在从ROM进行启动以验证驻留在闪存中的第一个映像,那么我可以通过使用TrustZone获得哪些附加值?

在我看来,如果没有对系统的ROM信任根,则TrustZone无法提供安全启动,因为它只能隔离RAM内存而不是闪存,因此在运行时(如果不受信任的OS)被破坏,它无法保护自己的闪存不被重写。

我在这里想念东西吗?

2 个答案:

答案 0 :(得分:1)

  

因此,如果芯片正在从ROM进行启动以验证驻留在闪存中的第一个映像,那么我可以通过使用TrustZone获得哪些附加值?

安全启动和TrustZone是独立的功能。他们经常一起工作。 情况始终取决于您的威胁模型和系统设计/要求。即,攻击者是否可以物理访问设备等。

如果闪存中有映像,并且有人可以重写闪存,则引导失败可能是系统“确定”的情况。即,某人无法对闪存进行重新编程,而让用户认为该软件是合法的。在这种情况下,您可以允许不受信任的操作系统访问闪存。如果重写映像,则安全启动将失败,并且攻击者无法提供木马映像。

  

我在这里想念什么吗?

如果如果某个系统可以停止引导,则系统出现故障,则需要将闪存控制器分配给安全内存,并且仅允许通过世界之间的受控通道访问闪存。在此设计/要求中,由于您试图构建不运行未经授权的软件的系统,因此安全启动可能并没有真正起作用。

如果攻击者具有物理访问权限,这可能几乎是不可能的。他们可以通过拆卸,外部编程和重新安装芯片来拆卸设备并重新编程闪存。而且,攻击者可以用一些模拟木马设备替换该设备,这些设备甚至没有相同的CPU,而只是外观和行为类似。


如果第一种情况是可以接受的(恶意代码重新编程闪存,但不能引导),则您的设计/要求是内存中的代码不能损害正在运行的系统的功能。即,您可能不希望此代码获取密码等。因此,在很多情况下,TrustZone和安全启动可以一起使用。完全有可能找到仅适用于一个模型的模型。既需要又不了解所有威胁的情况可能更常见。

答案 1 :(得分:1)

可以肯定TrustZone可以隔离闪存,具体取决于供应商对安全配置寄存器(SCR)的实现方式

请注意,这是关于TrustZone-M(Cortex-M架构的TrustZone)的,可能不是您想要的。