Skip to content

Certification readiness: FIDO Functional Certification and GovRAMP #155

Description

@Bccorb

Tracking issue for the work identified in
docs/public-sector/CERTIFICATION-READINESS.md,
which analyses what this API and the SDKs need in order to be credible for local
government work and to earn two credentials:

  • FIDO Functional Certification (server). The applicable program for a server
    and relying party. Authenticator Certification levels (L1 to L3+) apply only to
    authenticator hardware and are not in scope here.
  • GovRAMP. Membership plus a Single Security Snapshot first, Core Verification
    later. Note the program rebranded from StateRAMP in 2025.

Freeze status

Work in this repository is frozen except for four categories. Every child issue
states which one authorizes it:

  1. Bugs found during a real migration
  2. Gaps identified by the GovRAMP Security Snapshot
  3. FIDO conformance self-validation fixes
  4. The specific thing a signed customer requires to go live

Sessions 1 and 2 are mostly a fifth thing that already falls under 1 and 4: places
where the website and the migration runbook promise behaviour the code does not
implement. Session 7 is deliberately gated behind actually purchasing the Snapshot,
so remediation follows evidence rather than guesswork.

Sessions, in order

Each session is intended to be a self-contained working session.

Session 1: what the collateral promises but the code does not do

Highest priority. Each of these is a gap between what is being sold and what ships.

#156 is the single highest value item in this plan. One hardcoded value blocks every
hardware security key scenario in Appendix B of the migration runbook. It shipped in
#180; #182 and #183 are the deployment-default and SDK halves split out of it, both
of which cross a repository boundary.

Session 2: audit trail correctness

#159 and #161 both migrate the same table and are best done together.

Session 3: CI, supply chain and scanning

Independent of the application code, so it can run in parallel with anything else.

Session 4: WebAuthn correctness and FIDO prerequisites

#165 is a prerequisite for Session 5.

Session 5: FIDO attestation and metadata

#170 resolves the synced passkey open decision the public sector README flags. It is
currently unimplemented, so the website text should be corrected until it ships.

Session 6: FIDO conformance

Do not start the 90 day interoperability clock until Sessions 4 and 5 have landed.
Register for tool access early so the tools can be run iteratively.

Session 7: GovRAMP remediation, gated on buying the Snapshot

Buy membership plus a Single Security Snapshot first, roughly $1,500, and assemble
the 40 control artifacts from docs/security-posture.md
and docs/production-operations.md before the intake
meeting. What the Snapshot actually finds supersedes this list.

Not doing yet

  • FIPS validated cryptography. Expensive, and only needed if CJIS is pursued
  • SOC 2. Does not fit the budget alongside GovRAMP
  • Ready or Authorized GovRAMP status. Both need a sponsoring government

Open decisions this work cannot resolve

Carried from Appendix C of the migration runbook and Part G of the analysis:

  1. Attestation posture, and whether to require it by default
  2. Audit failure posture: fail closed or fail open with alerting
  3. CJIS position. The honest answer from the code today is not yet
  4. Audit retention default, which needs a Maryland records retention schedule read
  5. Data residency

Related

Two findings are tracked privately as security advisories rather than public issues,
per SECURITY.md. They are referenced above without detail.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Highest: FIDO2 certification trackenhancementNew feature or requestfido2FIDO Functional Certification track, see #155govrampGovRAMP readiness track, see #155

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions