12 karma · joined April 1, 2012
It relies on the fact that k points are necessary to reconstruct a k-1 order polynomial. So if you hand out n points, with n > k, then any k of these points can be used to reconstruct the polynomial, whose y-intercept is the "secret". The coefficients of the polynomial are random.
There are other [3] sharing schemes, and for the trivial k = n case, Shamir's scheme is probably overkill.
[1] http://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing
[2, PDF] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.80....
[3] http://en.wikipedia.org/wiki/Secret_sharing
UPDATE: Here are some links to RSA's "Distributed Credential Protection" offering [4] and the white paper [5] describing it.
[4] http://www.emc.com/security/rsa-distributed-credential-prote...
[5, PDF] http://www.emc.com/collateral/software/white-papers/h11013-r...
by Adi Shamir, the "S" in RSA
Chrome has native crypto.getRandomValues() and Safari's Math.random() was changed to use Arc4 PRNG back in 2008. I'm not sure if it has been updated to account for the flaws in the first bytes of Arc4, but if it has then this is cryptographically strong.
I don't know where Firefox and the other browsers stand on CSPRNGs, but as more and more implement crypto.getRandomValues(), this will improve services relying on client-side crypto.
Edit: This goes to the lack of English docs, not to your misunderstanding I'm sure.
* java: http://code.google.com/p/google-voice-java/
* C++: https://github.com/mastermind202/GoogleVoice
* C#: http://code.google.com/p/sharp-voice/
* obj-C: https://bitbucket.org/joeygibson/gvoice/wiki/Home
* Python: http://code.google.com/p/pygooglevoice/
* PHP: http://code.google.com/p/phpgooglevoice/
* javascript (node.js): https://github.com/amper5and/node-google-voice
I dont know how many of those are still maintained. Disclaimer: I am the author of node-google-voice, which is still maintained.