在Cortex-M处理器中使用Arm TrustZone的5条提示

随着嵌入式系统开发人员过渡到创建互连的IoT设备,安全性已成为他们面临的最重要问题之一。 ARMv8-M处理器确实支持TrustZone®,TrustZone®为开发人员提供了一种新的机制,以帮助他们将安全软件与更通用的用户软件隔离开。与使用任何新工具一样,开发人员应遵循一些技巧,以确保他们提高系统安全性。

 

提示1–执行安全审核以了解安全需求

在尝试使用TrustZone之前,开发人员必须执行安全审核并确定其系统中需要保护的内容。每个应用程序之间的差异可能很大,但可能包括:

  • 按键
  • 数据
  • 图书馆
  • 申请代码
  • 周边设备
  • 记忆体位置
  • 通讯技术
  • 等等

根据需要保护的资源,将有不同的方法来保护该资源,例如使用加密或隔离。 TrustZone旨在帮助开发人员隔离其设计。

 

提示2–使用安全代码最大程度地减少对非安全内存的访问

TrustZone将微控制器硬件分为安全和不安全两个区域。不安全代码只能访问安全存储器以执行“公开”功能。这允许用户应用程序调用安全功能,但是尝试访问那些公开功能之外的任何内容都将导致故障。这很好,但对开发人员来说潜在的问题是安全代码可以访问所有非安全内存区域。

使用安全代码访问非安全内存时,开发人员需要注意。开发人员可以使用TT指令来检查该区域的权限。这将防止在安全区域中意外执行不安全的代码。开发人员应使用安全代码访问安全代码,并最大程度地减少对非安全内存的访问。

 

提示3–从未存入银行的寄存器中清除机密信息

在TrustZone实现中,如果处理器以非安全模式运行,则存在不可见的安全寄存器。但是,存在在安全模式和非安全模式之间存储和共享的处理器寄存器。这意味着,如果执行安全操作,并且部分数据存储在存储区寄存器中,则过程将切换到非安全模式,可以通过存储区寄存器获取安全数据。为了防止这种情况的发生,开发人员需要确保在跳回到非安全执行模式之前,清除所有已使用的未存储寄存器。否则,这可能成为黑客获取洞察力甚至访问安全代码区域的一种方式。

 

提示#4 –在启动时验证不安全的映像

当TrustZone处理器启动时,安全模式将自动进入。这为开发人员提供了机会,不仅可以初始化他们的处理器,还可以安全地启动处理器。开发人员可以验证其用户应用程序,并确保一切正常,然后再跳至不安全模式并运行用户应用程序。如果攻击者设法将自己的代码或应用程序插入内存,则安全代码可以在启动时检测到此情况,并采取必要的措施来阻止使用该系统的尝试。这可能使开发人员想知道如果安全代码区域发生更改会发生什么?安全区域实际上是锁定的,没有特殊工具就无法修改。

 

提示5–同时使用“非安全”和“安全” MPU

TrustZone非常有趣的另一个功能是,它为不安全的存储区域以及安全区域提供了一个内存保护单元(MPU)。这意味着即使在安全内存中,开发人员也可以采取额外的预防措施来保护内存。可以将MPU设置为监视RTOS中正在执行的安全任务,或者检测尝试溢出任务堆栈的尝试。这为开发人员在实现安全解决方案方面提供了很大的灵活性。

结论

对于许多开发团队来说,为连接的设备增加安全性无疑是一项艰巨的挑战。 TrustZone为开发人员提供了额外的工具来帮助提高安全性。与任何工具一样,它必须正确使用才能有效。我们在本文中介绍了一些简单的技巧,但是要保护嵌入式系统,还有很多事情要做。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.