Unconditional
SECRET SHARINGPrimitive

Shamir secret sharing

In plain words

Split a key into pieces so a set number of them can rebuild it, while fewer reveal nothing at all.

The idea: Two points fix a straight line. Hide the secret as the spot where a random line crosses the vertical axis, and give each person one point on the line. Any two people can draw the line and read off the secret. One person alone holds a point that lies on endless possible lines, each crossing at a different secret, so they learn nothing. For "any 3 of 5", use a curve that needs three points (a parabola), and so on.

Why it matters: Used to spread one validator's key across several operators, and to back up seed phrases.

Two points fix a line
One share: any secret fits?Two shares: one linesecretthe share
The secret is where the line crosses the vertical axis. Each orange dot is one person's share. With one share, lines through it can cross anywhere, so every secret is equally possible. With two, there is exactly one line. Real Shamir sharing uses remainder arithmetic and can need any number of shares (three for a parabola, and so on).

The details

On the map: distributed-validator key shares, seed backups

Split a secret into n shares so that any t of them rebuild it, while fewer reveal nothing at all, regardless of computing power[1].

Where you meet it on Ethereum: distributed-validator setups split a validator's BLS key across several operators, and wallets can back up seed phrases as Shamir shares (SLIP-39)[2]. Security is unconditional. The only assumptions are good randomness and that fewer than t shareholders collude.

Rests on

If any of these breaks, this breaks too.

If it falls

If this breaks, these break with it.

Nothing on the map depends on it: it is an end point, something people use directly.

References

  1. Adi Shamir. How to share a secret. Communications of the ACM, 1979. doi:10.1145/359168.359176
  2. Pavol Rusnak, Andrew Kozlik, Ondrej Vejpustek et al. SLIP-0039: Shamir's Secret-Sharing for Mnemonic Codes. SatoshiLabs Improvement Proposals, 2017. github.com/satoshilabs/slips/blob/master/slip-0039.md