« previous | Tuesday, March 26, 2013 | next »
Secret Sharing
A
-threshhold scheme is a way to share a message among
participants so that any subset of
participants can recover the message, but no smaller subset.
Small example: (2,2)-threshhold schemes have been in various movies involving nuclear missiles (e.g. War Games)
Another example: (3,55)-threshhold scheme could protect the password to some chocolate
In 1979, Adi Shamir found following scheme to hide a message
- Pick a prime

- Pick
random numbers
in 
- Define

- Pick distinct random numbers
, and to the
th participant, give 
Idea:
points in Euclidean space define a unique
-degree polynomial curve.
Lemmas
- No subset of
participants can recover
.
- Any subset of
participants can recover
.
Proof. Take, say, the first
participants
. We get
Which is a
linear system of equations, so we can solve
Claim: The preceding matrix has a nonzero determinant and thus we have a unique solution!
This matrix is a van Der Monde matrix.
Back to ChOcOlAtE
So we need to solve
For
and
, we get
Digital Signatures
In our Iran/UN example, we used the RSA digital signature. We also have El-Gamal and DSA (which is still used today).
If Alice needs to sign a message
,
- Alice sets up as in RSA
and publishes
and keeps
private.
- The signature
is published
Any user can verify the signature via
Note: In practice, digital signatures are slow, so usually, only a short digest of the message is signed. This is one setting where hash functions enter.
El Gamal
To sign a message
- Alice sets up as in El Gamal
and picks a random 
- Alice computes
and

- Alice sends

To verify, the user must:
- download the public part
and then
- Accept if
.
Verification works because
DSA
Adopmed by NIST in 1994
- Alice finds a 160-bit prime
and a larger prime
with 
- Alice picks a primitive root
mod
and sets 
- Alice picks a secret
and calculates 
- Pick random

- Compute

- Compute

- Signature is

To check signature,
- compute
and 
- Accept signature iff
