Live data from Hacker News

Shamir Secret Sharing

max.levch.in

31–40 of 69 posts

Re: Shamir Secret Sharing

#31
post #16

Earlier quoted context omitted.

Not with passwords of their choice. You could use SSS in combination with BIP to derive a set of 12 or 24-word passphrases, this might be a bit more user friendly.

can you give more information please?

BIP39 is the Bitcoin standard which defines the process to generate the human readable "recovery phrase" for a Bitcoin wallet based on the private key. It's a list of 2048 pre-defiend words. Your private key is chunked into 11bit groups (with a few bits for a checksum) and then assigned the corresponding word.

Re: Shamir Secret Sharing

#32
post #5

Earlier quoted context omitted.

True. Adi Shamir is the S. Rivest–Shamir–Adleman

adi shamiR (I'm sorry)

Alternative history/facts: all the letters in RSA are from Adi Shamir's unixname (rsa). Because 'asr' (Adi ShamiR) was already taken, he started using the reversed string instead ('rsa'), and used it as the command name for the first unix implementation of the RSA algorithm, which he developed all by himself.

Re: Shamir Secret Sharing

#34
post #9

OK, since we're pitching our SSS implementations here in comments, I welcome everyone to check out BananaSplit, https://bs.parity.io Not sure about year 2023, but at the time I wrote it for my previous employer there was nothing remotely usable for regular user. Thus, BananaSplit. It doesn't allow you to specify many parameters (just the number of shards, and then requires 50%+1 to recover); aimed at printed backups…

Interesting idea, but the restore function doesn't work for me. Access to fetch at 'file://redacted/Banana%20split.html#/combine' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.

Hmmm, that's new; thanks for bringing this up.

Would it be too much to ask for you to open an issue in Github for this? Things I'd be interested in the most would be details about your environment: browser/version/platform and if this is reproducible in a "fresh" browser profile without any extensions added (or just a list of your extensions, if that's not too privacy-invasive for you).

Re: Shamir Secret Sharing

#35
post #16

Is there an alternative scheme that allows the different parties to enter their own password?

Not with passwords of their choice. You could use SSS in combination with BIP to derive a set of 12 or 24-word passphrases, this might be a bit more user friendly.

It already exists: https://github.com/satoshilabs/slips/blob/master/slip-0039.m...

Re: Shamir Secret Sharing

#37
post #27
post #19

Earlier quoted context omitted.

Not at all. The problem was that the crypto for the same library on two different OSes was implemented differently, which lead to an error encrypting on Linux and decrypting on Solaris. Ironically, this would have been avoided if they had rolled their own. It is an instance of "make sure you have backups when deploying to production"

Not the crypto, but rather the getpass() function, which simply reads a password from standard input without echoing it. Since the function uses a static buffer, there is a limit on the password length, which apparently on Solaris was set to the absurdly low value of 8 (glibc uses a more reasonable value: 8192).

Thanks for the correction. I assumed getpass() did some crypto work in addition to just getting raw keyboard input.

Re: Shamir Secret Sharing

#38
For anybody new or returning to SSS, check out SLIP-0039: https://github.com/satoshilabs/slips/blob/master/slip-0039.m...

One of the big downsides of SSS is that it’s very raw and you have to do a lot of legwork to make it actually useable. For instance, you can sss_combine any arbitrary polynomial coefficients and get a result, you don’t know if the reconstituted data is correct until you try to use it. Implementations can vary in the finite field chosen because SSS doesn't specify one, and not all are equal and they are not interchangeable (coefficients from one don’t work in another). Another issue is that it’s susceptible to collusion. It’s rightfully criticized for its shortcomings and the argument follows the don’t roll your own crypto vein. SSS is like handing a dev XOR and telling them “now go encrypt things”.

SLIP39 solves this by formalizing a protocol for handling SSS splits built atop standards for crypto key serialization (BIP-39). SLIP defines a standard finite field (used when interpreting the polynomial coefficients), SLIP shards are unique on each generation so parties with the same underlying SSS shard can’t compare mnemonics, they’re mnemonically serialized for humans, and they have a checksum and group index metadata which makes a more sane UX possible when combining. SLIP also describes a two layer setup so you can manage trust by cordoning people off into groups to help litigate collusion.

Re: Shamir Secret Sharing

#39
post #25

Earlier quoted context omitted.

Yes, I agree, HashiCorp Vault definitely serves the purpose of having a single point of failure that can go down and take your entire company down with it, just like in the story :P (c.f. Roblox)

Aaah, we had something like this happen to a k8s cluster that had secrets stored in a HC Vault. The vault got sealed and the keys lost. That was it...

How did you recover?
Post reply on HN