Under the assumption that encryption functions exist, we show that all languages in NP possess zero-knowledge proofs. That is, it is possible to demonstrate that a CNF formula is satisfiable without revealing any other property of the formula.
In particular, without yielding neither a satisfying assignment nor weaker properties such as whether there is a satisfying
assignment in which x
1 = TRUE, or whether there is a satisfying assignment in which x
1 = x
3 etc.
The above result allows us to prove two fundamental theorems in the field of (two-party and multi-party) cryptographic protocols.
These theorems yield automatic and efficient transformations that, given a protocol that is correct with respect to an extremely
weak adversary, output a protocol correct in the most adversarial scenario. Thus, these theorems imply powerful methodologies
for developing two-party and multi-party cryptographic protocols.