DFIM — Deterministic Firmware Integrity Matrix

IEC 62443 firmware integrity enforcement suite

View the Project on GitHub Ahmadsi70/DFIM

DFIMBOOT v2

DFIMBOOT v2 authenticates sidecar metadata before Merkle validation. Production UEFI builds reject DFIMBOOT v1.

Canonical signed layout

All integers are little-endian. ECDSA uses P-256/SHA-256 and fixed-width IEEE P1363 r || s.

The signature covers every byte before the trailing signature. Parsing rejects non-canonical trailing data, unknown algorithms, incorrect key IDs, stale counters, malformed proofs, and legacy v1 input.

Rollback baseline

UEFI requires a DFIMMinRelease variable under vendor GUID 3f33c545-c9a7-4b1d-89ee-76f1472dfb49. The variable must be non-volatile, boot-service accessible, and use TIME_BASED_AUTHENTICATED_WRITE_ACCESS; missing or weaker attributes halt boot.

Its 36-byte data payload is DFIMROLL || version:u32 || minimum_release:u64 || key_id:[u8;16]. The effective floor is:

\[\operatorname{floor}_{effective}=\max(\operatorname{floor}_{compiled}, \operatorname{floor}_{authenticated\ UEFI})\]

Generate the data payload with dfim-provisioner rollback-payload. Platform PK/KEK tooling must wrap and sign it as EFI_VARIABLE_AUTHENTICATION_2; the private platform key must never be placed on the boot target.

Build and provisioning

RustCrypto verifies the protocol but is not itself evidence of FIPS 140-3 module validation.