Skip to content

Proposal/questions: embedded secure-boot crypto for sigil on-target verify (thumbv7em, no_std) #164

Description

@avrabe

Cross-repo proposal from sigil for the gale/gust on-target secure-boot path (sigil#187, kiln#421 ← kiln#415/AD-WCMC-001). The chain is:

meld → scry (sound bounds) → kiln.resource_limits → sigil signs
     → embedded verify (no_std, offline, key-based) → reject-at-load → run

sigil provides a no_std thumbv7em-none-eabi verify staticlib. Verification is key-based (embedded public keys; keyless needs a network and is impossible offline). Since gale owns the OS/BSP and possibly HW crypto, three questions/asks:

1. HW-accelerated Ed25519 verify?

Does the gale BSP expose a crypto accelerator for Ed25519 verify (public-key only — no secret material)? If so, we'd bind it through sigil's existing wsc:crypto interface, extended with a hardware-verify counterpart to the current handle-based hardware-signing (security-levels software→hardware-certified). If not, no blocker — software ed25519-compact verify is correctness-complete (verify needs only public keys); HW is a speed/assurance upgrade (Cortex-M asymmetric verify is costly), never a correctness dependency. Design principle: HW where possible, SW fallback.

2. Trust-anchor (public-key) provisioning

Where do the embedded verification public keys live on a gale/gust target — a provisioned key region / secure storage? The verifier needs the trust anchor available at load time. What's the provisioning/rotation story?

3. no_std / BSP surface

What no_std environment does the thumbv7em staticlib link against — is a global allocator present (we need alloc)? Any core/alloc constraints, panic strategy (panic=abort?), or ABI expectations for the sigil↔gale boundary?

Context

This is a secure-boot path: the on-target verify is the boot-admission gate, so verifier soundness is the whole point. sigil's HW-crypto proposal is the wsc:crypto hardware-signing WIT (wit/deps/wsc-crypto/crypto.wit in sigil) — the natural place to add HW verify. sigil-side plan/rivet in sigil#187 + docs/embedded/on-target-trust-chain.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions