Jump to content

Proof of knowledge

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 134.58.253.131 (talk) at 17:50, 19 August 2006. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In cryptography, a proof of knowledge is an interactive proof in which the prover succeeds 'convincing' a verifier that it knows something. What it means for a machine to 'know something' is defined in terms of computation. A machine 'knows something', if this something can be computed, given the machine as an input. We are mostly interested in what can be proven by polynomical time machines. As the program of the prover, does not necessarily spit out the knowledge itself, as is the case for zero-knowledge proofs, a machine with a different program, called the knowledge extractor is introduced to capture this idea.

A proof of knowledege for relation with knowledge error is a two party protocol with a prover and a verifier with the following two properties:

  1. Completeness: if , the prover P who knows witness for succeeds in convincing the verifier of his knowledge. More formally:
  2. Validity: Validity requires that the success probability of a knowledge extractor in extracting the witness, given oracle access to a possibly malicious prover , must be at least as high as the success probability of the prover in convincing the verifier. This Property guarantees that no prover that doesn't know the witness can succeed in convincing the verifier.

Details on the definition

This is the rigorous definition of Validity:

There exists a polynomial-time machine , given oracle access to , such that for every and every , it is the case that and

is the set of all witnesses for public value , while the result signifies that the Turing machine did not come to a conclusion.

The knowledge error denotes the probability that the verifier might accept , even though the prover does in fact not know a witness . The knowledge extractor is used to express what is meant by the knowledge of a Turing machine. If can extract from , we say that knows the value of .

See also