A zero-knowledge proof, sometimes also referred to as a ZK protocol, is a verification method that takes place between a prover and a verifier. In a zero-knowledge proof system, the prover is able to prove to the verifier that they have the knowledge of a particular piece of information (such as the solution to a mathematical equation) without revealing the information itself. Such proof systems can be used by modern cryptographers to provide increased levels of privacy and security.
The concept of a zero-knowledge proof was first described in a 1985 MIT paper, 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. This paper also introduced the mathematically significant finding that interactions between a prover and a verifier could reduce the amount of information required to prove a given theorem.
A ZK proof must fulfill two basic requirements known as completeness and soundness. Completeness refers to the ability of the prover to demonstrate knowledge of the relevant information to a high degree of probable accuracy. For the proof to be sound, the verifier must be able to reliably determine whether or not the prover is actually in possession of the information. Finally, in order to be truly zero-knowledge, the proof must achieve both completeness and soundness without the information in question ever being communicated between the prover and the verifier.
Zero-knowledge proofs are mostly used for applications in which privacy and security are essential. Authentication systems, for example, can employ ZK proofs to verify credentials or identities without directly divulging them. As a simple example, it can be used to verify that a person has a password to a computer system without the need for disclosing what the password.
One prominent real-world use case of zero-knowledge proofs is to be found in the world of cryptocurrency and blockchain technology. Using a type of proof known as a zero-knowledge Succinct Non-interactive Argument of Knowledge (zk-SNARK), cryptocurrencies such as Zcash and Monero are able to offer blockchain transactions with increased levels of privacy to their users. Ethereum is also working with zk-SNARK proofs since its Byzantium update in 2017.