News for hackers. Stuff that matters.
Re:Ssss: Shamir's Secret Sharing Scheme by lrvick on Thursday October 27, 2022 @11:38AM (#33359225)
I build systems designed to distrust any single individual with cryptographic key material and SSSS needs a lot of careful handling and automation to accomplish this.

Splitting the key safely is only part of the problem though, because you will then need a system that only -uses- the key in a way all parties consent to.

Threshold signing is a much easier alternative for many use cases but sometimes a cryptosystem requires just one key and SSSS is all we can do.

To avoid any single party knowing or controlling an SSSS split key you can:

1. Write an application that takes N public keys as input, and returns a newly generated SSSS split key with the shares encrypted to each respective public key as output.

2. Build application deterministically as an immutable unikernel or firmware image for hardware that supports remote attestation (Nitro Enclave, Convidential VM, HSM, etc).

3. Publish source code such that all participants can access and review it, or confirm review was done by multiple parties they trust.

4. Have multiple parties build the application bundle and confirm they get the same hash

5. Any party deploys the bundle to a live remotely attestable system.

6. All parties use the remote attestation interface to confirm the target system is running the same image they compiled themselves.

7. All parties submit their public keys

8. System generates key, splits it, and returns SSSS share to each party encrypted to their respective public key.

Re:Ssss: Shamir's Secret Sharing Scheme by generalizations on Thursday October 27, 2022 @12:16PM (#33359808)
> This scheme implies you trust this distributor not to make copies of the key for himself (queue sauron references...). I've wondered if there's a scheme that does NOT trust the distributor of the key.

What you describe still trusts the distributor - you just found a way to make the distributor easy to trust. I'd be more interested in a mechanism that is mathematically correct, like some of the papers referenced elsewhere in this thread.

Re:Ssss: Shamir's Secret Sharing Scheme by lrvick on Thursday October 27, 2022 @03:39PM (#33362926)
Even if you avoid trusting the distributor, the quorum of share holders still will end up having to load a single key into a computer somewhere at some point to do cryptographic operations with it.

You need a trusted machine to do operations with the key, and if you are going to build that anyway then you might as well use it for generation and distribution too.

Re:Ssss: Shamir's Secret Sharing Scheme by generalizations on Thursday October 27, 2022 @04:12PM (#33363371)
Well, now you've just turned your locked box into a key distribution machine, and there's a big difference in the security profile of each.
Re:Ssss: Shamir's Secret Sharing Scheme by lrvick on Friday October 28, 2022 @01:35AM (#33368052)
What is the point of generating a cryptographic key that you can never safely use?
Re:Ssss: Shamir's Secret Sharing Scheme by generalizations on Friday October 28, 2022 @02:30PM (#33375417)
I mean that the security profile of a simple 'locked box' that only knows the keys when all parties agree to unlock it is a very different from the security profile of a 'key distribution machine' like you described.

I mean, if we all agreed to perform the decryption, the secret's out anyway. But not before then.

Re:Ssss: Shamir's Secret Sharing Scheme by lrvick on Friday October 28, 2022 @02:46PM (#33375682)
Depends on use case I suppose. I can not think of many practical applications for one-time-use keys other than disaster recovery flows.

The real world use cases I most commonly support are things like CAs, TLS keys, financial transaction signing keys, and sensitive document decryption keys. All of these require single keys to exist that needs to perform automated operations, and needs to be on systems that can be backed up, restored, upgraded, and maintained, while able to prove no single person can access or control the keys.

The scheme I described can allow one key to be created, split, restored, used, and split again many times without full trust in any individual.