Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's a really beautiful and easy to understand and genius algorithm, and it perfectly meets its design goals. It works very analogously to the following:

Pretend your secret is an integer. You want to distribute clues as to your secret integer to N of your friends such that any K of them can collude to figure it out, but K-1 of them can't figure out anything about it at all.

So you construct a (K-1)-degree polynomial of one variable, f(x). All of the coefficients of the terms of f(x) are random, except choose the y-intercept (i.e. the constant co-efficient) to be your secret. Then calculate and distribute the numbers f(1), f(2), ..., f(N) to your N friends.

K points on the 2D co-ordinate plane uniquely identify your single (K-1)-degree polynomial, which will have your specific secret y-intercept. However (K-1) points will pick out an entire family of potential (K-1)-degree polynomials. And, in fact, for every single possible secret you could have chosen, there's a (K-1)-degree polynomial that goes through (K-1) points and the possible secret value. So, (K-1) of your friends colluding really don't have any additional information at all about your secret.

Shamir's secret sharing works just like that, but done with integers modulo a prime. (And the prime has to be larger than your secret.)



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: