← Lexenne
Deep-dive · v0.5 draft · 2026
SLF Deep-Dive · 07 / Recovery

Key recovery and the
Sovereign Personal Agent.

The cryptography is the easy part. The hard part is whether real users can survive losing their device without losing their identity.

Pressure-test this draft Sovereign-agent designs that gloss over recovery are not serious. This page surfaces what the Phase 1 prototype validates, where the cryptographic primitives end, and where the human-factors work that has to come next still sits unsolved. If a claim is overstated, especially around "Phase 1 proves it works for real users", flag it.

The impartial-evaluation pass on the SLF architecture used a sharp framing: "Key recovery alone gates Phase 3. Saying 'the protocol enables sovereignty' without recovery is like saying 'the car works' without brakes, the missing piece is what determines whether the system is usable." That framing is correct. The Phase 1 prototype proves the cryptographic mechanics of recovery work. It does not prove anything about real-user UX, social-engineering resistance, or recovery-from-recovery. The page below treats those as separable.

Why key recovery is uniquely hard

A · Problem

Recovery is not one operation. The Sovereign Personal Agent must survive at least eight separable scenarios: lost device, stolen device, device damaged beyond reach, total loss of every backup, coercion, incapacitation, death, court order, provider failure (your cloud account is closed), and compromise. Each has its own threat model and its own UX flow. Most prior wallets pick one and pretend the others don't exist.

Three industry signals shape the design space. Apple iCloud Keychain leans on SMS + security code + hardware-enforced guess limits, serviceable for consumers but coupled to a single hyperscaler. Google Password Manager requires sign-in + screen-lock PIN from another device, same coupling. The most consequential signal comes from Argent: after years building social recovery (guardian friends-and-family hold shares) for a leading crypto wallet, in February 2025 it added cloud-encrypted recovery with a 48-hour cooldown as an opt-in alternative (under its "Ready" rebrand), rather than relying on guardians alone. The shift is a strong production signal: pure social recovery carried too much friction to stand as the only mainstream path.

The tension at the heart of the design is structural. Sovereignty demands "no single operator can deny recovery." Usability demands "recovery must work for people who don't understand cryptography." Regulators (eIDAS 2 and the EU Digital Identity Wallet framework) demand "credential re-issuance, not key copying." A scheme that satisfies any two of those three is easy. A scheme that satisfies all three is the hard part, and the part Phase 1 is taking a first run at.

FROST 2-of-3 as the cryptographic primitive

B · Threshold signing

FROST is the RFC 9591 threshold-signature scheme for Schnorr / Ed25519. Two of three shares can produce a valid signature without ever reconstructing the full signing key in process memory. The construction dates to 2020 (Komlo and Goldberg), and the Zcash Foundation's Rust implementation has been independently audited (NCC Group, 2023). The choice is grounded in constraints: FROST is the one threshold scheme that is mature, audited, and satisfies the requirement that the full key is never assembled, not even transiently.

The default consumer configuration uses three share locations: a device share held in Secure Enclave behind biometric, a cloud share wrapped by the user's cloud-provider account (Apple iCloud Keychain HSM cluster or equivalent), and a printable 28-character recovery-code share the user keeps offline. Any two reconstruct enough signing capability to recover; one alone returns Err(InsufficientSigners) cleanly. Shares zeroize on drop. The full key never exists.

Three trade-offs against alternatives are worth naming directly:

Tension · the deferred problem

"FROST 2-of-3 eliminates the seed-phrase problem."

It changes the seed-phrase problem from memorization to availability. If a user loses the recovery-code share (the offline printable one), they're back to needing the cloud provider; if they distrust the cloud provider, they need a threshold-network provider (TACo, Lit PKP); at which point the question becomes whether that's materially better than a 24-word seed in a safe-deposit box. The win is the regulatory one (no reconstruction). The UX win is conditional on which factor goes missing.

The lifecycle state machine

C · States & cooldowns

Recovery runs as a state machine with cooldowns, vetoes, and a probation period after it completes. Six states and the transitions between them:

Cancellation paths exist from Cooldown back to Onboarded. The old device, a recovery contact, or a configured guardian can each abort the recovery. Cancellation itself emits a receipt, which is the audit substance the regulator or user inspects later. Emergency rotation (the user discovers compromise) skips cooldown by user choice, but skipping cooldown is itself recorded, with the user's explicit override evidence.

The receipt chain as recovery substrate

D · Audit spine

Every state transition emits a signed Receipt SLF (see the receipts deep-dive for the broader semantics). The design names eleven recovery-specific receipt kinds: recovery_initiation, recovery_factor_assertion, recovery_cooldown_start, recovery_cooldown_cancel, recovery_probation_clear, wallet_unit_rebind, credential_reissuance_request, credential_reissuance_complete, inheritance_trigger, proxy_designation, and court_order_disclosure. Each carries a prev_hash linking to its predecessor; the entire recovery lifecycle replays as a verifiable chain.

The integrity property is the same as for ordinary receipts: a verifier starting from scratch, with no shared state, can replay the chain and confirm (a) every receipt is cryptographically signed, (b) every prev_hash matches its predecessor, and (c) the state sequence is valid, the chain cannot jump from Cooldown directly to Live without passing through Probation.

This is what makes recovery auditable. Regulators inspecting whether a user's identity was recovered correctly can ask for the chain, walk from genesis through the rebind, and verify that the cooldown was honored, the probation cleared, the cancellation paths were available. The protocol's argument under GDPR Article 25 and eIDAS 2 transparency requirements is that the chain provides exactly the structured evidence those regimes ask for, first-class testable artifacts rather than implementation-specific logs.

What the Phase 1 prototype validates

E · Scope

The Phase 1 prototype is a Rust CLI workspace (spa-recovery), published at github.com/andrewcrenshaw/SPA. Its three load-bearing validations:

  1. FROST 2-of-3 works as designed. Two-of-three signing succeeds. One-of-three fails with Err(InsufficientSigners). Partial signatures from mismatched commitments fail cleanly. All in pure Rust with in-memory shares; no network calls; no cloud integration.
  2. The lifecycle state machine is coherent. Onboarded → Daily Use → Recovery Initiated → Cooldown → Probation → Live, with cancellation paths at every state. The clock is injectable, so 48-hour cooldowns are tested without 48-hour waits.
  3. Receipt chains verify end-to-end. Generate a chain through the full recovery lifecycle. Replay it on a fresh verifier with no shared state. Confirm every link.

Out of scope, deferred to Phase 2 or beyond: iOS Secure Enclave integration, Android StrongBox, real Apple iCloud Keychain backends, real Google cloud-account binding, zero-knowledge proofs of backup correctness, UX testing with non-cryptographer users, and any kind of social-guardian onboarding workflow. Shares in Phase 1 are encrypted files under ~/.spa-recovery/ with AES-256-GCM and stub labels ("device-stub", "cloud-stub", "recovery-code-stub"), not production key sources.

Effort: roughly 1.5–2.5 weeks of work for one engineer comfortable with threshold cryptography. What this proves: the algorithmic and state-machine mechanics are correct, and the protocol does not have fundamental flaws at those layers. What it does not prove is whether real users can execute a recovery, whether family members can be relied on to hold a share, or whether cloud-provider account recovery is as smooth in practice as the Secure Enclave path is in spec.

Tension · what the prototype proves

"Phase 1 proves recovery works."

Phase 1 proves cryptographic correctness of the mechanics. Proving real-user viability requires (a) UX testing with six to ten non-cryptographer users, (b) deployment against real cloud-provider account flows, and (c) six to twelve months of production telemetry on actual recovery events. None of those exists yet, and Phase 1 deliberately does not attempt them. Phase 1 proves the foundation. Phase 2 is whether the foundation supports a building.

The hard UX problems Phase 1 does not solve

F · Human factors

The cryptography is the easy part. Five hard problems remain unsolved, and Phase 1 makes no claim to address any of them.

Social-recovery participant onboarding. If a recovery contact is part of the configuration, what does "accept this share" mean in practice? Email plus QR code? In-person handoff? The Apple Legacy Contact pattern points at the underlying risk: a meaningful share of users who enroll a recovery contact lose track of it over time. The recovery contact may die, may lose the share, may not understand what the share is for when asked. The design names the pattern (one optional contact who knows the user but not the secret). The operational discipline around onboarding is for Phase 2.

Family-member attack resistance. The recovery contact may be a sibling. After a family dispute, what stops the sibling from initiating a false recovery? The 48-hour cooldown provides a veto window, but only if the user is monitoring email. Travel and incapacitation are common; sophisticated social-engineering attacks against family recovery contacts are a known class. Cryptography cannot prevent this; it can only make detection deterministic after the fact.

Device-loss vs. device-compromise discrimination. If a phone is lost in a taxi, the user wants smooth recovery. If a phone is stolen by a nation-state adversary with the user's pin code, the user wants instant key rotation with no cooldown. The protocol cannot ask the user "which one happened?" because the UX is the same at the moment of loss. The architecture's response is to make the user choose the tier at enrollment, default consumer, threshold-network protected, or institutional-guardian protected. That is a high-stakes UX decision the user makes before the threat materializes, with imperfect information.

Recovery from recovery. If a user recovers their wallet because the old device is gone, then months later finds the old device intact with the old key still active, what happens? Can an attacker who acquires that old device still sign with the now-stale key? The design points at proactive secret-sharing key rotation, but the user-side UX of "you need to rotate again, here is why" is unspecified.

Post-compromise credential trust. When a user rotates keys after compromise, the credentials issued under the old key still exist with old issuers. EUDIW's Migration Object pattern says each issuer re-issues against the new key. But this depends on every issuer cooperating, and there is no protocol-level enforcement.

Tension · the unrecoverable enrollment-time decision

"The three-tier model lets users choose the right protection for their threat."

Users must choose the tier at enrollment, before they know how their device will be lost. A default-consumer user who later faces a state-actor adversary is exposed; a Tier 1 user who simply loses their phone in a cab endured unnecessary friction. The choice is made under imperfect information, and switching tiers later is itself a recovery-class event. The tradeoff is unavoidable, and it is hard.

Tension · cross-jurisdictional shares

"Holding shares in multiple jurisdictions improves resilience."

It also creates a subpoena surface. If one FROST share lives with a US-based threshold-network provider, one with an EU-based provider, and one in a Singapore safe-deposit box, a US subpoena against the US share-holder may legally compel disclosure of recovery material. The protocol's response, that shares are encrypted and never reconstruct, is technically true but does not eliminate the legal exposure of the share-holder. Cross-jurisdictional design improves cryptographic resilience and increases legal complexity; both hold.

What this page does not claim

G · Overclaims to avoid

If you are reading this with a security-research, identity-architecture, or sovereign-personal-data lens and a counter-claim is missing, an attack class is underplayed, or a mitigation reads stronger than it should, that is the feedback the draft needs. Contact details are in the header above.

← All SPA / SLF deep-dives