How Shamir's Secret Sharing Works
98 points by subract 6 hours ago | 9 comments

3eb7988a1663 25 minutes ago
Do the people who hold the root DNS keys do anything like this? Or is that too much complexity when a safe in a secure room works as an effective backup?
reply
_jackdk_ 3 hours ago
This is such a cool technique, and you could even teach it in secondary schools as a neat thing computer scientists can do with polynomials.
reply
Cider9986 4 hours ago
Here is Ente's implementation: (https://2of3.ente.com/)
reply
emmelaich 30 minutes ago
There's an implementation packaged up for most Linux distros: http://point-at-infinity.org/ssss
reply
teravor 4 hours ago
if the secret is large usually it's encrypted and the payload is distributed along with the shares of the key.

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.

reply
colmmacc 3 hours ago
Reed-Solomon is an Erasure code, and I definitely wouldn't look to that for Secret Splitting. Those leakage models are gnarly. But if you want something else that is more general - there are Monotone Span Programs. Seriously underused.
reply
teravor 3 hours ago

    > 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 meaningless
reply
compsciphd 4 hours ago
before I learned of shamir secret sharing, I wondered why one couldn't do the same exact thing with a par2 like system (albiet with smaller pieces than a par2 system would traditionally have). i.e. you have X bits of data, you create Y*X/N sized recovery blocks (where Y > N). You hand each recovery block to individual users. and any N users can get together to recover the key and decrypt the contents.
reply
calvinmorrison 2 hours ago
something tangentially i am interested in is computing following the 'two person rule' for things like sudo. Yes I am logged into server X at terinal Y, and so is my co-worker and we both sign off on running command X
reply
han1 4 hours ago
[flagged]
reply