Skip to content
AESTECHNO
Updated  21 min read Hugues Orgitello EN

Industrial IoT cybersecurity: making a deployed fleet CRA-ready

Industrial IoT cybersecurity for a sensor fleet already in the field: keys, signed OTA, untrusted gateways, SBOM and CRA readiness. AESTECHNO, Montpellier.
Macro shot of a Kionix KXTF9 MEMS sensor soldered on a green PCB, a typical component of a fleet in scope for industrial IoT cybersecurity.

An industrial sensor is rarely secured once: by the time anyone finds what it lacks, it is already in the field, on battery, behind gateways nobody really controls. Industrial IoT cybersecurity then means hardening an existing fleet without recalling it: authenticate every message, protect the keys, sign the updates, then prove all of it under the Cyber Resilience Act (CRA), Regulation (EU) 2024/2847.

At AESTECHNO, an electronics design house in Montpellier, France, we design the hardware and firmware of these sensors and keep their security register. This guide comes from that work: what an OTA update can fix, what needs physical access, and what should have been decided before the first unit shipped. For the full regulatory picture, see our Cyber Resilience Act compliance guide.

TL;DR

CRA reporting has applied since 11 September 2026, including to products already sold. For a deployed fleet: treat the gateway as an adversary, authenticate every message end to end with a counter that fails closed, lock the debug port, decide on anti-rollback before the first unit, and generate an SBOM on every build. Harden in stages: observe first, enforce second.

Free Cyber Resilience Act checklist

Our printable checklist follows the regulation from product classification to CE marking, including the reporting duty that already applies. Free, no sales pitch.

Download the CRA checklist

Contents

What does industrial IoT cybersecurity cover for a fleet?

Industrial IoT cybersecurity for a fleet is the set of measures that ensure a deployed sensor sends authentic data, runs only signed firmware, keeps its keys out of reach and can be patched remotely, for its whole service life and not just on the day it is placed on the market.

The difference from securing a new product comes down to one word: legacy. A product still in design can switch microcontroller, add a secure element or rework its bootloader. A fleet in service can only change what its current firmware and bootloader allow it to change remotely. Everything else requires physical access to each unit.

That is why we always start with the same question: of the defects found, which ones an OTA update can fix, which ones need a site visit, and which ones stay accepted until the next hardware generation? For a product still on the drawing board, our guide to securing an IoT product from design to deployment covers the other side.

What does the CRA already require of a fleet in service?

The Cyber Resilience Act requires manufacturers of products with digital elements to meet security requirements across the whole life cycle. Its Article 14, the duty to report actively exploited vulnerabilities and severe incidents, has applied since 11 September 2026, including to products placed on the market before that date.

The reporting clock is tight: an early warning within 24 hours, a notification within 72 hours, then a final report, through the single reporting platform run by ENISA. For a fleet already sold, that means knowing which firmware runs in the field, which software components it contains, and how to push a fix.

The Annex I essential requirements apply from 11 December 2027 to products placed on the market after that date, or substantially modified. A security update on its own is not a substantial modification. Fines reach up to EUR 15 million or 2.5% of worldwide turnover. For a radio sensor, CE/RED certification and EN 18031 have applied on top since August 2025.

Threat model: the gateway is an adversary

A threat model describes who can attack the system, from where, and with what means. For a fleet of industrial sensors, the realistic starting point is simple: the gateway, the maintenance smartphone and the network are untrusted intermediaries, able to read, delay, replay or modify every message.

That assumption changes the architecture. If the sensor reports through third-party gateways shared between several organisations, encrypting the radio link protects nothing: the presumed attacker is precisely the peer of that link. Contrary to a common belief, Bluetooth Low Energy (BLE) pairing in Just Works mode authenticates nobody, and the modes that do authenticate need a passkey or an out-of-band channel that a screenless sensor does not have.

Protection therefore has to live above the link, end to end between sensor and server. Figure 1 sums up the four families of vectors we handle: network, local access, supply chain and side channels.

Industrial IoT attack surface map Four families of vectors converge onto the industrial IoT device: network (cellular, BLE, Wi-Fi, MQTT), local (USB, JTAG, UART, SD), supply-chain (firmware, BOM, manufacturer), side-channel (EM, glitch, laser). Attack surface of an industrial IoT device IoT device MCU + radio + sensors flash, RAM, secure element Remote network Cellular 4G/5G, NB-IoT, LTE-M BLE, Wi-Fi, LoRaWAN MQTT broker, cloud API Local access USB, serial port, UART console JTAG / SWD active debug SD slot, removable SIM Supply-chain Unaudited third-party firmware Counterfeit component, BOM Key injected at EMS Side-channel EM analysis, current measurement Clock glitch, laser fault Differential power analysis References: ENISA Threat Landscape, OWASP IoT Top 10, IEC 62443-4-2.
Figure 1. Four families of vectors converge onto the sensor: network, local access, supply chain and side channels. Each has its own countermeasures.

A second question often settles the debate: is confidentiality actually required? A temperature, a vibration level or a tank level is not always secret. A forged reading, however, can trigger an alarm, stop a line or hide a drift. In our practice the real requirement often boils down to three properties: authenticity, integrity and freshness. Writing them down explicitly avoids designing a full encryption protocol where a message signature is enough.

How do you authenticate every message without encrypting the radio link?

Message authentication guarantees that a reading really comes from the sensor it claims and was not altered on the way. It is achieved by appending to each frame a code computed with a secret key unique to the sensor, an HMAC, that only the server can verify.

On a recent project we chose a two-step design. First, a session established with an Ed25519 signature: the sensor proves its identity with a private key that never leaves the chip. Then every message carries an HMAC truncated to a few bytes, because the payload of a radio frame is tight. A monotonic counter, saved in non-volatile memory, is part of every computation: a replayed message carries a counter already seen and is rejected.

Why this is not a zero-knowledge proof

This is not a zero-knowledge proof (ZKP), even though the sensor proves it holds a key without revealing it. A ZKP is a distinct and heavier cryptographic construction, rarely justified on a battery-powered sensor. A session signature plus a per-message HMAC meets the need with proven primitives that are well supported on MCUs.

The delicate part is the counter. If its storage area becomes unreadable while the key survives, a naive firmware restarts at zero with the same key, and every previously captured message becomes replayable again. We recommend that this case fail closed: the sensor refuses commands, reports it to the server, and the only way out is re-provisioning with a new key. On that project we reproduced the defect in a radio simulation before it reached the bench, then verified the fix in the same test matrix.

Keys, secure element and debug port

A secure element is a dedicated chip that stores private keys in memory protected against direct readout and physical attacks. Recent microcontrollers also offer built-in, non-exportable key storage that provides a comparable service without an extra component.

Either way the principle is the same: the private key is generated or injected at the factory, signs in place, and only the public key ever leaves. Common parts are the Microchip ATECC608B, NXP SE050, Infineon OPTIGA Trust M and ST STSAFE-A110; the right choice depends on the software stack and on what the MCU already does. Unlike keys stored in internal flash, a firmware extraction then no longer compromises the whole fleet.

MCU-only vs MCU + ATECC608B secure element On the left, an MCU stores its keys in internal flash extractable via JTAG. On the right, adding an ATECC608B secure element on I2C isolates keys in a dedicated chip, ECDSA signature performed inside the chip. MCU only keys in internal flash MCU + ATECC608B keys in secure element STM32 or nRF52 Internal flash TLS private key, certificate RAM + soft crypto software crypto JTAG active = flash readout key readable by debugger no extra component key protection: weak STM32 or nRF52 MCU flash app code ATECC608B isolated keys ex-factory I2C SE crypto offload hardware ECDSA key inaccessible even by firmware side-channel + glitch resistant one more I2C part key protection: strong
Figure 2. A secure element (here the ATECC608B) or the MCU's hardware key storage puts private keys out of reach of a debugger: a firmware extraction no longer compromises the fleet.

The debug port remains the most frequent hole. During a hardware audit we found an industrial product shipped in volume with its JTAG port active and unlocked: flash readout with an off-the-shelf debugger, full extraction of the firmware and the TLS keys. Unlike a server, that defect cannot be fixed by a remote patch on units already delivered. We recommend locking the Joint Test Action Group (JTAG) and Serial Wire Debug (SWD) ports at end of line, and documenting how a returned sensor is unlocked, erased and re-provisioned at the workshop.

Key storage is also a process question. The factory provisioning order (identity key, message key, initial counter) must be tested like a product feature, with a simple fleet check: every sensor must report that it holds its keys. Our prototype-to-series industrialization process builds this check into the production test bench.

Signed OTA and anti-rollback: decide before the first unit

A signed OTA update is firmware that the bootloader accepts only after verifying its signature against a public key stored in the sensor. MCUboot, the bootloader of the Zephyr Project, handles that verification, the slot swap and the post-boot confirmation natively.

A signature is not enough. Without downgrade protection, an attacker can reinstall an older, correctly signed version that contains a known vulnerability. MCUboot offers a security counter attached to each image: the bootloader rejects any image whose counter is lower than the one already installed.

The catch is that this setting lives in the bootloader, and on many products the bootloader cannot be updated over the air. Units flashed before anti-rollback was enabled then stay unprotected until their next workshop visit. The same goes for write-protecting the bootloader: if the application can rewrite the bootloader area, compromised firmware can make itself permanent. These decisions belong before the first unit ships, not after.

Secure MCUboot OTA flow with A/B swap and anti-rollback Six steps: server signing, TLS transport, ECDSA verification, write to inactive slot, A/B swap, watchdog confirm with monotonic anti-rollback counter and return telemetry. Signed OTA cycle: server to field 1. Server build manifest + binary ECDSA signature 2. Transport TLS 1.3 mTLS X.509 encrypted channel 3. Verification ECDSA P-256 + version check rollback blocked 4. Inactive slot write to B A stays active no downtime 5. A/B swap test mode boot on B revert to A on fail 6. Confirm watchdog + counter anti-rollback Failure modes covered - firmware tampered in transit: detected by ECDSA signature - downgrade to vulnerable version: refused by monotonic counter - power loss during flash: dual A/B slot guarantees the rollback - malicious code that loops: no confirmation, revert to A - server signing key theft: HSM-side key rotation - OTA relay attack: mTLS X.509 + cert pinning Reference stack: MCUboot (Zephyr Project), aligned with IEC 62443-4-2 and CRA art. 13.
Figure 3. A defensible OTA chains signature, encrypted transport, verification, write to inactive slot, atomic swap and watchdog confirm: we design the whole sequence so no step can be short-circuited.

The rest of the chain is well known: signature on the build server, authenticated transport, write to the inactive slot, atomic swap and watchdog confirmation. Our Zephyr, FreeRTOS or real-time Linux comparison covers the stacks that support it, and our article on the CRA for embedded Linux handles Linux gateways.

Hardening a deployed fleet in stages

Hardening a fleet in stages means deploying security controls in observation mode first, then making them blocking once the whole fleet is ready. It prevents a rule switched on too early from cutting off badly provisioned sensors or maintenance tools that have not been updated yet.

On an existing fleet, an unsigned command is therefore not refused on day one: it is accepted and counted. The server sees which sensors, gateways and tools still send unauthenticated traffic. Once that count drops to zero and every sensor reports its keys, the fleet is armed and refusal becomes the rule. Despite the temptation to move fast, we recommend treating this arming step as a project milestone with its own exit criteria.

The table below works as a decision matrix: for each defect, it states the fix and what that fix costs on a fleet in service.

Fleet defect Fix Over the air?
Unauthenticated messages Per-message HMAC, counter, staged arming Yes, if a key can be provisioned
Counter lost, key kept Fail closed, re-provision Yes for the logic, no for the key
No anti-rollback MCUboot security counter No, if the bootloader cannot be updated remotely
Bootloader writable by the application Write protection, immutable first stage Partly, depending on the MCU
JTAG/SWD port open Lock at end of line Sometimes, depending on the MCU; otherwise at the workshop
Keys in internal flash Hardware key storage or secure element No, new board revision

This matrix is why we prefer an imperfect but measured fleet to one that is merely assumed secure. A defect that is accepted, written down, with its reason and review date, is a managed defect. The same defect ignored becomes a vulnerability to report within 24 hours on the day someone exploits it.

SBOM, CVEs and the security register

A Software Bill of Materials (SBOM) is the inventory of the software components inside a firmware image: RTOS, libraries, network stacks and their versions. The CRA makes it the basis of vulnerability handling, because nobody can report or fix a flaw in a component they do not know is there.

In our practice the SBOM is not an end-of-project deliverable. It is generated on every build in SPDX format, fed to a vulnerability scanner such as Grype, and the pipeline fails on any high-severity finding. A scheduled scan also runs with no commit at all, because new CVEs appear against code that has not changed. The SBOMs are archived per release, so the question "which units carry this library?" has an answer.

Filtering and prioritising vulnerabilities

The second filter is often forgotten: matching the RTOS security advisories against what is actually compiled into the image. A flaw in a driver absent from the binary does not carry the same priority as a flaw in the radio stack in use. We add static analysis (cppcheck in continuous integration) and, for embedded CI/CD pipelines, one simple rule: deployment only happens if the full test suite passes.

As Thierry Durand, embedded cybersecurity expert at Embedded Expertise, points out, a CVE scan (Grype, Trivy) is only the first step: the real work is piloting remediation, meaning triage, prioritisation by operational context, tracking of fix status and a justification for every exclusion. In his experience an embedded project can surface more than 3000 CVEs from an SBOM scan; without prioritisation the report is unusable.

The security register

Hence the security register: one line per defect, with its severity, status and decision. On our latest fleet project, the register holds more lines on the server and MQTT broker side than on the firmware side. Fleet security does not stop at the sensor.

Defense in depth: layers and threats neutralised Six layers stacked from silicon to cloud, each one neutralising a class of threats: silicon vs key extraction, boot vs tampered firmware, OS vs privilege escalation, transport vs interception, application vs replay, cloud vs account theft. Defense in depth, layer by layer 1. Silicon Secure element, JTAG fuse, RoT blocks: flash extraction, hardware clone 2. Secure boot ECDSA signature, anti-rollback blocks: tampered firmware, downgrade 3. OS / RTOS MPU, task isolation, MCUboot blocks: escalation, memory overflow 4. Transport TLS 1.3, DTLS, mTLS X.509 blocks: MITM, passive sniffing, replay 5. Application HMAC, counter, nonce blocks: spoofing, command injection 6. Cloud / SOC RBAC, immutable logs, SIEM blocks: account theft, silent exfiltration Aligned with IEC 62443-4-2, ETSI EN 303 645 and NIST SP 800-207 (Zero Trust).
Figure 4. Defense in depth: each layer, from silicon to server, neutralises one class of threats, so a compromise does not propagate to the next.

Field report: a fleet of battery-powered BLE sensors

A field report sums up what a real project taught us that the documentation did not say. This one covers a fleet of battery-powered BLE sensors whose readings travel through third-party gateways and phones to a server, with MCUboot-signed OTA updates.

On that recent project our methodology followed three steps. First, a written threat model that puts the attacker at the gateway and drops confidentiality from the requirements: that choice avoided a full encryption protocol and kept the effort on authentication. Second, a radio simulation of the fleet that replays failure scenarios (reboot, OTA, corrupted memory) before the bench. Third, a security register reviewed at every release, covering firmware, bench tools, broker and server alike.

What we observed

Contrary to the common assumption that cryptography is the hard part, we observed that the serious defects sat at the boundaries: a counter that did not survive memory corruption, a bootloader setting impossible to fix remotely, a bench tool that disabled broker TLS verification by default. None of them came from a bad algorithm.

Despite the pressure to switch every control on at once, we recommend the staged arming described above, plus an end-of-line rule: no unit leaves without provisioned keys, a locked debug port and active anti-rollback. Whatever the fleet cannot fix by itself must be settled before it leaves the workshop.

Free 30-minute design security review

We review the security architecture of your sensor or fleet, on the hardware and firmware side:

  • Key storage: secure element or MCU hardware key storage
  • Secure boot, OTA signing and anti-rollback
  • Debug ports and end-of-line procedure
  • SBOM and vulnerability tracking

Request a design security review

Checklist: making an existing fleet CRA-ready

A fleet compliance checklist gathers the checks that let you answer the three CRA questions on the day of an incident: which products are affected, what software they contain, and how to fix them. It runs in order, from inventory to arming, and each step depends on the one before it.

Each step produces evidence you can reuse in the CRA technical file: a dated inventory, a signed-off threat model, SBOMs archived per release, scan reports, a register of decisions. Unlike a one-off certification, that evidence updates with every firmware release. We recommend producing it from the pipeline rather than by hand, so it is still true on the day an incident forces a 24-hour report.

  • Inventory the fleet: firmware and bootloader version of every sensor, reported automatically.
  • Write the threat model: who is untrusted (gateway, phone, network), and which properties are required.
  • Generate an SBOM on every build and schedule a vulnerability scan even without new commits.
  • Authenticate every message end to end, with a persistent counter that fails closed.
  • Check the OTA chain: signature, anti-rollback, bootloader write protection.
  • Lock JTAG/SWD on every unit leaving production.
  • Arm in stages: observe unsigned traffic, then refuse it once it drops to zero.
  • Keep a security register and a 24-hour reporting procedure.

The detailed, printable version is our Cyber Resilience Act checklist. For a radio product, add the CE/RED certification checklist, and for the battery life of these sensors, our guide to embedded power management.

Bottom line

Industrial IoT cybersecurity for a deployed fleet does not hinge on choosing an algorithm, but on what the fleet can fix by itself. A sensor in the field can only change what its current firmware and bootloader allow; everything else costs a workshop visit. The CRA adds a concrete deadline: knowing, at any time, what software runs on each unit and how to fix it. In our practice a fleet is secured through written decisions and measured stages, not through a list of technologies. Every decision has an owner, a date and evidence.

Five takeaways, from the regulation down to the build pipeline, for a fleet already in the field:

  • The CRA already applies: 24-hour reporting since 11 September 2026, products already sold included.
  • The gateway is an adversary: authenticate end to end, not on the radio link.
  • The counter matters as much as the key: a lost counter must fail closed.
  • Decide the bootloader before the first unit: anti-rollback and write protection cannot always be retrofitted.
  • SBOM, scheduled scans and a register turn a list of CVEs into tracked decisions.

IEC 62443-4-2, ETSI EN 303 645 and the OWASP IoT Top 10 provide the method; the work is wiring it into the product and the pipeline.

Why choose AESTECHNO?

  • 10+ years of expertise in electronic design and embedded systems
  • 100% success rate on CE/FCC certifications
  • 65 projects delivered since 2022
  • French design house based in Montpellier

Written by Hugues Orgitello, electronics design engineer and founder of AESTECHNO. LinkedIn profile.

Related articles

FAQ: industrial IoT cybersecurity

Does the CRA apply to sensors already sold?
Yes, for reporting. Article 14 of the Cyber Resilience Act, which requires reporting actively exploited vulnerabilities and severe incidents, has applied since 11 September 2026 to all products in scope, including those placed on the market before that date. The Annex I essential requirements only apply to products placed on the market from 11 December 2027, or substantially modified. A plain security update is not a substantial modification.

Should an industrial sensor's Bluetooth link be encrypted?
Not necessarily. If readings travel through third-party gateways or phones, the presumed attacker is the peer of the radio link, and link encryption does not protect against it. Just Works pairing authenticates nobody. It is better to authenticate every message end to end, between sensor and server, with an HMAC and a counter. Encryption remains useful if the data itself is confidential, which the threat model should decide explicitly.

Is a truncated HMAC secure enough?
Yes, provided the truncation is sized to the threat and paired with a counter. An HMAC truncated to a few bytes leaves only a tiny chance of guessing a valid code for a given message, and the server can limit attempts per sensor. The monotonic counter included in the computation prevents replaying a message already seen. Truncation is a standard trade-off when the payload of a radio frame is tight.

Can anti-rollback be added with an OTA update?
It depends on the bootloader. With MCUboot, protection against downgrading to an older version relies on a security counter checked by the bootloader itself. If the bootloader cannot be updated remotely, sensors flashed before that option was enabled stay unprotected until their next workshop visit. That is why we recommend deciding on anti-rollback and bootloader write protection before the first unit ships.

Secure element or the microcontroller's key storage?
Both protect the private key from direct readout. A secure element such as the ATECC608B, SE050 or OPTIGA Trust M adds a dedicated chip resistant to physical attacks, useful when the MCU has no protected storage. Recent microcontrollers include non-exportable key storage that is often enough. The deciding criterion stays the same: the private key must never leave the chip, and the debug port must be locked in production.

Where do you start securing an existing fleet?
Start with the inventory: which firmware and bootloader version runs on each sensor, and which software components each image contains, thanks to an SBOM. Then write the threat model, and sort every defect by whether it can be fixed over the air, at the workshop, or only at the next board revision. Finally, deploy controls in observation mode before making them blocking. Our Cyber Resilience Act checklist follows that order.