What is Secure Boot and Why Every IoT Device Needs It
- Last Updated: August 31, 2026
Platanor Technologies
- Last Updated: August 31, 2026



A question that came up in a recent discussion about CRA compliance was whether secure boot is actually required or just recommended. The short answer is: it is required, and it is required because without it, none of your other security measures work reliably.
A device that boots unverified firmware is a device an attacker can fully own - regardless of how good the rest of your security architecture is.
When your microcontroller powers on, it starts executing code from a defined memory location. On most embedded platforms, this is the bootloader—a small piece of code that initializes hardware and loads the main application firmware.
Without secure boot, the bootloader loads whatever firmware it finds at the expected address. It does not check whether that firmware was written by you, whether it has been modified since you shipped it, or whether it is legitimate in any way. It just runs it.
This means an attacker who can write to your device's flash memory—through a firmware update channel, a debug interface, physical access, or a vulnerability in your update mechanism—can replace your firmware with their own. The device will boot it without complaint. It will appear to function normally. It is now running attacker code.
The attacker does not need to break your encryption. They do not need your private keys. They just need to get their firmware onto the device, and the device will run it.
This is not a theoretical scenario. It is the standard attack against IoT devices that lack firmware integrity verification. The Mirai botnet, which took down significant internet infrastructure in 2016, was built largely on devices where firmware modification was trivial.
Secure boot solves this by making the device verify firmware authenticity before executing it. The mechanism is a cryptographic chain of trust that starts at the hardware level.
Here is how the chain works, step by step.
Root of trust in hardware. The process starts with something that cannot be modified after manufacturing: a public key hash burned into One-Time Programmable (OTP) memory, or a key stored in hardware security elements on the chip. This is the hardware root of trust. It is the anchor of the entire chain - the one thing the attacker cannot replace.
Bootloader verification. When the device powers on, the first-stage boot code (which lives in ROM and cannot be modified) reads the bootloader from flash and checks its cryptographic signature against the public key in OTP memory. If the signature is valid, the bootloader is authentic and execution continues. If the signature does not match, the boot halts.
Application firmware verification. The bootloader, now verified, performs the same check on the main application firmware. It reads the firmware image, verifies its signature against a trusted public key, and only passes execution to the application if the signature is valid.
Chain continues. Each verified component can extend the chain further—verifying configuration data, checking software versions, and validating update packages before applying them.
The result: the device only runs code that was signed with your private key. An attacker who replaces your firmware with their own cannot sign it with your key. The device will reject it and refuse to boot.
Annex I of the CRA requires manufacturers to ensure the integrity of software running on connected products. The specific requirement is that products must include mechanisms to verify the authenticity and integrity of software— both at boot time and during updates.
Secure boot satisfies the boot-time requirement. Without it, there is no basis for claiming that the software running on a shipped device is the software you intended to ship.
This is why CRA treats secure boot not as an advanced security feature but as a baseline—the minimum foundation without which everything else is unreliable. Encrypted communications are only meaningful if you can trust that the device establishing the connection is running legitimate firmware. Unique device identity is only meaningful if the identity cannot be replaced along with a firmware swap.
Secure boot is the prerequisite that makes the rest of the security architecture trustworthy.
Nordic's security architecture centers on the Trusted Execution Environment (TrustZone-M on Cortex-M33 cores) and the NSIB—Nordic Secure Immutable Bootloader. The NSIB lives in the device's ROM-equivalent region and is the hardware root of trust on these platforms.
The typical secure boot chain on nRF:
Nordic's nRF Connect SDK includes MCUboot integration. The key management—generating signing keys, provisioning public keys into the device, signing images at build time—is where most teams need to put deliberate effort. The tooling exists; it requires intentional setup.
ST implements secure boot through the STM32 Secure Boot and Secure Firmware Update (SBSFU) library, and more recently through the built-in Secure Boot (STiROT and OBKey) mechanisms on newer series.
The chain on STM32:
One important detail on STM32: Option Bytes must be locked before shipping. Development boards ship with Option Bytes in an unlocked state, which allows debug access and key replacement. Shipping a device with unlocked Option Bytes means an attacker with physical access can re-provision the root of trust key. This is a configuration step that has to be part of your manufacturing process.
Secure boot is disabled in the production build.
This happens more often than it should, and it happens for an understandable reason: secure boot complicates the development and testing workflow. Signing every firmware image, managing keys, and dealing with devices that refuse to boot unsigned debug builds add friction. So teams enable it in the security architecture, implement the mechanism correctly, and then leave a flag or build configuration that bypasses signature verification in production.
The device ships. It passes internal testing. The secure boot feature exists in the codebase. And it does nothing, because the production build has verification disabled or the signing key is a placeholder that was never properly provisioned.
The correct approach is to treat production configuration—Option Bytes locked, debug interfaces disabled, signing key provisioned, verification enforced—as a formal step in the manufacturing process with its own validation check. Not a development task that someone will get to.
The regulation does not use the term "secure boot"; it requires manufacturers to "protect the integrity of stored, transmitted or otherwise processed data, personal or other, commands, programs and configuration against any manipulation or modification not authorized by the user" (Annex I, Part I, point (2)(f)). Secure boot is the standard implementation of this requirement for embedded devices. A device that cannot verify firmware integrity at boot time does not meet the Annex I requirement.
Partially. Some lower-end microcontrollers lack OTP memory or hardware key storage. In those cases, software-only implementations provide weaker guarantees - an attacker with flash access can potentially replace both the verification code and the key. For CRA compliance, hardware-backed root of trust is the correct approach. It is a hardware selection decision that should be made at the architecture stage, not after the board is designed.
No. Secure boot verifies that firmware is authentic at load time. It does not protect against vulnerabilities within the legitimate firmware itself - a properly signed firmware image can still contain bugs that attackers exploit at runtime. Secure boot is one layer of a defense-in-depth architecture, not a complete solution on its own.
If your private signing key is compromised, an attacker can sign malicious firmware that passes verification. Key management - generating keys securely, storing private keys in hardware security modules, rotating keys if compromise is suspected - is as important as the implementation itself. A secure boot implementation is only as strong as the key management around it.
Secure boot covers boot-time integrity. CRA also requires integrity verification for firmware updates—the OTA update mechanism must verify the authenticity and integrity of update packages before applying them. These are related but separate requirements. Both need to be in place.
The Most Comprehensive IoT Newsletter for Enterprises
Showcasing the highest-quality content, resources, news, and insights from the world of the Internet of Things. Subscribe to remain informed and up-to-date.
New Podcast Episode

Related Articles