For this author, probably the most surprising thing cryptography
can accomplish is zero-knowledge proofs. The idea behind a
zero-knowledge proof is to prove that you have a certain piece of
knowledge without revealing the content of that knowledge to an
interlocutor. The purpose of a zero-knowledge proof is to demonstrate
access to some secret information without giving that access
to someone else. For example, imagine a conversation between Alice
and Bob:
- Alice: "I can decrypt the confidential message encrypted
as C."
- Bob: "I do not believe you. Prove it!"
- Alice (bad response): "The key is K, and therefore, as you
can see the message decrypts to M."
- Bob: "Ah ha! Now I know the key and the message also."
- Alice: "Oops!"
Alice really took a bad approach here, since she failed to keep
the message confidential. And she even gave away the key
while she was at it (she could have done slightly better if, for
example, the cryptographic hash of M could be verified instead of
revealing the key; but the idea is the same). A much better
conversation for Alice to engage in is:
- Alice: "I can decrypt the confidential message encrypted
as C."
- Bob: "I do not believe you. Prove it!"
- Alice (good response): "Let's engage in a zero-knowledge
protocol, and I will demonstrate my knowledge with an
arbitrarily high probability (but not reveal anything about
the message to you)."
- Bob: "OK."
- Alice and Bob go through the protocol...