Let us say that we have 3 entities: an Issuer I
, a user/prover P
and a verifier V
.
V
trustsI
but does not trustu
u
wants to show that he respects some kind of property (eg. being over 18yo) toV
without revealing their whole birth dayV
possesses the data thatu
needs to convinceV
, eg. using a ZK-proof, butV
would not trust such a proof becauseu
could 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
u
should be aware of what informationV
wants to know, so we can't just letV
andI
communicate cutting out the user - the user has one or more statements issued and signed by
I
and wants to convinceV
that a claim about a statement (eg.u
wants to prove that he is 18yo, given a birth certificate/ID/passport signed byI
) without revealing the entire statement.
Thanks in advance