Zero knowledge proof for identity Quoting a blog authored by Vitalik Buterin regarding ZKP and Ethereum


  One natural use case for the technology is in identity systems. For
  example, suppose that you want to prove to a system that you are (i) a
  citizen of a given country, and (ii) over 19 years old. Suppose that
  your government is technologically progressive, and issues
  cryptographically signed digital passports, which include a person’s
  name and date of birth as well as a private and public key. You would
  construct a function which takes a digital passport and a signature
  signed by the private key in the passport as input, and outputs 1 if
  both (i) the date of birth is before 1996, (ii) the passport was
  signed with the government’s public key, and (iii) the signature is
  correct, and outputs 0 otherwise. You would then make a zero-knowledge
  proof showing that you have an input that, when passed through this
  function, returns 1, and sign the proof with another private key that
  you want to use for your future interactions with this service. The
  service would verify the proof, and if the proof is correct it would
  accept messages signed with your private key as valid.


I don't quite get why this would be considered a ZKP and not "simple key pair"
The key pair used to sign the proof is just a means of securely communicating with the service (it doesn't prove anything, it just establishes a means of proving data integrity, i.e. "I'm really the one who just sent you this proof, see, I signed it with my private key? -Oh, OK, I just verified with your public key; all good")

Now for the first key pair (since I don't know which key pair you are referring to by saying "simple key pair"):
Same thing, except here it's to prove the integrity of the passport. It was signed by a government, so all the data contained within it are certified by that government (one can't just modify his digital passport to appear older and whatnot).

The ZKP part of your question is hard to answer since it's very abstract in the quote you provided, but put simply:

You're not going to send your birthdate contained in your passport (as that would not be zero knowledge). A zero knowledge proof protocol would take (i), (ii), (iii) as input and provide a proof (to the service), without disclosing any of (i), (ii), (iii). Through such a protocol, the service would know (/be convinced of with a high probability) that you are indeed over 19 years old and that this information inside your digital passport has been certified by your government.

The difficulty here would be the ZKP protocol itself that would be able to provide such a proof.

The service won't receive your passport data, signature, or birthdate (encrypted or not with a key pair), but a proof of the statement "I am over 19 years old".

I hope I helped clarify this though I'm not sure. With a reference to the blog post I could maybe see the ZKP (if he provided it) he imagined to achieve this.