-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ZKP implementation - why proof and schema mandatory within derived VC? #726
Comments
The proof within the derived credential is a zero-knowledge proof of signature. This proof must necessarily be included in each derived credential, as each credential may have been issued by a different issuer and according to a different schema.
The proof contained in the verifiable presentation proves that each of the derived credentials were issued to the same holder. Whether this is done using a link secret, or a holder seal, or simply by proving in zero knowledge that two semantically identical properties contain the same value, this proof belongs in the presentation because it connects all of the derived credentials.
My understanding of idemix (and CL signatures in general) is that the proof created upon presentation actually contains several sub-proofs. Please correct me if I am mistaken, but the sub proofs I am aware of include the following:
The first three sub-proofs naturally fit within the context of a single derived credential, so they would go in the required VC proof section.
If the issuer's public key (for the credential) is included in the resolved URI of the issuer, how does one differentiate between multiple credential types offered by a single issuer? Each of these credential types will need a different set of public keys.
The |
Ok, that is interesting.
Ok, so I know that within IRMA each issuer just has one currently valid public key. Other credential types won't get different public keys (see for more details https://irma.app/docs/schemes/).
Ok, now I understand it better. Thx for clarification! Can it remain open or should this discussion be moved to the public mailing list? Regards, |
The VCWG ended at the end of September. It may be going into maintenance mode in the next few months, but there is currently little to no WG activity, and even if a maintenance charter is approved, no substantive changes to the spec will be allowed. |
Ok, where do you think is more activity? Within IRMA, am getting there but need to figure out some small details. |
I'm not sure if this got resolved in the mailing list, but we're currently creating invalid VCs due to credential schema being required. @brentzundel you made the following comment:
This makes sense to me for Indy / CL credentials, but for BBS+ LD Proofs we don't have the need for a schema at the moment. Or am I missing something important here? We're not using schemas and adding one just to be compliant with the spec doesn't make sense to me. Any suggestions on this? |
I presume the requirement that is being referred to is this:
I think this language was a mistake, was probably done because of too much focus on CL signatures, and, ultimately, isn't really enforceable. It's quite unclear what it even means to say "when a verifiable credential is to be used in a zero-knowledge proof system". The spec does not define what a "zero-knowledge proof system" is. The spec references the "Camenisch-Lysyanskaya Zero-Knowledge Proof system", but clearly more general spec language makes it clear that the WG never intended to only support CL signatures. So -- is a "zero-knowledge proof system" a system in which only ZKPs are used? Does it refer only to the "cryptosystem"? What if the cryptosystem supports non-ZKPs as well? It seems that you just need to ensure that you define your "system" to be sufficiently broad enough to include other types of proofs and then the (erroneous) requirement no longer applies. So, define BBS+ or the system in which you use BBS+ proofs as a hybrid system, thus enabling VCs with BBS+ proofs to be used without a |
Thanks @dlongley. This makes sense |
The issue was discussed in a meeting on 2021-09-08
View the transcript5.2. ZKP implementation - why proof and schema mandatory within derived VC? (issue vc-data-model#726)See github issue #726. Brent Zundel: Alright. The next issue we are looking at is #726. David Chadwick: This should be done by ZKP implementers, since they know what they are talking about. Brent Zundel: which means it probably should be me, if it's going to be done. |
I made a first cut at addressing this issue in #818 Let's see where that takes us. |
The issue was discussed in a meeting on 2021-09-15
View the transcript5.1. ZKP implementation - why proof and schema mandatory within derived VC? (issue vc-data-model#726)See github issue #726. Kyle Den Hartog: First one I'm seeing is issue 726... Brent Zundel: Do we feel that the PRs that are open address these issues specifically?
Brent Zundel: For this one, I believe yes Kyle Den Hartog: Looks like yes, in IRC chat... I'll assume it's good to go. |
Hi,
if within IRMA (https://irma.app/docs/zkp/) at least two attributes from different credentials are disclosed, the computed ZKP (based on the Idemix specification) is one message which also proofs that the credentials belong to the same holder.
If within VC I want to compute a verifiable presentation with ZKP, it states that each derived VC must contain
"Proof, using the proof property, that can be used to derive verifiable presentations that present information contained in the original verifiable credential in zero-knowledge. The zero-knowledge verifiable presentation must not reveal any information not intended to be revealed by the holder."
But also
"The verifiable presentation MUST contain a proof property to enable the verifier to ascertain that all derived verifiable credentials in the verifiable presentation were issued to the same holder without leaking personally identifiable information that the holder did not intend to share. "
So am not sure if this two statements are valid as within IRMA I just need one proof that will be attached to the presentation, but each derived VC does not necessarily need a proof property to make it work.
Also, I don't completely understand what needs to be contained within a credentialSchema as this is mandatory within a ZKP scenario.
E.g. the issuers public key will be included in the resolved URI of the issuer so it would be good to maybe add an example of a credentialSchema within the ZKP section? The credential definition is defined via the type to my understanding.
Kind regards,
Daniel Ostkamp
The text was updated successfully, but these errors were encountered: