Sovereignty proof against Garage: complete the PQ verification before v0.6 #110
Labels
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Cordy/Cairn#110
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Nikola flipped the dogfood (.249) to post-quantum (#28, v0.3.29) on 2026-08-04 using the migration guide. Steps 1–6 succeeded (hybrid recovery key generated, secret edited, pod restarted clean, old files open, Keycloak attribute shows the two-value upgrade). Step 7 — the Garage sovereignty proof — was not completed:
awsis not installed on the Mac (zsh: command not found: aws).This issue: run the fixed step 7 below during v0.5 and record the result here. Gate: must be green before v0.6 (public launch claims "recovery via plain
age -d" — we don't launch on an unproven claim).Fixed sovereignty proof (step 7, two tool options)
Credentials: the Garage access key/secret for the
cairn-encbucket, from the password manager.cairn-pq-recovery.txt= the hybrid recovery key from step 1 (re-export from the password manager if deleted).Option A — rclone (already installed for the sync setup; preferred)
(If the inline connection string is unwieldy:
rclone configa remote namedgaragewith provider Other, the endpoint, regiongarage, and the keys — thenrclone lsl garage:cairn-enc/rclone copyto garage:cairn-enc/<path> /tmp/blob.age.)Option B — AWS CLI
The actual proof (identical for both options)
Record in this issue: which option was used, the four check results, and the first header line of the PQ object.
Follow-up for the handbook (#109):
docs/handbook/encryption.md's migration checklist should name concrete tools for the raw-object pull (rclone example + awscli install hint) instead of assuming an S3 CLI exists — small docs edit, fold it into the next docs pass.Triage: tandem (verification you sign off). Complete the post-quantum sovereignty proof against the Garage backend — confirm PQ (hybrid ML-KEM) identities encrypt/recover end-to-end on the real bucket. Pairs with #108 (instanceSeed domain separation). I can script the checks; you validate the result.
Correction: this is not gated on or blocked by #108. My earlier "pairs with #108" was loose grouping (both touch post-quantum) and misleading. The two are independent:
age -d— it needs only a PQ instance, its hybridrecoveryIdentity, and an S3 client. Nothing else.instanceSeeddomain separation fordeploymentcustody in the PQ case (parked-by-design: age has no from-seed hybrid constructor) — an unrelated key-derivation concern that never touches the recovery path.Proceed here independently. Steps 3–4 (classical key must fail; old pre-PQ object still opens with the classical key) apply only because the
cairn-encdogfood was migrated to PQ — they have no meaning on a born-PQ instance.Green — sovereignty proof complete. Ran against the
cairn-encGarage bucket via rclone.mlkem768x25519(no plain X25519) — genuinely post-quantum.age -d -i <hybrid-key> blob.age, no Cairn involved — the uploaded content comes back.age: error: no identity matched any of the recipients.The launch claim — recovery via plain
age -don a real post-quantum object — holds on the real backend. Closing.Handbook follow-ups: the raw-object pull in
encryption.mdalready names concrete tools (rclone + awscli install hint), and the classical→post-quantum live-migration path is now framed for self-deploying customers in the same doc's Post-quantum section.