[827] in cryptography@c2.net mail archive

home help back first fref pref prev next nref lref last post

Tea Leaves: Ephemeral Shared Entropy

daemon@ATHENA.MIT.EDU (Nick Szabo)
Wed May 14 23:06:58 1997

From: Nick Szabo <szabo@best.com>
To: cryptography@c2.net
Date: Wed, 14 May 1997 18:42:14 -0700 (PDT)


If Alice meets Bob at a party, how many bits of entropy can they privately generate 
to use for future remote communications between them?   What I'm after 
is "shared entropy": unguessable numbers known only to Alice and Bob.
With this we can construct an add-on to public key cryptosystems which 
provides forward secrecy and parallel fallback mechanisms for confidentiality and 
authentication.

Some examples of shared entropy:

* Reading the tea leaves.  This ephemeral visual pattern contains a
signficant amount of entropy in a digitized, sharp black & white still.
The technique has value as a traditionally recognized, visceral, face-to-face 
"protocol", and is faster than lava lamps. :-)   Alice and Bob swish the leaves, 
drain the tea, take the photo.  They might hide the cup from others in the 
room and provide a local light source.   They then download the digitized 
photograph to their laptops, digest down to the expected amount of true 
entropy, encrypt using the previous shared data digest as a key (so that we 
have a kind of "chaining mode" between "readings", and even between separate 
face-to-face meetings of Alice and Bob).  Repeat the process with more 
"readings" until the desired entropy is obtained.  Wash out the last pattern.  
Drink tea.

Alice and Bob might keep the photographs to cross-check against the digest 
and personal memory later, to detect if somebody who gained access to their
personal data altered the shared entropy.  If this is not a 
concern, or forward secrecy is required, the photos should be deleted immediately 
after their digest has been taken.

* Scrawling with a mouse, radiation counting devices, etc. on a laptop
with a shared link between Alice and Bob.  Not as hip as tea leaves but 
perhaps more practical. 

* Most biometrics (palm readings, fingerprints, retina scans, etc.) don't
have novel entropy across readings.  Voice (e.g., conversations, songs)
has some, but what is entropic within readings but repetitive between
(e.g., the general voice pattern) is non-confidential entropy and would have 
to be filtered out.

Such "readings" might of course be associated with a PGP key-signing party.

The shared entropy might be expanded using a PRNG such as Blum-Blum-Shub
into a very large supply of pseudorandom numbers for for keying purposes.  
Hal Finney also suggests recycling entropy using one-way hash functions.

I don't propose using shared entropy as a replacement for key distribution using
public keys, but rather as an adjunct, a second layer of protection.  When
Alice and Bob communicate via public key, they would now encrypt using two symmetric 
keys, one encrypted via public key and transmitted with the message,
the other used in the encryption and then destroyed.  Tandem use of the symmetric 
keys may take one of the following forms:

* encryption of the transmitted key with the rederived key, before the
message is encrypted
* superencryption of the message
* combination into one very large key, so that even if one part of the
key were known, the encryption is still unbreakable

Indeces into this shared data are derived from the transmitted
symmetric key to construct the untransmitted key.  The receiver must 
rederive the untransmitted key, using these indeces and its own synchronized 
shared data.  

The shared data bits used in the key are destroyed, by the sender upon encryption, 
by the receiver upon decryption, to provide forward secrecy.  (My thanks to Hal
Finney for clarifying the existence of this property, which is perhaps the most
valuable part of this system).  One attack to be addressed here is
whether the bits can be reconstructed from the surrounding bits in the PRN stream:
if so we'd have to fall back to selecting key bits from the original true 
entropy, or to recycling via one-way hash functions, or find a way to select keys 
from the PRN stream without this fill-in-the-blanks property.

If Alice and Bob share keys at the party as well, this protects against the 
man-in-the-middle attack.  Otherwise, a MITM could still spoof Alice and Bob using fake 
public keys, but could not determine the plaintext of their messages when encrypted 
as outlined above.  A challenge-response protocol (such as zero knowledge proof) using 
the shared entropy, combined with self-certified exchange of the true public 
keys, would unmask the MITM as an entity using fake public keys.  If the 
MITM disrupted these messages he would also be unmasked.  But this is
gratuitous functionality, since while at the party Alice and Bob can simply
swap public keys.  The main value-add here is fallback authentication: a thief would 
have to steal both Bob's private key _and_ the entropy shared with Alice,
or a cryptanalyzer would have to break both, in order to commit identity fraud, 
spoofing Bob to Alice.   

So a general benefit, besides forward secrecy, we get is that we have independent 
parallel mechanisms for confidentiality and authentication between Alice and Bob if the 
public key system breaks down (key escrow, timing attacks, bad PRNG, ...).  Of course, 
similar breakdowns could happen to the shared entropy system, but if implemented 
with independent algorithms it gives us a fallback already in place.  The 
more radically different the backup is, from the ground up, the more likely its 
failures will occur for independent reasons. 

If Alice and Bob don't have the opportunity to meet face to face, they 
might each generate random numbers from their own sources, which 
are shared via a "fair coin flip" protocol during a forward-secret session.
The security of the generated numbers would depend on the security of this
initial session, of course.


Nick Szabo
szabo@best.com
http://www.best.com/~szabo/

home help back first fref pref prev next nref lref last post