// POST_QUANTUM · RISC_V · MEASURED_BOOT

FORTIS

Measured boot. Zero trust. A bare-metal RISC-V chain-of-trust with real SHA-256 and ML-KEM-768 post-quantum crypto — firmware measures itself, an external verifier confirms, on QEMU virt.

RUST RISC-V ML-KEM-768 (FIPS 203) SHA-256 (FIPS 180-4) <64 KiB CODE QEMU-VIRT

CHAIN_OF_TRUST

SHA-256sha2 crate — real FIPS 180-4 hashing, not a placeholder
ML-KEM-768ml-kem crate — FIPS 203 post-quantum key encapsulation
MMIO UARTns16550a driver on QEMU virt 0x10000000
Measured bootSHA-256 PCR registers over real binary sections
3-stage bootfirmware → measurement → attestation report
External root of trustverifier reads ELF, computes expected PCR, compares — trusts nothing self-reported

HOW IT WORKS

1. # firmware measures its own .text/.rodata via linker-provided addresses 2. # verifier (scripts/verify) computes expected PCR from the actual ELF bytes 3. # runs firmware in QEMU, parses printed PCRs, compares against expected $ cargo build --release --target riscv64gc-unknown-none-elf $ python3 scripts/verify/run --elf target/.../fortis.elf

ROUTES