Advertisement
Advertisement
⚡ Community Insights
Discussion Sentiment
89% Positive
Analyzed from 3013 words in the discussion.
Trending Topics
#secret#shamir#shares#more#https#key#field#sss#need#sharing
Discussion Sentiment
Analyzed from 3013 words in the discussion.
Trending Topics
Discussion (83 Comments)Read Original on HackerNews
- 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.
Currently doing a different startup, but certainly an idea for a future one.
https://packages.debian.org/trixie/ssss is a nice and rather straightforward implementation.
(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.
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/
Good work doing it. I guess now I don’t have to. :D You may have gained a customer from this HN thread.
Wrote my thoughts about that here: https://eternalvault.app/blog/why-we-are-adding-lifetime-pri...
And it feels good to know that there are people out thinking about this, makes me happy truly and if you want to try out the platform, welcome aboard, happy to walk through it if needed. :)
One thing I had been thinking about was that it’s important to be extremely open about the algorithms and infrastructure required, with a very transparent whitepaper on how it works (enthusiast level discussion of the technical details) and how you have designed the company to be extremely sustainable. I think your job is to convince people of two things: 1) this actually respects my privacy in a way I can verify myself (or lean on the technical expertise of other outside observers), 2) this company actually has a chance of surviving until I die.
If I can see those two things are true, a $199 lifetime purchase is a no-brainer (and that probably covers a dozen lifetime members’ operational costs). :D
https://simon-frey.com/s4/
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.
In this way, people could act as backups for one another with plausible deniability of what's being stored.
SSS does suffer though for some serious weaknesses, i.e. it trusts the shareholders. A cheating party can submit a fake share during reconstruction, corrupting the recovered secret, and honest parties have no way to detect this something that verifiable secret sharing fixes.
Anyway threshold crypto is a very elegant field and the math is there is really beautiful.
https://www.cloudflare.com/learning/dns/dnssec/root-signing-...
https://blog.apnic.net/2021/10/12/dns-security-and-key-cerem...
"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.
For what we needed, we intentionally wanted both people to be at the same terminal (it was going to be used to give shell access to a specific unix account that ran a critical system).
That mean that we could implement it as a setuid (root) binary that required both users to authenticate. It had a config file that worked like sudoers, and defined a list of commands that could be called, how many people were needed to authenticate, and which unix groups they had to belong to.
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
https://medium.com/@amanat361/shamir-secret-sharing-the-stor...
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.
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.
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.
Yes, 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:
https://shamirs-secret-sharing.pagey.site
Fascinating how sometimes in different languages one word can have opposite meaning and the other times one word can have similar meaning.
By who? My SO is now passably conversant in Malayalam after watching their cinema during the covid lockdowns (~1y to 2y).