CASE STUDY / 01 · FIRMWARE SECURITY
Trust the update.
Before it runs.
Post-quantum firmware authentication on NXP i.MX93, connected to a desktop workflow for signing and key handling.
- Role
- Bachelor thesis student
- Context
- NXP Semiconductors / HAW Hamburg
- Period
- Oct 2024 – Jan 2025
- Focus
- SPHINCS+ · LMS · i.MX93
Python · PySide6 · SQLite

Authenticity before execution.
A firmware update changes the software a device will execute. The engineering problem is to authenticate that firmware, then understand the cost and integration implications of post-quantum signatures on an embedded platform.
My thesis combined a SPHINCS+ authentication implementation, a comparison of SPHINCS+ and LMS on i.MX93, and a usable signing application.
From the signing workflow to the device.
The desktop application handles the signing workflow; the embedded side authenticates firmware signatures. The diagram summarizes those responsibilities, rather than reproducing the board layout.
Desktop workflow
Signing and key handling
Application data
Authenticate firmware
SPHINCS+
Implementation, evaluation, tooling.
Firmware authentication
Implemented SPHINCS+ firmware-signature authentication as part of the secure-update mechanism.
Embedded evaluation
Benchmarked SPHINCS+ and LMS on NXP i.MX93 and evaluated performance and integration aspects.
A signing application
Built an object-oriented Python/PySide6 application backed by SQLite for cryptographic key handling and firmware signing.
Same update. Three different outcomes.
The related browser demo explains authentication, rejection and recovery. It runs real SHA-256 and ECDSA P-256 checks; A/B slots, trial boot and health confirmation are modeled. It does not execute the thesis’s post-quantum schemes.
| Scenario | Decisive check | Final modeled state |
|---|---|---|
| Successful updatePlay successful update → | Signature, policy and payload pass. The modeled health check confirms B. |
|
| Tampered firmwarePlay tampering scenario → | The manifest signature passes. One changed payload byte causes a digest mismatch; B never boots. |
|
| Boot recoveryPlay boot recovery → | Cryptographic checks pass. B fails the modeled health check; reset restores confirmed A. |
|
Expected demo outcomes, not thesis benchmark results. Every run starts with A active and confirmed, and a sequence floor of 7.
Technical background & references
- IETF RFC 9124 · Firmware manifests
- NIST FIPS 205 · SLH-DSA
- NIST SP 800-208 · LMS / XMSS
- MCUboot · Trial boot & recovery
Protocol background for the explanation; these references are not evidence of the thesis’s benchmark results.