CSR allows for the recovery of seeds and other secrets by dividing responsibility for recovery up between multiple devices, some (but not all) of which will be necessary for recovery. Its baseline recovery mechanism uses self-sovereign recovery (controlled entirely by the user), while more advanced scenarios allow for social key recovery (supported by friends or family). Backup is meant to be largely automated, especially in the baseline scenario, while recovery may require some user intervention.
One of the advantages of CSR over traditional social key recovery is that you don’t have to choose friends or family that you trust. Though you can do so in advanced scenarios, you can also entrust fragments of keys to companies running share servers. You don’t have to worry about them stealing keys, because you’re only giving them fragments (shares), but you can trust that they’ll likely still be around when you need to reconstruct your key.
Why is CSR Important?
CSR focuses on Resilience but it takes the next step beyond SSKR. Whereas SSKR provides a robust way to protect a seed if the user is careful and knows what to do, CSR makes it easy for users to automate that protection.
Thanks to its integration with Gordian Envelope, CSR can also store larger amounts of data that would be possible with SSKR alone, such as additional metadata describing an SSKR share.
But the most important element of CSR is that You Decide. Unlike Ledger Recover or other services, you choose who holds your shares, whether they be corporations with strict KYC requirements (as with Ledger Recover), companies with more privacy-preserving principles, other users who you swap shares with, or your own self-sovereign storage of shares on paper, steel, or something else.
How Does CSR Work?
CSR is integrated into Wallet and Seed Storage apps. When a user chooses to backup a seed, it will automatically shard the seed and send those shares off to selected Share Servers . When a user wishes to assert more agency, they can choose where those shares are stored, or even take them offline.
The basic storage is down with Gordian Envelopes, which allow for the storage of digital assets or secrets such as a seed in a secure way. Gordian Envelope’s Attachments can optionally be used, to store this data in a vendor-specific manner.
Seed reconstruction requires the user to authenticate using different, predetermined methods with each Share Server. They can include everything from passwords and email responses to personal identification. Each authentication retrieves a share, and when sufficient shares have been retrieved, the seed is reconstructed.
The following example depicts the recovery of a seed complete with note and name, something not possible with bare SSKR.
See the CSR Architectural Overview for more information.
What are the Phases of CSR Deployment?
There are three broad phases to CSR deployment.
Phase 1: Release of SSKR to allow sharding of seeds and Envelope to support encoding of metadata. Release of Gordian Depository & Gordian Companion to demonstrate the use of a Share Server and a user-facing reference app that can shard a seed and send it off to multiple locales.
Phase 2: Work with third parties to support the creation of additional Share Servers in order to create an ecosystem truly supporting user choice, where a user of an application can meaningfully choose where to send the shares of his seed.
Phase 3: Expansion of SSKR to support VSS in the Trusted Dealer Key Generation mode, so that a user app can regularly test for the existence of seed shares without creating a danger of compromise by actually reconstructing the seed. Currently it seems most likely this will be accomplished with the recently audited ZF FROST libraries.
Phase 4 will then leverage that work with VSS and FROST into a full CKM deployment.
CSR Kickoff Meeting:
CSR Example API:
See the Gordian Developer Meetings: CSR & Envelope playlist for even more videos on the development of CSR and Gordian Envelope.
Next Step Intro:
- Sequence Diagram (GitHub repo)
Developer Reference Apps:
- Gordian SeedTool (app implementation)