Security & Boot

eBootloader secure boot: a measured-launch walkthrough

An end-to-end tour of eBoot's chain of trust — root-of-trust keys, immutable stage 0, signed manifests, anti-rollback counters, and the runtime attestation hooks EAI consumes during model load.

Chain of trust

eBootloader's chain of trust starts before any code runs. The root-of-trust public key is fused into one-time-programmable (OTP) memory at provisioning. Stage 0 — a 4 KB immutable bootrom — verifies the next stage's signature against that key before transferring control.

Stage progression

  1. Stage 0 (4 KB, OTP): verifies stage 1 signature. Anti-rollback counter is incremented in OTP.
  2. Stage 1 (32 KB, signed): verifies signed manifest, sets up MMU, loads stage 2 from primary or fallback partition.
  3. Stage 2 (eOS RTOS image, signed manifest): verifies all loaded modules against the manifest before scheduling user code.
  4. Runtime attestation: EAI calls eboot_attest() at model load to assert the live image hash matches what was booted.

Anti-rollback counters

Each signed manifest carries a monotonic counter. The OTP-backed comparator refuses to load any image with a counter lower than the high-water mark. This is the only defense against a signed-but-vulnerable older image being re-flashed by an attacker who controls the storage bus.

// eBoot anti-rollback (stage 0 pseudocode)
hwm = otp_read_u32(OTP_HWM_OFFSET);
if (manifest.counter < hwm) {
    panic("anti-rollback violation");
}
if (manifest.counter > hwm) {
    otp_write_u32(OTP_HWM_OFFSET, manifest.counter);
}

Runtime attestation

Once stage 2 is running, downstream subsystems can request a measurement of the boot chain via eboot_attest(). The returned blob is signed by a key derived from the device root, suitable for forwarding to a remote verifier. EAI uses this before unsealing model weights — we describe the integration in our EAI release post.

Non-goals

eBoot is not a TEE. There is no parallel secure-world execution context. If your threat model includes a kernel-level adversary running concurrently with secure code, you want EoS-S, not eBoot.

Read next

Storage media — encryption at rest
Security & Boot

eDB ships AES-XTS at-rest encryption — even on 64 KB devices

eDB's new storage layer adds page-level AES-XTS encryption with hardware-key offload on supported MCUs. The catch: it had to fit in 6 KB of code on the smallest target. Here's how.

Embedded systems engineering — platform
Apps & Platforms

eos-platform 1.0 lands: one toolchain, every EoS profile

After eighteen months of incremental releases, the eos-platform meta-distribution reaches 1.0 with stable APIs, a unified package manifest, and reproducible builds across all 14 EoS components.

AI / LLM data visualisation
Embedded AI

EAI 0.9 ships INT4 LLM runtime — 11 tok/s on a Cortex-M85

EAI's new quantized inference path squeezes a 1.3B-parameter model into 312 MB of flash and runs at interactive speed on a 480 MHz microcontroller. We dig into the kernel scheduler that made it possible.