Skip to content

Add FIPS-ready RSA-PSS manifest verification#3

Merged
mdheller merged 9 commits intomainfrom
work/signature-verification
Apr 26, 2026
Merged

Add FIPS-ready RSA-PSS manifest verification#3
mdheller merged 9 commits intomainfrom
work/signature-verification

Conversation

@mdheller
Copy link
Copy Markdown
Member

@mdheller mdheller commented Apr 26, 2026

Summary

Refines nlboot boot-manifest validation into a FIPS-ready RSA-PSS/SHA-256 profile.

This PR does not claim FIPS 140-3 certification by itself. FIPS compliance depends on deployment with a validated cryptographic module/runtime. This PR enforces protocol-level requirements needed for that posture:

  • signature_algorithm = rsa-pss-sha256
  • crypto_profile = fips-140-3-compatible
  • trusted RSA public-key input for CLI verification
  • RSA-PSS/SHA-256 signature verification before plan construction
  • safe boot plans remain execute=false

Key Changes

  • Adds verification helpers for trusted RSA keys and canonical manifest payloads.
  • Requires FIPS-ready manifest metadata in SignedBootManifest.
  • Adds trusted-key fixture and signed recovery manifest example.
  • Updates CLI smoke to use --trusted-keys and --require-fips.
  • Updates validation to install cryptography.
  • Updates tests for required manifest fields and FIPS-ready rejection paths.

Software Review

Correctness: closes the previous signature-shape gap. nlboot now verifies a recovery manifest against a trusted RSA key before producing a boot plan.

Risk: moderate. Adds cryptographic dependency and stricter manifest requirements. It remains side-effect-free: no artifact fetch, disk mutation, or host execution.

Weakness: this is FIPS-ready protocol enforcement, not a certification assertion. Runtime/module validation remains a deployment requirement.

@mdheller mdheller changed the title Enhance FIPS-ready Manifest Verification and RSA-PSS Integration Add FIPS-ready RSA-PSS manifest verification Apr 26, 2026
@mdheller mdheller merged commit 9671a3d into main Apr 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant