Zero knowledge proof
From HomoExcelsior
An interactive or probabilistic proof that demonstrates that one person has a certain peice of information without revealing the information.
If Mr. Foo, and Ms. Bar are both thinking of a number between 1 and 10, the following example would be a zero knowledge proof to determine if they are thinking of the same number:
Using 10 index cards, Mr. Foo fans the deck to the right, and counting from the top to locate his card, marks the card with an X. He then squares the deck and passes it to Ms. Bar. Ms. Bar also fans out the deck, but to the left, and counting from the top to locate her card, marks it with an X. She then squares the deck.
Now they have both made a commitment to the knowledge they possess (their numbers), and the deck is shuffled thoroughly. The cards are then laid out on a table and examined. If both Xs appear on the same card, the chosen numbers are identical and a shared secret. If the two Xs are not on the same card, they do not share the same chosen number and they still do not know what number the other person chose.
Keep in mind, this is the simplest example of the ZKP.
Another example is two people have a file, and they'd like to know if it's the same file without revealing the contents of the file to the other. They can both compute a strong one-way hash on their files (such as an MD5 checksum), and compare checksums. If the checksums are the same they can assume they have the same file, if the checksums are not the same the other party can *not* take that checksum and rebuild the original file. (See also: one-way hash).
Mathematically this situation may not be a true "proof" unless it can be shown that two different files will never generate the same checksum from the one-way hash algorithm, but this technique is common in current practice.
See also: Public Key Cryptography, Public Key Infrastructure, Secure Socket Layer
