- They could no longer read your data
- Additional redundancy (as you only need 2 to be available)
- Compared to other secure storage apps which rely on a master password, which if you forget, you are screwed, you could still use all the usual account recovery methods.
https://packages.debian.org/trixie/ssss is a nice and rather straightforward implementation.
In this way, people could act as backups for one another with plausible deniability of what's being stored.
(Actual GPS is a little more complicated than that because the real system needs accurate time information.)
Since Shamir Secret Sharing is information-theoretically secure (if you do not know k points from the k-out-of-n secret then all secrets are equally plausible even when bruteforcing), the bitsize of your field can be whatever you want (but obviously bigger than the bitsize of your secret, you can't hide 100 bits in a finite field of 5 elements).
Usually, you don't want an attacker to be able to bruteforce your secret (while the scheme is ITS, your secret typically isn't, e.g. the seed of your wallet), hence randomness can be added to your secret and the bitsize of the field is taken big enough to thwart these attacks.
Depending on your attack model, an 80-bits or 128-bits field is more than secure enough, hence a share bitsize slightly above 80 or 128 bits.
And regarding quantum computer, since the scheme is ITS no attacks can exist.
As I understand it, quantum computing changes nothing here — if you're missing even one point, that last point could change the secret to anything at all, with no way to disambiguate.
I gave that to some members of my family and instruct them to give them to my wife in case I die.
Thanks a lot Sir.
3 of 4: A B C D
- OR -
2 of 3: E F G
- AND -
1 of 1: H
Or any similar combination. Maybe also with a way to name the cards so it's clear exactly what's needed when restoring.Though there's something to be said for the simplicity of the current design.
key is protected by a 3 of 3 keys.
1 protected by 3 of 4 (i.e. SSS the key into a 3 of 4) 1 protected by 2 of 3 (i.e. SSS the key into a 2 of 3) 1 that just is.
so you take your original key and SSS into a 3 of 3.
you take part 1 and SSS into a 3 of 4, and take part 2 and SSS into a 2 of 3.
https://bs.parity.io/ -- http://passguardian.com/ -- https://iancoleman.io/shamir/
"The useful part is not that the secret is hard to compute from too few shares. It is that too few shares contain no information about the secret. With one share missing, every possible secret is still possible."
Reminds me of factoring numbers with the Quadratic Sieve or its variants. You find a system of congruences mod n that eventually allow you to compute prime factors, but until you have enough of them that isn't possible. I've often wondered... Each congruence must contain some information right? What space are we reducing degrees of freedom in?
Same thing here, each piece restricts the space of polynomials, but does not restrict it enough to tell where the key crosses the axis.
Good work doing it. I guess now I don’t have to. :D You may have gained a customer from this HN thread.
https://www.cloudflare.com/learning/dns/dnssec/root-signing-...
If I use 3 shares and require all three to recover, then I think I could let the 3 points define a plane. Then the plane would intersect the axis at a unique point.
If I want 4 or more shares, I can make them by just generating more points on that same plane. Then I think any three of those should recover the secret. So it seems like that would all work about the same as with the polynomials? Then I can go to still more dimensions when I want to require more shares to reveal the secret.
As a bonus, when you refresh the shares, you'll discover that at least a couple of your trusted parties have absolutely no memory of receiving that mysterious piece of paper from you back in 2022.
but you can also just use Reed-Solomon and split the payload, the difference with Shamir is that you lose information-theoretic security (you lose it the moment you use encryption anyway) and the payload also needs to undergo an all-or-nothing-transform (AONT).
AONT transforms the entire payload into an encrypted blob which also serves as its own key, a withheld piece is a de facto encryption key. this is required because Reed-Solomon can have pathological cases where pieces leak information.
> Reed-Solomon is an Erasure code
which shares the same math as Shamir > Those leakage models are gnarly.
AONT solves that by making any leak other than the totality meaninglessYes, you can just GF(256), but if you're worried I'd also just use a prime field instead.
Vibe-coded a little playground where you can generate secrets, see the polynomial, combine the secrets, and in general, play around:
By who? My SO is now passably conversant in Malayalam after watching their cinema during the covid lockdowns (~1y to 2y).
Fascinating how sometimes in different languages one word can have opposite meaning and the other times one word can have similar meaning.
Your environment is unlikely to have all of that already, so you'll need to figure out equivalents for all those. But I think you're going to need a local service running as root and it's going to need to be able to tell the difference between distinct human users, if you want secure. Just typos is way easier.
https://github.com/Argonne-National-Laboratory/Pam-2man-Auth