Let us say that we have 3 entities: an Issuer I , a user/prover P and a verifier V.
VtrustsIbut does not trustuuwants to show that he respects some kind of property (eg. being over 18yo) toVwithout revealing their whole birth dayVpossesses the data thatuneeds to convinceV, eg. using a ZK-proof, butVwould not trust such a proof becauseucould easily use a fake date
How would you design a protocol such that V is assured that the claim u makes is legitimate (that is, that claim was issued by I)?
A first idea would be to use both public key signature (so, V sends u a signature of its date, so that even if u decides to use a fake date, the cannot provide a correct signature for that) and ZK-proof so that u provides only the strictly required informations to V. V would then check that the ZK-proof is correct and that the private input fed into the ZK-circuit is signed by I.
Some clarifications after Geoffroy's comment:
- the user
ushould be aware of what informationVwants to know, so we can't just letVandIcommunicate cutting out the user - the user has one or more statements issued and signed by
Iand wants to convinceVthat a claim about a statement (eg.uwants to prove that he is 18yo, given a birth certificate/ID/passport signed byI) without revealing the entire statement.
Thanks in advance