Overview
This document specifies the Key Healing protocol - a system-initiated mechanism that detects degraded share sets and restores absent ORKs' Shamir shares from encrypted mimDB backups, without reconstructing the key, without user involvement, and without any awareness of what key type is being restored.
Key Healing is triggered opportunistically during normal API processing. When an ORK receives any key-related call, it compares its local state of key's-swarm participatis (as encapsulated in the digest) against the mimDB's authoritative digest (piggybacked on the call by the Secure Web Enclave). A mismatch initiates healing - the ORK queries the mimDB for its missing
SafeKeep records, decrypts them using pairwise ECDH, verifies Schnorr proofs and the Accountable Group Signature, and writes the recovered shares directly as committed state. The calling Secure Web Enclave (SWE) and user are unaware that healing occurred.The protocol operates entirely at the Authority Layer and demonstrates pure key-type agnosticism: the same
for m=1 to q loop heals CMK shares, PRISM shares, VVK shares, and CVK shares identically. No Agency Layer operation (MPC, signing, decryption) occurs. At no point does the complete key materialize.Loading diagram...
Preconditions
| Condition | Detail |
|---|---|
| SafeKeep records exist | Created during Protocol: Account Creation / KeyGen, Protocol: PRISM Password Change, or any key operation where the healing ORK was absent. Participating ORKs package the absent ORK's shares, encrypted under pairwise ECDH (), and write them to the mimDB during Commit. |
| mimDB state | Holds the authoritative key record (Participating ORKs digest , public key, swarm roster, Accountable Group Signature) and the signed SafeKeep packages for the absent ORK. |
| Healing ORK | Online, possesses its private key , but holds a stale local digest (). |
Protocol Flow
Phase 0: Digest Mismatch Detection (Trigger)
Loading diagram...
The SWE passes the key's
mDigest (obtained from the Home ORK's TWELVE-MAP response) alongside any normal API call. The ORK compares this against its locally stored digest to detect if its state is stale. No separate healing daemon or scheduled sync exists - detection is piggybacked on operational traffic.Phase 1: SafeKeep Retrieval from mimDB
Loading diagram...
The mimDB's short-circuit check (
M == CMKRecord.M) handles race conditions where the TWELVE-MAP digest was temporarily stale. If the ORK missed multiple operations, broken records are returned.Phase 2: SafeKeep Decryption and Share Integration
Loading diagram...
Direct-to-committed rationale: Unlike Account Creation (which uses an uncommitted → committed two-phase commit because the DKG outcome is uncertain), healing integrates data that has already passed through the full commit process on mimDB. The Accountable Group Signature and Schnorr proofs were verified by the mimDB at original-commit time and are re-verified by the healing ORK here.
PubAuth = "": The per-ORK verifier field (e.g., PRISMAuth_i for PRISM keys) is stored empty. The PRISM verifier depends on the password-PRISM product, which is only available during live authentication. It will be derived on the user's next BYOiD ceremony. This does not affect the share itself.Multi-record iteration: If , the healing ORK processes records sequentially, catching up through each missed operation in order.
Phase 3: Resume Normal Operation
Once all broken records are processed, the healing ORK's local state matches the mimDB's authoritative record. The ORK resumes the API call that originally triggered the digest mismatch. The SWE and user experience only a minor one-time latency increase.
Loading diagram...
Algorithms
Algorithm 1
Algorithm 2
Healing vs. Recovery: Architectural Distinction
Key Healing (this protocol) and Account Recovery (Protocol: Decentralized Account Recovery) both restore share state, but serve different actors through fundamentally different mechanisms:
Key Healing is system-initiated. It occurs when infrastructure (an ORK) identifies it lost its state due to outage. The ORK detects the drift via digest mismatch (where digest encapulates the exact state of the participating ORKs) and repairs its own share from encrypted backups awaiting at other ORKs. No user active involvement. The original swarm and threshold remain intact. Shares are the same ones pre-computed during the original ceremony.
Account Recovery is user-initiated. It occurs when a user loses their password or device. The user proves identity via secondary factors (e.g., cryptographic email loop). The protocol generates entirely new key shares and a new PRISM state - potentially assigning the user to a new ORK swarm - without assembling the key.
Healing repairs the network's operational state. Recovery reclaims the user's authoritative access.
Notation Reference
| Symbol | Description |
|---|---|
| Generator point on Curve25519 | |
| Scalar-point multiplication | |
| SHA-256 unless stated otherwise | |
| Diffie-Hellman: | |
| Key identifier (e.g., for a CMK) | |
| Healing ORK's long-term private key | |
| Healing ORK's long-term public key: | |
| Healing ORK's public identifier | |
| Public key of contributing ORK that created the SafeKeep record | |
| Pairwise ECDH shared secret: | |
| Current key's Accountable Group Signature digest of participating ORKS, as taken from the Home ORK's TWELVE-MAP response | |
| The healing ORK's locally stored digest | |
| Encrypted share ciphertext in a SafeKeep record | |
| Healing ORK's combined shard for key type | |
| Aggregated public key for key type | |
| , , | Contributing ORK 's public key, Schnorr nonce, and Schnorr signature for key type |
| , | Aggregate nonce and signature from the original Accountable Group Signature |
| Number of key types being healed (e.g., for CMK + PRISM) | |
| Number of broken records (missed key operations) | |
| Number of contributing ORKs in a SafeKeep record | |
| , | Swarm size (20), threshold (14) |
| Bitwise array of ORKs that participated in the original ceremony | |
| AES256 decryption of message with key |
Actors and Trust Assumptions
| Actor | Description | Trust Assumption |
|---|---|---|
| SWE | Client-side agent. Passes mDigest to ORKs during normal API calls. Not involved in healing orchestration - unaware healing is occurring. | Minimal role. Cannot influence the healing outcome. |
| Home ORK | Serves swarm roster and current key's digest via the TWELVE-MAP. | No elevated trust. A compromised Home ORK could provide a stale digest (delaying healing), but cannot compromise key material. |
| Healing ORK | The primary actor. Detects mismatch, queries mimDB, decrypts SafeKeep records, verifies integrity, writes committed state. | Must possess to decrypt SafeKeep records. Standard ORK trust. |
| Other ORKs | Stores key SafeKeep packages. Returns records to the healing ORK. Already verified Accountable Group Signatures and SafeKeep proofs at original-commit time. | Stores healing ORKs shards in unaccessible encrypted form. Standard ORK trust. |
| mimDB | Mimir Database - The Fabric's synced authoritative registry. Stores key records. | Append-only registry integrity. |
| TWELVE-MAP | Tide Wide Enumerated Ledger of Verifiable Entries - Mapping Authoritative Pointers is the self-verifying directory service on mimDB mapping key identifiers to ORK swarms. | Each entry includes a ZK proof attesting to its authenticity against the master registry. |
| Contributing ORKs (implicit) | Created SafeKeep records during the original ceremony. Not contacted during healing. | Integrity verified at original commit (mimDB signature check) and re-verified during healing (Schnorr proofs). |
Layer Traversal
| Layer | How Healing Engages It |
|---|---|
| Legitimacy | The triggering API call and TWELVE-MAP key lookup use standard Tide legitimacy mechanisms (ECDH session, Doken). |
| Authority | Primary layer. Healing restores Shamir shares - the Authority Layer's core responsibility. The loop processes all key types uniformly, maintaining key-type agnosticism. |
| Agency | Not engaged. Healing restores key existence, not key purpose. No MPC, signing, or decryption occurs. Agency operations resume after healing completes. |
| Settlement | Minimally engaged. No new vouchers required. The original ceremony was funded by the vendor; SafeKeep records exist because that ceremony was properly settled. |
Security Properties
| Property | Mechanism | Assumption |
|---|---|---|
| No key reconstruction | The ORK computes its own Shamir share (). The complete key is never assembled. | Threshold ( compromised) |
| Encryption at rest (SafeKeep) | Records encrypted via pairwise ECDH (). Only the intended ORK can decrypt. ORK's database stores ciphertext only. | ECDH + AES security |
| Fraud detection | Schnorr proof verification on each contributing ORK's public key contribution. Failure → dLog + SLA report + abort. | DLP hardness |
| Accountable Group Signature verification | Composite key record verified against the mimDB's endorsed Accountable Group Signature before adoption. | Registry integrity |
| Key-type agnosticism | The loop processes all key types uniformly. No metadata about key purpose is exposed. | Architectural design |
| Opportunistic, zero user latency | Triggered during normal API calls via piggybacked digest comparison. No separate daemon, scheduled task, or user action. | - |
| Multi-operation catch-up | broken records processed sequentially in a single healing pass. | - |
| Direct committed state | Data already validated via two-phase commit at original ceremony time. No uncommitted phase needed. | mimDB transaction finality |
| Audit trail | ChangePurpose = "RECOVER" distinguishes healed records from live-ceremony records. | Local DB integrity |
| Replay resistance | Digest comparison () ensures healing only when needed. Short-circuit check resolves race conditions. | Hash collision resistance |
| Transport-independent security | SafeKeep encryption uses ECDH, not TLS. | - |
| PRISM verifier gap | PubAuth = "" for healed keys. PRISM verifiers are password-dependent and regenerated on next authentication - shares themselves are intact. | - |
Call Summary
| Call | Direction | Purpose |
|---|---|---|
keyLookup | SWE → Home ORK | Retrieve swarm roster and current mimDB digest (mDigest). |
SomeAPICall | SWE → Healing ORK | Any normal API call, carrying mDigest. Triggers digest comparison. |
HealKey | Healing ORK → mimDB | Submit stale digest. Request missing SafeKeep records and the TWELVE-MAP state. |
BrokenRecords / YouAlreadyHaveLatest | mimDB → Healing ORK | Return encrypted SafeKeep records (), or confirm ORK is current. |
References
- Hall, J. L., Hertzog, Y., et al. (2023). Manifesting Unobtainable Secrets: Threshold Elliptic Curve Key Generation using Nested Shamir Secret Sharing. arXiv:2309.00915. Presented at AustMS 2021.
- Tide Developer Documentation: docs.tidecloak.com
Related Protocol Articles:
- Protocol: Account Creation / KeyGen - The DKG ceremony that creates SafeKeep records consumed by this protocol.
- Protocol: PRISM Password Change - Also produces SafeKeep records when ORKs are absent during password rotation.
- Protocol: Decentralized Account Recovery - User-initiated access restoration, architecturally distinct from system-initiated Key Healing.
- Protocol: Ragnarök - Verifiable destruction of shares, including healed ones.