嵌入式技术
wolfSSL的wolfBoot Secure Bootloader是一种安全的无线 (OTA) 固件管理解决方案,专为固件更新和身份验证用例而设计。引导加载程序在引导时执行以防止恶意和/或未经授权的固件在设备上运行,并利用轻量级wolfCrypt 加密引擎使用流行的现代算法和密码来保护引导过程。
wolfBoot 安全引导加载程序旨在帮助减少开发和验证 OTA 更新机制所需的时间,提供 HAL API, 使其能够轻松集成到现有项目中。无论操作系统(包括 RTOS、Linux 或裸机)如何,便携式引导加载程序都可以与任何关键配置系统或应用程序集成,并支持 Arm(TrustZone 和正常世界)、RISC-V 的一系列 32 位微控制器等,以及 MIPI 引导机制。
wolfBoot 安全引导加载程序在行动:
wolfBoot 引导加载程序完全用 C 和 Arm 程序集编写,旨在在基本的微控制器上运行,没有动态内存分配或链接到前面提到的 wolfCrypt 加密引擎之外的标准 C 库。wolfCrypt 库仅作为验证图像签名的真实性和完整性的一种手段。
为了灵活性,wolfBoot 具有闪存设备的多槽分区功能,允许:
一个用于引导加载程序的 10-32 KB 分区
一个具有当前执行固件的引导分区
一个大小相同的更新分区,用于接收要由引导加载程序验证和安装的更新
一个交换分区,可用于在新映像安装失败时回退到以前的固件版本。
*交换和更新分区可以映射到外部 NVM。
在带有固件身份验证的典型引导过程中,wolfBoot 将在每次设备引导时验证当前固件。当运行应用程序并执行由同一服务器或同一密钥准确签名和版本化的远程固件更新时,更新使用 OTA 机制传输并由应用程序存储在固件更新分区中。重新启动后,引导加载程序验证更新,然后检查新映像是否比现有映像更新,以防止回滚攻击,并通过 wolfCrypt 使用 SHA-2 或 SHA-3 哈希验证映像的整体完整性和真实性。
wolfBoot 引导加载程序为安全更新管理提供了两个选项:A/B 方法和 BOOT/UPDATE 方法。A/B 方法由非易失性存储器中的两个分区组成,共享相同的层次结构级别,更新安装在未使用的分区中,同时保留旧固件以允许可能的回退。 根据 wolfSSL,A/B 方法适用于与位置无关的固件映像,不推荐用于具有物理内存映射约束的微控制器,因为它会在编译时导致就地执行约束,并且不允许使用外部 NVM 来存储更新。
BOOT/UPDATE 方法允许活动固件始终从同一分区引导,而更新存储在第二个分区中。在安装过程中,交换两个分区的内容。如果需要回退,则执行第二次交换操作。
此外,wolfBoot 具有集成的基于 Python 和 C 的 ECC/Ed25519 密钥和图像签名生成工具,可在构建 wolfBoot 库时创建密钥对。此密钥对可用于对添加到设备的固件进行签名,或更改固件映像格式以使其与引导加载程序兼容。
其他功能包括 wolfBoot 测试应用程序、安全密钥存储、 支持用于更新/交换的外部闪存、支持加密固件映像、支持硬件辅助签名验证,当然还有更新引导加载程序本身的能力。
wolfBoot 安全引导加载程序入门
wolfBoot 安全引导加载程序 1.7.1 版在开源 GPLv2 许可下可用,可从www.wolfssl.com/download下载。wolfSSL 还在Github 上提供了许多 wolfBoot 示例。
首先,用户可以将安全引导加载程序与设备一起使用,包括具有硬件辅助签名验证的硬件加速器,如 STM32-PKA 和 Freescale-PKHA 设备、支持 TPM 2.0 的硬件安全模块(可通过 wolfTPM 获得)、各种其他 STM32 和 NXP/飞思卡尔 i.MX/LPC MCU、 SiFive 的 HiFive1、Xilinx Zynq UltraScale+,甚至 Raspberry Pi 3。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !