# Implementing a zero-knowledge proof [duplicate]

I'm trying to get my head around zero-knowledge proofs and my definition of a zero-knowledge proof is as follows.

A zero-knowledge proof is a method by which one party can prove to another party that they know a secret value, without sharing any data about this secret value.

To implement a zero-knowledge proof some data will need to be exchanged.

With that in mind, is the following assertion correct?

• To implement a zero-knowledge proof, data can be exchanged but this data should not contain any information about the secret value?

If the above holds true, could a digital signature be classified as a zero-knowledge proof?

• Zero knowledge happen to be a mine field in terms of definitions. Do pay attention and refer to sources of your definition. Zero knowledge is simulator algorithm having certain properties. Sep 5, 2018 at 11:18

Your initial definition is imprecise

A zero-knowledge proof is a method by which one party can prove to another party that they know a secret value, without sharing any data about this secret value.

This is not merely a zero-knowledge proof, but it is a zero-knowledge proof of knowledge. A zero-knowledge proof is more general, it can be proving a statement that may or may not relate to a secret.

Is the following assertion correct?

To implement a zero-knowledge proof, data can be exchanged but this data should not contain any information about the secret value?

No this assertion is too loose. Not only the data must not contain any information about the secret value, but it must not contain any new information, or anything that could not have been generated without knowing the secret.

A digital signature is a piece of data that cannot be generated without knowledge of the secret. It is a proof of knowledge, but it is not zero-knowledge because it is leaking some information.

I can take that signature and use it on its own, to claim the following statement: "someone knows the secret". This was not possible before the exchange.

All of the data exchanged must be trivial to create on its own, the proof is only valid from the point of view of the verifier producing the challenges, in a statistical sense.