| Introduction
Task
Data Dictionary
Teacher's Tools
Blinding
Certificates
Digital Signatures
Key Distribution
Public Key
Secret Splitting
Security Basics
Symmetric Key
|
|
Sometimes, it is desirable to give someone a piece of information, but not
commit to it until a later date. It may be desirable for the piece
of information to be held secret for a certain period of time.
It may also be desirable for no-one else to be able to understand this
information except for the sender and the receiver.
An example of this could be a student's authorization to launch a set
of balloons if he gets an 'A' in accounting.. The command could be:
Launch Balloons
The commitment could be to a location. Let us assume
the location is:
Quinnipiac College
There are certain conditions that the student is concerned
about:
-
He doesn't want the college to know he is going to
launch the balloons..
-
He is unsure of his target. He will only launch
the balloons if he gets an A in Accounting.
-
He can't launch the balloons. He must tell someone
else to do this.
-
If he gets in A in accounting class, he wants to launch the
balloons quickly.
The bit commitment protocol is a method of accomplishing this
task. Consider the following:
-
The receiver sends the sender a random string. A
string is a set of punctuation marks, letters, and numbers.
-
The sender creates a new message with the random string and the bit
that it wishes to commit to in the future.
-
The sender encrypts the message with a random key.
-
The sender sends the encrypted message to the receiver.
At this point, the receiver cannot decrypt the message. It does
not know what the key is. When the sender decides to commit the bit,
the following protocol can be followed:
-
The sender and receiver agree on symmetric
keys.
-
The sender encrypts the key it used to encrypt the random string and
bit it wished to commit to with the symmetric key.
-
The sender sends the encrypted key to the receiver.
-
The receiver decrypts the message using the symmetric key.
This leaves the key that was used in the bit commitment protocol.
-
The receiver uses this key to decrypt the random string and bit that
the sender wishes to commit to.
-
The receiver compares the value of the random string to the one it
had generated to make certain the message is authentic.
-
The bit is now revealed and committed to.
Obviously, the bit could be several bytes or another message. The
same protocol would work.
Applying the analogy of the student and the balloon leads to the following protocol:
-
The balloon launcher sends the student the command
sequence to launch the balloon. Let us assume that this
command is "Launch the balloons."
-
The sender creates the message "Launch the
balloons at Quinnipiac College." "At
Quinnipiac College" is the bit that the student wishes to commit
to at a later date.
-
The student encrypts the "Launch the balloons at Quinnipiac College" message with a random key.
-
The student sends the encrypted message to the balloon
launcher.
The balloon launcher cannot interpret the message since it
does not have the random key. Therefore, the balloon cannot be
launched until a later period of time.
When the student gets an A+ in accounting, he can launch the
balloon
through the following steps.
-
The student and balloon launcher agree on symmetric
keys.
-
The student encrypts the key it used to encrypt
"Launch the balloons at Quinnipiac College" with the symmetric key.
The encrypted key is the key that was used in step 3 of the previous
protocol.
-
The student sends the encrypted key to the balloon
launcher.
-
The balloon launcher decrypts the message using the symmetric key.
This leaves the key that was used in the bit commitment protocol.
-
The balloon launcher uses this key to decrypt
"Launch the balloons at Quinnipiac College."
-
The balloon launcher recognizes the command "Launch
the balloons" since it had sent it to the student.
-
The target, "Quinnipiac College" is revealed and committed to.
The balloons are launched and the party begins!
All of the student's concerns are addressed.
-
He doesn't want the college to know it is a target.
Quinnipiac College can't realize it is a target because the data is
sent to the balloon launcher in an encrypted format. The college
doesn't have the key, so it can't decrypt it. The college also
does not have access to the symmetric key shared by the student and
the launch center.
-
He is unsure of his target. He will only
launch the balloons if he gets an A in his accounting class. The student
authorizes the launch after he has sent the command to launch.
But, the student prevents the balloon launcher from firing ahead of
schedule because the balloon launcher cannot interpret the command.
-
He can't launch the balloons. He must tell
someone else to do this. Clearly, the balloon launcher is
pulling the trigger.
-
If he aces his accounting class, he wants to launch
the balloons quickly. The sequence is quick because the command
to launch has already been given. It just needs to be interpreted.
Another method of implementing the bit commitment protocol is to use one
way functions. The protocol is described below:
-
The sender generates two random strings.
-
The sender composes a message of the two random strings and the bit
it wishes to commit to.
-
The sender uses a one way function on the message. The one way
function will be a hash in this instance.
-
The sender sends the hash to the receiver.
-
The sender passes one of the random strings to the receiver.
Since a one way function was used, the receiver cannot decode the
message and determine the value of the bit. When the sender
determines that it is time to commit the bit, the following protocol is
used:
-
The sender sends the message of two random strings and bit it wishes
to commit to.
-
The receiver gets the message and calculates its hash.
-
The receiver compares the hash with the original hash it received.
-
The receiver compares one of the random strings to the one it had
previously received. If they are equal, then the second random
string is used to determine the value of the bit. The bit is
then committed to.
The second random string is kept secret until the bit commitment occurs
to prevent the receiver from trying different bit values to calculate the
hash. If it found the bit values, then the bit commitment could
occur too early in time.
To better explain this scenario, let's assume that a
student, Tom, wants to go out with a girl, Jen, at a coffee shop if
his ex-girlfriend isn't working there. Tom wants Jen to reserve the
evening, but doesn't want to tell her where they are going.
-
Tom generates two random strings. The strings
are "I want to go out with you tonight" and "since my
ex-girlfriend isn't working there tonight."
-
Tom composes a message of the two random strings and the bit
it wishes to commit to. Therefore, the message is "I want
to go out with you tonight at the coffee shop since my ex-girlfriend
is working there tonight."
-
Tom uses a one way function on the message. The one way
function will be a hash in this instance.
-
Tom sends the hash to Jen.
-
Tom sends one of his strings to Jen. He sends,
"I want to go out with you tonight."
At this point, Jen knows that Tom wants to go out with her
tonight. But Jen doesn't know where. Tom confirms that
his ex-girlfriend won't be there, so he needs to tell Jen.
-
Tom sends "I want to go out with you tonight at
the coffee shop since my ex-girlfriend isn't working there
tonight."
-
Jen gets the message and calculates its hash.
-
Jen compares the hash with the original hash it received.
It is identical.
-
Jen recognizes the string, "I want to go out with
you tonight." She understands that Tom's ex-girlfriend
isn't working tonight and that she should meet him at the coffee shop.
Jen would have a tough time guessing that the coffee shop
is where they are going. This is because there is a good amount of
unknown data in the hash. The coffee shop and the fact that the
ex-girlfriend isn't working are both part of the hash. It would take
too long for Jen to try and calculate this hash. If there was a large
amount of data being committed to, then the fact that Tom's ex-girlfriend
wasn't working could be left out of the hash.
For more information:
-
"Background for Bit Commitment" by
Claude Crepeau is available at http://www.cs.mcgill.ca/~crepeau/CRYPTO/BCDemo/BCbackground.html.
March 15, 1998
|