User:Marcoshi/sandbox

= wolfBoot Secure Bootloader = wolfBoot is a portable, OS-agnostic, secure bootloader solution for 32-bit microcontrollers, relying on wolfCrypt for firmware authentication, providing firmware update mechanisms. Due to the minimalist design of the bootloader and the tiny HAL API, wolfBoot is completely independent from any OS or bare-metal application, and can be ported and integrated in existing embedded software projects to provide a secure firmware update mechanism.

Python and C Key Tools
wolfBoot comes with an included key generation and image signature generator tools. These tools can be used to generate the private/public key pair, and to attach the required manifest header that contains the signature of the bootable image. The image generated by the tools will comply with the firmware image format required by the bootloader, and contains the signature used to authenticate the firmware. Versions of these tools are available in both Python and C.

Platform and Language Support
Thanks to its OS agnosticism, wolfBoot is easily ported and integrated in existing embedded software projects. Example platforms have been specifically tested and many targets are already supported, including the following STM32-F407, STM32L0x3, STM32G0x0/STM32G0x1, STM32WB55, STM32-F769, STM32H7, STM32L5xx, NXP i.MX RT-1060, NXP T2080, SiFive HiFive1 RISC-V, LPC54606, Cortex-A53 / Raspberry Pi 3, Xilinx Zynq UltraScale+ (Aarch64), TI TMS570LC435, ARMv8-m (Cortex-m33), ARM Cortex-R, PowerPC

Secure Key Storage and Provisioning
wolfBoot supports multiple hardware-based public-key accelerators, such as Freescale-PKHA and STM32-PKA. wolfBoot also supports hardware security modules(HSM), including Trusted Platform Module(TPM). TPM 2.0 support is provided through the integration with wolfTPM.

wolfBoot does not enforce any specific key provisioning. In the simplest case you simply create a private key and use it to sign authentic updates for your target. For this reason, it can be integrated with any specific provisioning system that supports the same algorithms.

Firmware Backup and Restore
Upon receiving and installing a verified update, wolfBoot keeps a backup copy of the newest firmware image that had been confirmed to work correctly. If the new version is not confirmed by the application

itself, or whenever the image installed is damaged or corrupt, the bootloader will restore the state of the system before the most recent update.


 * OS-agnostic, can run along side RTOS, Linux or bare-metal application
 * Supports ARM TrustZone-M, can operate in both Secure and Normal world
 * Multi-slot partitioning of the flash device
 * Integrity verification of the firmware image(s)
 * Authenticity verification of the firmware image(s)
 * Digital signature algorithms (ECDSA SECP256R1/Ed25519/RSA 2048/4096)
 * Hash algorithms (SHA-256, SHA-3-384)
 * Minimalist hardware abstraction layer (HAL) interface to facilitate portability across different vendors/MCUs
 * Copy/swap images from secondary slots into the primary slots to consent firmware update operations
 * In-place chain-loading of the firmware image in the primary slot
 * Hardware Security Modules support, including TPM 2.0 modules
 * Tested on STM32 with Infineon TPM2.0 9670 module
 * Measured boot using TPM 2.0 is supported
 * Support for external (e.g. SPI) flash for update/swap
 * Anti-rollback protection via version number
 * Support for updating the bootloader itself
 * Support for encrypted firmware images
 * Support for hardware-assisted signature verification:
 * STM32 PKA (e.g. STM32WB55)
 * Kinetis/Freescale PKHA (e.g. Kinetis K82F)
 * Contains key tools and image signing tools written in Python and C
 * Includes wolfBoot test applications
 * Secure key storage
 * UEFI support