下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

使用 FreeRTOS 的 Arm Cortex-M 设备的安全性

要确保微控制器的安全性是一项挑战,部分原因是缺乏硬件强制的安全域。创建两个安全域通常需要两个微处理器,每个微处理器都有一个单独的内存保护单元 (MPU)。与 Armv8-M 架构一同推出的 Arm TrustZone ,可在单个 Cortex-M 处理器上启用两个安全处理环境(参见在 Armv8-M 微控制器上使用 FreeRTOS)。拥有单独的安全处理环境和非安全处理环境后,您将如何利用它们?

引入 Trusted Firmware-M

Trusted Firmware-M  (TF-M) 为 Armv8-M 架构(如 Cortex-M55、Cortex-M33 和 Cortex-M23 处理器)和双核 Cortex-M 设备实现了安全处理环境 (SPE)。它是符合 PSA 认证指南的 PSA 参考实现,能使芯片、实时操作系统和设备通过 PSA 认证。作为一个根据可信固件开放治理社区项目中托管的 BSD-3 条款许可证分发的开源项目,它支持多个基于 Cortex-M 的微控制器,如 NXP LPC55S69、STM32L5 和 CypressPSoC 64。FreeRTOS 已通过 TF-M 实现了 PSA 功能 API 认证

TF-M 提供一套安全服务——加密、认证和安全存储。它还通过基于 mcuboot 的 第2阶段引导加载程序提供安全引导,用于验证平台的运行时映像和更新。非安全处理环境 (NSPE) 中的应用程序和库可以通过一套标准化的 PSA 功能 API 来利用这些安全服务。在 Armv8-M 设备上, TF-M 使用 Arm TrustZone 技术来隔离 NSPE 及安全处理环境 (SPE) 代码和数据。在 Cortex-M 设备上运行的应用程序可以利用 TF-M 服务来确保与边缘网关和 IoT 云服务的安全连接。它还保护平台上的敏感数据、密钥和证书等关键安全资产。

图 1 :使用 TF-M 的基于 Armv8-M 的 Cortex-M 处理器

TF-M 已完成与 FreeRTOS 的初始集成。这使得在 Cortex-M 设备上运行 FreeRTOS 的应用程序能够利用 TF-M 通过 PSA 功能 API 提供的安全服务。该集成已在 Arm Musca-B1 参考平台上进行了验证,预计将可在带有 TF-M 的多个 Cortex-M 平台上使用。

与 FreeRTOS 内核集成

如下图所示, FreeRTOS 内核在 NSPE 中运行,TF-M 则在 SPE 中运行。FreeRTOS 任务可以通过 PSA 功能 API 利用任何 TF-M 安全服务(例如加密、安全存储和认证)。非安全调度程序将 PSA 功能 API 调用从任务转发到 TF-M。在 Github 上可查看带示例的集成。NSPE 可以使用提供不同安全和隔离级别的 IPC 或函数调用机制与 TF-M 进行通信。FreeRTOS 可以根据应用需求使用上述任一机制与 TF-M 进行通信。

图 2 :基于 Armv8-M 的带 FreeRTOS 和 TF-M 的 Cortex-M 处理器

与 PKCS# 11 集成

FreeRTOS 的引用 IoT 集成提供了各种库和 API ,如安全套接字、TLS、OTA 代理和 PKCS#11 (公共密钥加密标准 #11) ,以提高应用程序的安全性。

PKCS#11 API 用于 FreeRTOS 来执行 TLS 客户端身份验证并将 TLS 客户端证书和私钥导入设备。PKCS#11 使用小型 Shim 与 TF-M 完成了集成,并在 Arm Musca-B1 参考平台上进行了验证。在集成中, PKCS#11 API 通过 Shim 调用适当的 PSA 功能安全存储 API 或加密 API。这确保了密钥和证书受到保护,加密操作在 TF-M 的 SPE 内安全执行,并且与非安全处理环境中的内核、库和应用程序隔离开。密钥和证书分别安全地存储在芯片存储和外部闪存上。这是由 TF-M 的内部可信存储 (ITS) 和保护存储 (PS) 服务启用的。TLS 客户端身份验证期间的签名由 TF-M 的加密服务执行。如下图所示, Arm Musca-B1参考平台上的集成示例可在此处查看,同时随附一份自述文件。PSA 功能 API Shim 在 FreeRTOS 项目中的 psa 文件夹下可用,允许支持 TF-M 的平台使用这个中介层。

图 3:基于 Armv8-M 的 Cortex-M 处理器,带有 FreeRTOS、PSA 功能 API shim 和 TF-M

表 1 展示了在FreeRTOS中使用的PKCS # 11 API以及在密钥和证书以及TLS客户端身份验证设置期间调用的PSA功能API的映射。

PKCS11 API PSA 功能 API
C_CreateObject psa_ps_set
psa_import_key
psa_close_key
C_GenerateKeyPair psa_gener_key
psa_export_public_key
psa_import_key
C_DestroyObject psa_ps_remove
psa_destroy_key
C_VerifyInit
C_Verify
psa_verify_hash
C_SignInit
C_Sign
psa_sign_hash
C_FindObjectsInit
C_FindObjects
psa_open_key
C_GetAttributeValue psa_ps_get
psa_export_key
C_DigestInit
C_DigestUpdate
C_DigestFinal
psa_hash_setup,
psa_hash_update,
psa_hash_finish
C_GenerateRandom psa_generate_random
表 1:PKCS# 11 和 PSA 功能 API 映射

下一步是什么

下一步是将 FreeRTOS 安全组件与 TF-M 的集成扩展到 PKCS# 11 接口之外。FreeRTOS OTA 代理允许应用程序在平台上接收、验证和部署新图像。将 OTA 代理与TF-M的安全启动集成,使 FreeRTOS 能够利用平台提供的所有安全功能对 SPE 内的新图像进行身份验证,以减少图像更新漏洞。当 Mbed TLS 项目开始使用 PSA 功能加密 API 进行加密操作时, FreeRTOS 发起的所有 TLS 操作都将通过 PSA 功能加密 API 调用 TF-M 加密服务。当前的集成和这些增强功能将在使用 TF-M 启用的各种 Cortex-M 设备上可用,从而简化了基于 FreeRTOS 的应用程序的开发人员的安全性。

访问可信固件项目,了解有关 TF-M 和 Github 的更多信息,以访问 FreeRTOS 集成 Musca-B1 PSA 文件夹中的 PSA 功能 API Shim 可以通过 FreeRTOS 和启用 TF-M 的平台加以利用

图 4 : 基于 Armv8-M 的 Cortex-M 处理器,完全集成 FreeRTOS 和 TF-M

作者简介

Shebu Varghese Kuriakose 是 Arm 开源软件集团软件技术管理总监兼可信固件项目委员会主席。Shebu 推动了 Trusted Firmware-M 开发路线图的执行以及与硅供应商、RTOS 和工具生态系统的合作。
查看此作者的文章
FreeRTOS 论坛 获得来自专家的行业领先支持,并与全球同行合作。 查看论坛
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.