2024-03-18 AnonCreds Working Group Meeting
Summary
- Status Updates on AnonCreds in W3C VCDM Format projects
- Revocation Manager for ALLOSAUR and AnonCreds – Design
- Schema Object for Complex JSON Objects – Discussion
- Open Discussion
Time: 7:00 Pacific / 16:00 Central Europe
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.
cifi | 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>
Related Specifications and Repositories:
- AnonCreds v1.0:
- The v1.0 specification is published here: https://hyperledger.github.io/anoncreds-spec/
- The Working Group uses this GitHub repository to manage the specification: https://github.com/hyperledger/anoncreds-spec
- The AnonCreds Methods Registry: https://hyperledger.github.io/anoncreds-methods-registry
- The v1.0 implementation in Rust is here: https://github.com/hyperledger/anoncreds-rs
- The v1.0 implementation is dependent on this Rust CL Signatures implementation: https://github.com/hyperledger/anoncreds-clsignatures-rs
- AnonCreds v2.0
- The initial framework for the v2.0 specification repository is here: https://github.com/hyperledger/anoncreds-spec-v2
- The v2.0 implementation in Rust is here: https://github.com/hyperledger/anoncreds-v2-rs
- Underlying AnonCreds v2.0 are cryptographic libraries in Hyperledger Labs Agora
Meeting Preliminaries:
- Welcome and Introductions
- Announcements:
- IIW – April 16-18, 2024
- Workshop Wed. April 24th: Zero Knowledge Proofs and ZK Programming in Blockchain Application Development
- Any updates to the Agenda?
Agenda
- AnonCreds in W3C VCDM Format - Status/Updates
- Test Vectors Repo: https://github.com/TimoGlastra/anoncreds-w3c-test-vectors
- Credo / Bifold Progress
- ACA-Py Progress
- ALLOSAUR/AnonCreds Revocation Manager Component – what is it, design? ALLOSAUR/AnonCreds Credential Status Manager (reflects
- Presentation
- Hyperledger Mentorship Program
- Proposed Hyperledger Mentorship project: AnonCreds Revocation Manager Component Implementation
- On the Ledger:
- RevRegDef: ID, Public Key, Accumulator, RM URLs
- RevRegEntry: Accumulator (no list of changed status)
- Is this NIST-compliant?
- NIST has no approved pairing cryptography libraries, and this is based on pairing cryptography
- Uses BLS12381 – which is used by many of the blockchains, BBS+, etc. – stronger curve – zCash and others
- Update on the Hyperledger Labs Agora Libraries
- Contributions this week – audits are completed
- Audit Complete: BLSFUL – https://github.com/mikelodder7/blsful - powers the ALLOSAUR library, replaces what is currently in AnonCreds v2
- Audit Complete: Gennaro – https://github.com/mikelodder7/gennaro-dkg – distributed key generator
- Being audited: Verifiable Secret Sharing – https://github.com/mikelodder7/vsss-rs
- Plan is to ALLOSAUR into Agora as well
- Contributions this week – audits are completed
- PS vs. BBS+ Attributes
- Aside: Rumour has it that a PS key size changes based on number of attributes to sign. If so, does that impact support for arrays in complex JSON?
- PS must know the maximum number of claims you are going to sign at credential definition time. Tradeoff of key size vs. number of claims.
- PS vs. BBS+ relates to threshold signing.
- PS has stronger security proofs.
- PS – smaller and faster to generate
- Nice point – could choose based on use case.
- Aside: Rumour has it that a PS key size changes based on number of attributes to sign. If so, does that impact support for arrays in complex JSON?
- Complex JSON in AnonCreds – ideas for the Schema Object
- Thinking about AnonCreds V2 with complex JSON, and what the Schema would look like.
- In V2, there are is metadata per VC attribute that provides input into the encoding for the element -- e.g., it's a string, an integer, an integer range, a date, an enumerated set, scalar (e.g. link secret).
- Example of a simple schema to show the metadata: https://github.com/swcurran/anoncreds-v2-rs/blob/samples/examples/schema-with-linked-secret.json
- Question – how do we manage the schema when we need to support complex JSON (structures, arrays).
- Idea 1: Use JSON.Path so we are back to a list of attributes
- Schema is a flat list like we have in AnonCreds v1, but attribute names are in JSON Path format.
- Metadata is attached to each attribute in the (flat) list.
- Idea 2: Use JSON-LD
- How much would JSON-LD help with this?
- Probably not much
- Is there already enough data to tell us much of those things?
- I would guess not. It could have a lot of it, but not all that we need.
- Completely dependent on the use case – definitely not guaranteed. Must be able to supplement it.
- What tools are there to see for a given JSON-LD document what attributes we know about each attribute?
- Tools are available.
- Would it make sense to use JSON-LD and supplement attributes as needed?
- Question for the JSON-LD crowd.
- How much would JSON-LD help with this?
- Idea 3: Combine the two
- Use JSON-LD for much of the data
- Use JSON.PATH to add additional metadata when needed to specific items.
- Idea 4: Pure JSON-LD, adding new "features" to get support for what we need
- Don't really know what this entails...
- Idea 1: Use JSON.Path so we are back to a list of attributes
- Open Discussion
To Dos:
Action items
- Links to be referenced in the spec and used where needed: