Zero Knowledge Proof
What is a zero-knowledge proof?
A zero-knowledge proof (ZK Proof) or zero-knowledge protocol is a mathematical method to verify things without revealing the underlying data. In other words, the prover is able to prove to the verifier that they have the knowledge of a piece of information without revealing the information itself. The purpose of using zero-knowledge proof is to improve the privacy and security of a system.
The verifier asks the prover at random, the more often a correct answer is given, the higher probability that the prover has possessed that “knowledge.” A well-known example that is often used to explain the concept of ZK proof: Peggy (Prover) knows the secret code to open a door to a cave. The cave is shaped like a ring with two entrances to two separate paths (A and B). The door connects to both paths, but can only be opened with the secret code. Victor (Verifier) wants to know whether Peggy got the secret code and Peggy wants to prove she knows it but doesn’t want to reveal the secret code itself. To achieve this, Peggy goes into the cave and Victor waits outside. He shouts the name of a path that he wants Peggy to return from, either A or B at random. If Peggy knows the secret code, she can always open the door and return along the desired path. And if she doesn’t really know the code, she will only be able to return by the path she entered. She would have a 50% chance of being correct, but if they repeat it for many times, say 10 times, her chance of successfully going from the right path without actually knowing the secret code becomes negligibly small ( ).
A zero-knowledge proof must satisfy three properties: completeness, soundness and zero-knowledge. Completeness refers to the ability of the prover to demonstrate knowledge of the information to a high level of accuracy; soundness means the verifier must be able to determine whether the prover is actually knowledgeable; zero-knowledge means if the statement is true, the verifier learns nothing other than this fact.
The concept of a zero-knowledge proof was first proposed by a 1985 MIT paper “The knowledge complexity of interactive proof systems” , published by Shafi Goldwasser and Silvio Micali. They demonstrated that it was possible to prove some properties of a number without disclosing the number or any additional information about it.