minimal coconut
In figuring our the minimal scenarios we want to cover I want to reason about whats non-negotiable and what's nice to have (and that we could perhaps design and build for later).
I'm gonna give the excellently described scenarios here shorter names so I can talk more easily
- swim - as in your laptop went for a swim (nee loss of device / private key)
- theft - a bad actor has access to your private key (nee stolen device)
- inheritance - I am totally gone, it's up to those I've left things to (nee coconut death for realz)
proposal: solve for theft
Here's a breakdown of why I think that's the case.
If we are missing our laptop, then the safe thing to do is assume the theft case (and that your identity is comprimised).
There are 2 ways you could recover your crystals if theft has happened:
- a) recover your ssb key, then request your shards
- b) ask for your shards to be forwarded to a new identity
Option (a) is not a useful option because even if you recover your scuttlebutt identity, requesting your shards back is dangerous (if you don't fork your feed in doing it, then you'll be giving your crystals to a bad actor). (crystal is synonomous with the fixed crystal made up of all the shards, i.e. some backed up secret)
So, I think we need to focus exclusively on shard fwd'ing. (and not at all one recovering a scuttlebutt identity for our purposes)
I think we can leave the inheritence case, because I feel the solution is going to be fairly similar to the theft case (fwding shards) ... and I think we can extend to that nicely. In contrast the swim solution (resurect the identity) could be extended to solve inheritence, but would give your inheritor access to everything private you've said (this is something awkward pointed out in the Crypto Inheritence guide which I think we should just avoid)