亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 云计算

如何利用 LPC5500 的 Arm TrustZone 安全功能

了解 LPC5500 系列的 Arm TrustZone 扩展如何工作,以及如何开始在自定义安全和非安全应用程序中使用安全措施。

随着越来越多的连接设备和越来越复杂的黑客,许多公司——比如恩智浦半导体——已经意识到需要采取对策。 NXP 开发了 LPC5500 MCU 系列,该系列具有增强的安全功能,可用于保护嵌入式项目。

恩智浦采用了符合 FIPS 标准的随机数发生器,选择了“王子”解密算法(允许内核执行对称加密代码),并使用 PUF 技术实现了一个 4096 位的片上临时密钥。当与片上加密硬件加速器“CASPER”结合使用时,LPC5500 MCU 适用于需要强大的网络安全对策和整个生命周期密钥配置的网络边缘物联网应用。

此外,该芯片还为基于 Cortex-M 的设备利用了 Arm TrustZone 技术。在本文中,了解 LPC5500 系列的 TrustZone 扩展的工作原理以及如何开始利用自定义应用程序中的安全措施。

Cortex-M 的 Arm TrustZone 技术是什么?

TrustZone 的核心原理最好通过一个例子来说明。 MCU 制造商通常在微控制器的 ROM 中提供自定义专有代码,例如安全库、引导加载程序或快速 DSP 算法。然而,这些应用程序的作者通常有充分的理由来保护他们的知识产权——他们可能不希望用户或竞争对手反编译二进制文件以对算法进行逆向工程。

一方面,程序员希望利用这些预定义的软件库。然而,另一方面,制造商不希望代码暴露给可能的恶意方。

图 1. 非安全用户代码和安全 ROM 内容驻留在同一个物理 MCU 上。

供应商希望隐藏实现细节,同时仍然确保开发人员可以访问这些功能。用户代码能够调用隐藏软件的公开方法,但它不能直接访问安全 ROM 拥有的内存。结果是一个由两个独立子系统组成的结构。这两个世界之间的转换由 TrustZone 安全扩展管理。

这意味着使用 TrustZone 的微控制器将被构建为两个独立的项目。第一个项目在 Secure 状态下开始。然后它为片上资源配置安全属性,并可以在可从非安全状态访问的表中发布安全功能。第二个包含非安全代码,并且对安全世界的公开功能具有有限的访问权限。

与早期架构的区别

Cortex-M3 和 -M4 内核知道两种处理器模式:线程模式和处理程序模式。应用软件以线程模式运行,处理程序模式处理异常。代码可以在特权或非特权级别运行,控制对某些 CPU 功能的访问。

通过 Cortex-M33 内核中的 TrustZone 扩展,引入了两个新状态,如上所述。这种变化导致了四种不同的处理器模式:非安全处理程序、安全处理程序模式、非安全线程和安全线程。

图 2. M33 内核中的 TrustZone 扩展创建了四种处理器模式。

除了其他更新外,还引入了新的 SysTick 计时器和新状态。所以现在,安全状态和非安全状态有单独的计时器。

内存分区

如前所述,MCU 的内存被划分为安全区域和非安全区域。如果 MCU 的 CPU 内核在其中一种安全模式下运行,则它只能访问安全内存区域。它无法访问驻留在其他内存分区中的任何指令。但是,它可以读取和写入数据 RAM 的安全和非安全段。如果 CPU 内核处于非安全状态,则只能访问非安全指令和数据存储块。

TrustZone 使用安全属性装饰内存映射中的地址范围。共有三种安全属性:安全 (S)、非安全 (NS) 和非安全可调用 (NSC)。根据内核当前的安全状态,允许或拒绝访问每个内存区域。

图 3。 CPU 可以在安全和非安全模式下访问不同的区域。

在 LPC55S69 设备上,内存根据地址分为安全段和非安全段。如果内存地址位 28 为低,则内存是非安全的。否则,它是安全的。唯一的例外是程序存储器,它可以通过安全属性单元进行配置。

安全应用程序的构建块

非安全代码不能直接调用应用程序的安全部分。相反,受保护的部分公开了用户可以访问的功能列表。该列表被命名为 veneer-table,因为它是一个非常薄的层,从外面可以看到,但隐藏了内部细节。单板表位于具有 TrustZone 属性 NonSecure Callable 的内存区域中。

通常,受保护部分的来源是不可见的。相反,它被编译,提供一个对象库和单板表作为头文件。请注意,这些文件均不包含任何实际指令,但它们一起包含调用安全函数所需的信息。单板表只包含一个网关和一个分支指令,指向真正指令所在的安全内存位置。

在安全和非安全功能之间转换

带有 TrustZone 扩展的 CPU 支持两种用于在安全和非安全之间转换的新函数:SG 和 BXNS 指令。

当用户代码需要一个安全函数时,它会通过位于内存 NSC 部分的单板表进行调用。然后利用 SG 指令将 CPU 切换到安全模式。执行完成后,控制权通过 BXNS 指令返回给用户代码:

图 4。 用户代码必须通过 TrustZone 网守调用安全功能。

如果用户尝试进行非法的与安全相关的操作,例如直接访问受保护的区域,则会引发安全故障异常。

一个安全的 Hello World 示例

LPCXpresso55S69 的 SDK 附带了一些可以在 MCUXpresso 中加载的 TrustZone 示例。如前所述,这些示例由两个独立的项目组成:安全部分和非安全用户代码。

安全部分看起来几乎与任何其他 MCUXpresso 项目完全一样。但是,有一个区别,就是下面的函数调用:

应尽早调用此函数。之后,由安全项目负责配置内存和非安全项目:

因为安全项目处理所有的设置调用,非安全项目不需要,所以它的主要功能很短:

但是,此应用程序仅调用在其他项目中定义的安全函数。 PRINTF_NSE函数定义如下:

如果遵循该定义,则它指向在受保护项目中定义的单板表。重要的是要记住,非安全项目只知道描述单板表的头文件。不过这种情况下,我们可以看看源码中的对应函数:

“__attribute__((cmse_nonsecure_entry))”修饰强制将函数导出到目标文件中。

对内存进行分区

安全属性定义了内存的哪些部分是安全的、NSC 的还是不安全的。每次访问时都会检查这些。为此,MCU 使用处理这些检查的硬件进行了扩展,并由三个逻辑块组成:

  1. 安全归因单元 (SAU)
  2. 实施定义的归因单元 (IDAU)
  3. 安全归因逻辑

SAU 由 BOARD_InitTrustZone() 函数内的安全项目编程。这允许将内存划分为具有不同安全设置的八个区域。请注意,任何未明确设置的区域在默认情况下都是安全的。

IDAU 允许 MCU 制造商(在本例中为 NXP)定义更多自定义区域。这里,区域取决于地址的第 28 位。在 LPC55S69 MCU 上,内存映射的底部(0x0000_0000 到 0x2FFF_FFFF)默认为 non-secure,因此可以使用 SAU 自由配置。

仲裁器确保 IDAU 和 SAU 设置匹配。对于要标记为不安全的内存区域,两个逻辑块都必须设置为非安全。否则,内存将回退到默认的安全状态。这同样适用于 NSC 内存区域。一个section要成为NSC,必须将SAU标记为NSC,IDAU必须设置为非安全。

MCUXpresso 中有一个工具可以让用户快速轻松地定义内存区域。要访问该工具,请使用 IDE 的主菜单栏并打开 TEE 透视图:

图 5。 这个 MCUXpresso 工具允许用户查看和编辑 MCU 的内存映射。

工具左侧的表格可以更改内存区域的安全级别。右侧的内存映射说明了内存是如何分区的。

TrustZone 提供必要的安全组件

在采用 TrustZone 技术的 LPC5500 MCU 系列上,内存被分为安全和非安全世界——允许用户访问部分非安全内存,并且还可以编写安全应用程序以供使用其他。 TrustZone 充当两个世界之间的看门人,并管理核心如何在它们之间转换。

为此引入了两条新指令。安全应用程序提供了一个单板表,它公开了可从非安全上下文调用的函数。 MCU 中的硬件可确保不会执行非法内存访问操作。该硬件还可用于配置内存映射中的区域。为此,MCUXpresso 提供了 TEE 视角。更深入地了解为 LPC5500 系列 MCU 提供的安全性,可以提供更好的设计体验。更多关于 TrustZone 的信息可以通过观看 TrustZone:Calling the Secure World 找到。

行业文章是一种内容形式,允许行业合作伙伴以编辑内容不太适合的方式与 All About Circuits 读者分享有用的新闻、消息和技术。所有行业文章都遵循严格的编辑指南,旨在为读者提供有用的新闻、技术专长或故事。行业文章中表达的观点和意见是合作伙伴的观点和意见,不一定是All About Circuits或其作者的观点和意见。


云计算

  1. 云及其如何改变 IT 世界
  2. 云安全是网络安全的未来
  3. 如何成为云安全工程师
  4. 为什么云中数据安全的未来是可编程的
  5. 如何保护云技术?
  6. 如何管理云安全风险
  7. 黑客如何破解云;使用 AWS
  8. 如何通过 Google 云工程师考试?
  9. 如何在云端部署 DevOps
  10. 如何将 ERP 迁移到云端
  11. 如何获得公共云的好处
  12. 未来是相连的,我们有责任保护它