2023-11-13 AnonCreds Working Group Meeting
Summary
PRs to the AnonCreds specification – checklist for completion
Project Update/Discussion: AnonCreds v1.0 in the W3C Verifiable Credentials Data Model Standard format
Update on AnonCreds v2.0 Work
Open Discussion
Call Link: https://zoom.us/j/97954159540?pwd=WWk3WmQ3MVh1SXBYZGVreGl0QllGdz09
Recording:
Notices:
This specification creating group operates under the Linux Foundation Community Specification License v1.0.
Hyperledger is committed to creating a safe and welcoming community for all. For more information please visit the Hyperledger Code of Conduct. |
|---|
Meeting Attendees
@Stephen Curran (BC Gov / Cloud Compass Computing Inc.) <swcurran@cloudcompass.ca>
@Steve McCown (Anonyome Labs) <smccown@anonyome.com>
@Artem Ivanov (DSR Corporation) <artem.ivanov@dsr-corporation.com>
Related Repositories:
AnonCreds Specification: https://hyperledger.github.io/anoncreds-spec/
AnonCreds Methods Registry: https://hyperledger.github.io/anoncreds-methods-registry
AnonCreds Rust Open Source Code: https://github.com/hyperledger/anoncreds-rs
Meeting Preliminaries:
Welcome and Introductions
Announcements:
anoncreds-clsignatures-rs
Any updates to the Agenda?
Agenda
Open Issues
PRs to Review
Design and planning – AnonCreds v1.0 in the W3C Verifiable Credentials Data Model Standard format
The BC Gov Code With Us on AnonCreds Rust – https://marketplace.digital.gov.bc.ca/opportunities/code-with-us/d81f1bb4-4abb-4a4c-8b19-92904e0bd6a6
PR with a starting point for discussing the design: https://github.com/hyperledger/anoncreds-rs/pull/266
Questions Raised:
JSON-LD processing on the contexts?
No
Identifier within the
CredentialSubject?No
Nested JSON and Arrays in AnonCreds credentials.
Not supported
Encoding scheme – move into AnonCreds or leave for the issuer?
Leave
Time of Day for the `IssuanceDate` field - random? Zeroed?
Use of the term "Data Integrity Proof" to differentiate AnonCreds and non-AnonCreds Data Integrity Proofs.
Simple vs. complex/size efficient encoding of the proof data into a single "proof" JSON item?
TBD – start simple
"mapping" of source VC attributes/predicates to the presentation request.
Using other than the AnonCreds presentation request model
No
Support in the AnonCreds library for signing W3C VC/VP Format Data Integrity Proofs with other Proof Types.
No
There might be some "devil in the details" in this. Do we have to add extra values (notably
issuer) to have a second signature?
Altering the format/Data Model of the Credential Offer and Request format.
No
Proposed AnonCreds library API changes.
For others to review
Using AnonCreds W3C format with OpenID4VCs. Can OpenID4VCs support the necessary Offer-Request-Issuer flow?
TBD
Downstream Code With Us opportunities for Aries Cloud Agent Python and Aries Framework JavaScript
Update on AnonCreds v2.0 Work
Updated README - PR
List of "To Do" Issues
ALLOSAUR
Question: Can someone that sees the data sent to the Revocation Manager learn anything about the sender? Is the data a correlatable identifier?
For example, if the holder passes the request to the Revocation Manager for an update uses a proxy?
Answer: The proxy would not learn anything about the holder – would not get a correlatable (linkable) identifer for the holder.
Potential Use Case:
Verifier requests proof from a holder.
Holder requests revocation updates from the verifier, who proxies the request to a revocation manager.
Verifier returns the response to the holder.
Holder uses the response in the presentation generation process to create the non-revocation proof.
Open discussion
Future Calls
To Dos:
Issue to talking about what AnonCreds verifies and what is left to the issuer to verify.
Revocation Interval
Approach to determine if the holder used an acceptable RevRegistry – see this Issue comment
Who calls the AnonCreds method to get the Revocation Registry from the ledger for verification
Verifier or AnonCreds?
To set "validation" to true/false based on the RevRegEntry timestamp in relation to the revocation interval? Presentation
Key points:
1. an RevRegEntry is “current” from the time it is written, to the time of the next RevRegEntry
2. “within the interval” is based on when a RevRegEntry is “current” (see 1.), not its timestamp.
3. AnonCreds or the Verifier (calling AnonCreds) should calculate “within interval” (using 2.) and mark verification true if the RevRegEntry used by the Prover is within the interval, else false.
Dangers:
False-Negatives: If a strict "timestamp used is between from, to" and not based on when a RevReg is "current" (per 2.), we will get "not verified" incorrectly.
False-Positives: If we don't do any checking of the timestamp and the interval, the holder could incorrectly use an old RevRegEntry.
4. General point: AnonCreds should return both a summary (true/false) and if false, additional data about why it was false.
Decision – add an optional `at_from_ts` set of entries, one per NRP, that AnonCreds can use for determining if the holder_ts is within the Presentation Request interval.
Action items
Adding support for W3C Format AnonCreds to the anoncreds implementation and the spec.
Links to be referenced in the spec and used where needed: