This post introduces the notion of a zero knowledge protocol. It is rudimentary. (I should have posted this earlier for the previous posts to make more sense. 🤣)
The name Zero Knowledge sounds absolutely chic, but what is it?
The tutorial1 by Oded Goldreich described it as follows,
Zero-knowledge proofs, introduced by Goldwasser, Micali and Rackoff2, are fascinating and extremely useful constructs. Their fascinating nature is due to their seemingly contradictory definition; zero-knowledge proofs are both convincing and yet yield nothing beyond the validity of the assertion being proved.
So how are such proofs possible? One crucial component is the concept of interactive proof, which will be demonstrated in the following simple scenario (introduced in a lecture in Theory of Computation by Prof. Ran Duan at IIIS, possibly related to ‘‘Showing without telling’’3).
Suppose you are trying to convince a color-blinded friend that two apples are of different colors (e.g. green and red). We can perform the following protocol, in which we use to denote the prover and to denote the verifier.
(w:en:User:Limbicsystem- English Wikipedia, src )
By the above example, we have demonstrated that interaction may really add something to the more traditional concept of proof. One thing to note is that the above protocol is automatically zero-knowledge; the prover does not need to tell which apple is of which color: he only needs to tell whether the apples are switched.
Proving certain assertions is very important when it comes to protocol executions. However, revealing the proof directly and publicly is usually not the best option, e.g. when you want to show something like ‘‘you know the password of an account’’. And even worse, revealing in an relation will make anyone seeing the proof capable of proving it to others, raising a lot of concerns when malicious verifiers are present.
ZK finds usages in the following scenarios (from ‘‘Demonstrate how zero-knowledge proofs work without using math’’4).
One can see that Ownership and Account Balance are important tasks when it comes to anonymous payments in digital currency applications (and in fact Zcash uses ZKs). And Sealed Bid Auctions are important to guarantee the auctioneer is not cheating in an online auction.
An arguably very important use case of ZK is the GMW compiler (conceived in GMW19875), which uses ZK to ensure parties involved in a protocol to act according to the predetermined protocol, by requiring the parties to publish ZKs on their action, but without revealing it.
A zero-knowledge protocol for any relation is defined by two PPT (Probabilistic Polynomial Time) interactive algorithms, a prover and a verifier . Initially the prover is given the statement and a witness if , and the verifier is given only the claimed statement .
(Zero-Knowledge proof) The protocol is is a zero-knowledge proof protocol for the relation if it satisfies the following requirements:
Intuitively, the zero-knowledge requirement states that, instead of running the protocol, the verifier can run instead to generate the views. So the verifier can ‘‘simulate’’ an execution of the protocol using only and random coins. Therefore what the verifier sees during the protocol does not increase the knowledge of .
This post is a modification from a course project with Yuanhao Wang, on zero knowledge during the Fundamentals of Cryptography, Fall 2018 taught by Prof Wenfei Wu from IIIS.
Oded Goldreich. Zero-Knowledge: a tutorial, 2010. tutorial. ↩
Shafi Goldwasser, Silvio Micali and Charle Rackoff. The Knowledge Complexity of Interactive Proof Systems. ↩
Oded Goldreich. Showing without telling, 2003. [Online, accessed 9-January-2019] Oded Goldreich’s page. ↩
Konstantinos Chalkias. Demonstrate how zero-knowledge proofs work without usingmaths, 2017. [Online, accessed 9-January-2019], LikedIn ↩
Oded Goldreich, Silvio Micali, and A. Wigderson. How to play any mental game or a com-pleteness theorem for protocols with honest majority. InProceedings of the NineteenthAnnual ACM Symposium on Theory of Computing, New York, NY, USA, 1987. ACM,ACM ↩