下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

通过 FreeRTOS 为 Cortex-M 设备提供安全的 OTA 更新

IoT 设备在各细分市场得到快速采用,正成为网络攻击的主要目标。对 IoT 设备受到攻击很大一部分是与偶遇软件投入使用后缺少软件更新, 或更新不安全所致。网络攻击者通常针对过时的软件组件中的漏洞来控制设备。 软件更新是通过对新发现的漏洞进行及时修复 来应对持续威胁的手段。

手动更新软件通常难以广泛应用到机群中的 IoT 设备,原因在于它们可能需要频繁升级, 而且难以直接操作。Over-the-Air (OTA) 更新通常用于升级 IoT 设备。OTA 更新 通过使用蜂窝或互联网连接无线部署升级而远程完成。这避免了对设备进行物理访问, 而且可以集中管理机群中数百万台设备的大规模升级。

IoT 设备支持安全 OTA 升级的主要障碍之一,是将 OTA 应用程序集成到 IoT 生态系统中的复杂性。原因在于这涉及各种搭载不同存储、升级、 映像身份验证机制的硬件平台。PSA 认证框架旨在为 IoT 开发人员提供 简单便捷的安全性。PSA 认证定义了 10 项安全目标,其中之一就是安全更新。PSA 固件升级 PSA 认证框架所含规范有助于实现这一目标。

此博文探讨了 FreeRTOS 设备如何在 Cortex-M 设备上利用 PSA 固件升级规范无缝启用 Secure OTA 更新 。此博文首先介绍了 PSA 固件升级规范,然后 介绍参考实现 Trusted Firmware-M 如何与 Cortex-M 设备上的现有 FreeRTOS OTA Agent 集成,进而执行 OTA 安全升级。 已在 Arm v8-M 参考平台 MuscaB1e 上进行了示例实现。

PSA 固件升级–升级标准接口

PSA 固件升级规范定义了一组 可供升级应用程序和云连接器客户端使用的标准固件升级接口。接口为在 各式各样的 IoT SoC 架构上和不同的信任模型上高效实施提供较高的灵活性。接口也 独立于设备通信所用协议以及向设备传递升级 的中介。

以下为定义的一组接口。

PSA FWU API 它的作用是什么
psa_fwu_query () 查询映像信息,如已安装、已拒绝和候选映像的状态
psa_fwu_write () 将候选映像写入其临时区域
psa_fwu_install () 开始安装映像
psa_fwu_request_reboot () 触发平台重新启动以应用经过身份验证的新映像
psa_fwu_request_rollback () 回滚最近应用的升级
psa_fwu_accept () 指示最近应用的升级是否正常运行。

更新应用程序可以调用这些接口来查询当前映像的状态,存储、验证并最终 安装新映像。

Trusted Firmware-M (TF-M) 作为 Cortex-M 设备已通过 PSA 认证的参考实现应用了这些接口。 这样,升级应用程序可在启用 TF-M 的 Cortex-M 设备上使用这些接口。

Trusted Firmware-M 和安全启动

Trusted Firmware-M (TF-M) 为基于 Armv8-M 架构的处理器 (例如 Cortex-M55、Cortex-M33 和 Cortex-M23处理器)和双核 Cortex-M 设备实现安全处理环境 (SPE)。TF-M 有助于更快地 开发 PSA 认证设备, 可根据 PSA 认证指南提供参考实现。它可在多个 Cortex-M 平台(如 NXP LPC55S69、ST STM32L5、Infineon PSoC64、Nordic、 nrf5340、nrf9160 和 Nuvoton M2351、M2354)上使用。FreeRTOS 与 TF-M 运行时服务集成,使得 Cortex-M 设备 具备如此处所述的安全性。 FreeRTOS 已达到 PSA 认证级别 1 级。这样确保基本安全原则已纳入 可供 OEM 应用程序开发人员利用的系统软件之中。

图 1:Cortex-M 设备内安全处理环境中 Trusted Firmware-M 示意图。非安全处理环境(RTOS 和应用程序)可以使用 PSA Functional API

TF-M 提供的一项重要功能是安全启动。安全启动可确保仅在设备上 运行授权软件。由于设备已连接且软件一旦现场部署到位,就可以升级,所以这一能力至关重要。开 源社区项目 MCUboot 即被用作 TF-M 的安全引导加载程序。引导加载程序通过哈希和数字签名对运行时映像进行身份验证, 具体方式是使用 MCUboot 映像中的映像密钥或在 SoC 中提供的映像密钥。

除 PSA 加密、存储和认证安全运行时服务以外,TF-M 还将安全处理环境中的 PSA Firmware Update (PSA FWU) 接口作为一项安全服务(图 1)。这些接口处于 非安全处理环境 (NSPE) 中,允许升级应用程序而使用接口。PSA FWU 服务反过来依靠 TF-M 安全启动 (MCUboot) 来验证新映像,并且一旦成功验证, 会将其部署为活动映像。

基于 FreeRTOS 和 TF-M 集成 (此前完成),PSA FWU 安全服务 已与 FreeRTOS 集成,具体内容如下节所述。

FreeRTOS OTA 集成 TF-M

FreeRTOS 为 FreeRTOS 设备提供 OTA Agent 库,以 接收并部署来自 AWS IoT 的固件升级。这使得运行 IoT 的 FreeRTOS设备可以应用 OTA/升级。该库 还为拟集成库实现的供应商定义了一组 OTA 平台抽象层 (PAL) API。 每个 Cortex-M 硅平台需要提供 OTA PAL API 的实现,以启用平台上的 OTA Agent。

通过 TF-M 在 Cortex-M 设备上进行安全固件升级的 OTA PAL API的实现具有可用性。 API 实现使用 PSA Functional API,包括上文探讨的 PSA FWU API 和 PSA 加密 API。

下表展示了 OTA PAL API 中使用的 PSA 功能 API

OTA PAL API PSA 功能 API 
prvPAL_Abort psa_fwu_abort
prvPAL_CreateFileForRx
prvPAL_CloseFile psa_fwu_query
psa_asymmetric_verify
prvPAL_WriteBlock psa_fwu_write
prvPAL_ActivateNewImage psa_fwu_install
psa_fwu_request_reboot
prvPAL_ResetDevice psa_fwu_request_reboot
prvPAL_SetPlatformImageState psa_fwu_accept

使用 PSA 功能 API 的上述 OTA PAL API 实现可在 所有启用 TF-M 的 Cortex-M 平台上作为通用实现。这样避免了每个 Cortex-M 平台 对开发和维护 OTA PAL API 实现的投入。安全处理环境, 包括由 TF-M 提供的安全启动,确保在平台上安全完成 OTA 升级。

使用 TF-M OTA PAL 的 OTA 代理的示例实现已在 Arm Musca-B1e 平台上构建。 TF-M OTA PAL 通过 PSA Functional API 使用 TF-M 的 Firmware Update 服务。实现可以连接 至AWS IoT,接收新的固件映像,进行身份验证并部署该映像。下图 2 展示了实现情况。 有关 TF-M OTA PAL 和 FreeRTOS 实现的更多信息,请参阅 此处的 ota_pal_psa GitHub 文件夹。

图2: OTA Agent、OTA PAL 实现以及从 AWS IoT服务中启用 Secure OTA 升级的 TF-M 集成等示意图

使用 TF-M 和 FreeRTOS 简化 Cortex-M 上的 OTA 升级

OTA 是 IoT 设备部署后保持安全的基本构建基块。 NIST 8259A EN 303 645 概述了网络安全最佳实践和共同基线, 进而提升 IoT 设备的提高安全属性。与 PSA 认证一样,这些指南要求设备支持 软件和固件升级机制。IoT 设备制造商发现,由于基础硬件平台的变化性和复杂性,规模化启用 OTA 困难重重。采用 TF-M OTA PAL 和 TF-M 消除了这些复杂性, 允许 FreeRTOS Cortex-M 设备在其使用寿命期间无缝且安全地更新,利用 硅和系统软件的安全性。FreeRTOS 参考集成的详情, 请参阅 Github Trusted Firmware 了解有关 TF-M OTA PAL 和 TF-M 实施的更多信息。

作者简介

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