Previous | Table of Contents | Next |
To make this work, Alice had to switch envelopes at the end of the trick. However, cryptographic protocols can provide a method immune from any sleight of hand. Why is this useful? Heres a more mundane story:
Stockbroker Alice wants to convince investor Bob that her method of picking winning stocks is sound.
Bob: Pick five stocks for me. If they are all winners, Ill give you my business.
Alice: If I pick five stocks for you, you could invest in them without paying me. Why dont I show you the stocks I picked last month?
Bob: How do I know you didnt change last months picks after you knew their outcome? If you tell me your picks now, Ill know that you cant change them. I wont invest in those stocks until after Ive purchased your method. Trust me.
Alice: Id rather show you my picks from last month. I didnt change them. Trust me.
Alice wants to commit to a prediction (i.e., a bit or series of bits) but does not want to reveal her prediction until sometime later. Bob, on the other hand, wants to make sure that Alice cannot change her mind after she has committed to her prediction.
Bit Commitment Using Symmetric Cryptography
This bit-commitment protocol uses symmetric cryptography:
That is the commitment portion of the protocol. Bob cannot decrypt the message, so he does not know what the bit is.
When it comes time for Alice to reveal her bit, the protocol continues:
If the message did not contain Bobs random string, Alice could secretly decrypt the message she handed Bob with a variety of keys until she found one that gave her a bit other than the one she committed to. Since the bit has only two possible values, she is certain to find one after only a few tries. Bobs random string prevents her from using this attack; she has to find a new message that not only has her bit inverted, but also has Bobs random string exactly reproduced. If the encryption algorithm is good, the chance of her finding this is minuscule. Alice cannot change her bit after she commits to it.
Bit Commitment Using One-Way Functions
This protocol uses one-way functions:
This transmission from Alice is evidence of commitment. Alices one-way function in step (3) prevents Bob from inverting the function and determining the bit.
When it comes time for Alice to reveal her bit, the protocol continues:
The benefit of this protocol over the previous one is that Bob does not have to send any messages. Alice sends Bob one message to commit to a bit and another message to reveal the bit.
Bobs random string isnt required because the result of Alices commitment is a message operated on by a one-way function. Alice cannot cheat and find another message (R1,R2´,b´), such that H(R1,R2´,b´) = H(R1,R2,b). By sending Bob R1 she is committing to the value of b. If Alice didnt keep R2 secret, then Bob could compute both H(R1,R2,b) and H(R1,R2,b´) and see which was equal to what he received from Alice.
Bit Commitment Using Pseudo-Random-Sequence Generators
This protocol is even easier [1137]:
When it comes time for Alice to reveal her bit, the protocol continues:
If Bobs random-bit string is long enough, and the pseudo-random-bit generator is unpredictable, then there is no practical way Alice can cheat.
Blobs
These strings that Alice sends to Bob to commit to a bit are sometimes called blobs. A blob is a sequence of bits, although there is no reason in the protocols why it has to be. As Gilles Brassard said, They could be made out of fairy dust if this were useful [236]. Blobs have these four properties:
Previous | Table of Contents | Next |