Skip to content

feat: attestation-bootstrapped JWT-SVID issuance — bootstrap ref + in-workload redemption + Modal/Cloudflare verifiers #308

Description

@rsharath

Summary

Attestation-bootstrapped JWT-SVID issuance for sandboxes (and any workload with provider-native identity evidence): a one-time bootstrap reference issued at registration, redeemed from inside the workload with provider evidence + an in-workload DPoP key, yielding a short-lived JWT-SVID whose trust tier is decided by the evidence class. This is ODIS-L1-11 (attestation-bootstrapped trust) as a single generic door — platform evidence today, hardware evidence (#61) later, same endpoint.

Driving consumer: highflame-forge per-sandbox identity (see the forge companion issue). Today forge's mint injects a zid_sk_ API key as a plaintext env var — a bearer secret with authority, delivered over the channel forge's own credentials.py guard exists to prohibit.

Flow

  1. Register (control plane): the trusted broker (forge) registers the agent as today but receives a bootstrap ref instead of an API key — single-use, ≤2 min TTL, no intrinsic authority (grants only the right to attempt redemption). Registration carries expected-evidence constraints (provider, workspace/app, instance binding claims).
  2. Redeem (in-workload): POST /v1/attest/redeem with {bootstrap_ref, provider_evidence, DPoP proof}. ZeroID consumes the ref (single-use — reuse the WIMSE nonce machinery), dispatches to the matching attestation verifier, cross-checks evidence claims against the registration's expectations (e.g. Modal container_id binds this instance), assigns trust tier from evidence class, and issues the JWT-SVID.
  3. Renew: same DPoP key, registration-active check (ODIS-L2-14); full re-attestation only on confirmed compromise signals (ODIS-L1-12). Revocation unchanged: registration delete / CAE cascade / TTL backstop.

Work items

Non-goals

Related

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions