Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linked-Data based Verifiable Credentials with Selective Disclosure, Unlinkability, and Range Proofs

Linked-Data based Verifiable Credentials with Selective Disclosure, Unlinkability, and Range Proofs

Presented at Internet Identity Workshop (IIW) Asia 2022 on August 9, 2022.

Dan Yamamoto

August 09, 2022
Tweet

More Decks by Dan Yamamoto

Other Decks in Technology

Transcript

  1. Linked-Data based Verifiable Credentials with Selective Disclosure, Unlinkability, and Range

    Proofs August 9, 2022 IIW Asia Dan Yamamoto (Internet Initiative Japan Inc.) Yuji Suga (Internet Initiative Japan Inc.) Kazue Sako (Waseda University)
  2. Verifiable Credentials 2 ◼ W3C Recommendation: Verifiable Credentials Data Model

    (v1.1, March 2022) ◼ provides a mechanism to express digital credentials in a way that is cryptographically secure, privacy respecting, and machine-verifiable ◼ Examples: SMART Health Cards / IATA Travel Pass / Microsoft Entra Verified ID Holder Verifier Issuer Verifiable Credential (VC) Verifiable Presentation (VP) ⚫ name: John Smith ⚫ birthdate: 1980-01-01 ⚫ (issuer's signature)
  3. SMART Health Cards 3 ◼ Paper or digital versions of

    clinical information ◼ developed and standardized by VCI (Vaccination Credential Initiative) ◼ used in 15 nations: US, UK, Canada, Japan, ... image: https://vci.org
  4. SMART Health Cards 4 { "iss": "https://vc.vrs.digital.go.jp/issuer", "nbf": 1648956149.461584, //

    ~= 2022-04-03 "vc": { "type": ["https://smarthealth.cards#health-card",...], "credentialSubject": { "fhirVersion": "4.0.1", "fhirBundle": { ..., "entry": [ { "fullUrl": "resource:0", "resource": { "resourceType": "Patient", "name": [ ... , { "use": "official", "given": [ "DAN" ], "family": "YAMAMOTO", }], "birthDate": "xxxx-xx-xx" } }, { "fullUrl": "resource:1", "resource": { "resourceType": "Immunization", "status": "completed", "occurrenceDateTime": "2021-08-10", "vaccineCode": { "coding": [ { "system": "http://hl7.org/fhir/sid/cvx", "code": "207" } ] }, "patient": { "reference": "resource:0" }, "lotNumber": "9999999" ... Header Signature Issuer (JP Gov) Holder (Me) VC Verifier (Airport) VP JWT
  5. SMART Health Cards 5 { "iss": "https://vc.vrs.digital.go.jp/issuer", "nbf": 1648956149.461584, //

    ~= 2022-04-03 "vc": { "type": ["https://smarthealth.cards#health-card",...], "credentialSubject": { "fhirVersion": "4.0.1", "fhirBundle": { ..., "entry": [ { "fullUrl": "resource:0", "resource": { "resourceType": "Patient", "name": [ ... , { "use": "official", "given": [ "DAN" ], "family": "YAMAMOTO", }], "birthDate": "1980-05-03" } }, { "fullUrl": "resource:1", "resource": { "resourceType": "Immunization", "status": "completed", "occurrenceDateTime": "2021-08-10", "vaccineCode": { "coding": [ { "system": "http://hl7.org/fhir/sid/cvx", "code": "207" } ] }, "patient": { "reference": "resource:0" }, "lotNumber": "9999999" ... Header Signature Issuer (JP Gov) Holder (Me) VC Verifier (Airport) VP ✓ issued by: Japanese Government ✓ issued on: April 3, 2022 ✓ patient name: Dan Yamamoto ✓ got vaccinated on: August 10, 2021 ✓ vaccine code: 207 ✓ lot number: 9999999 JWT
  6. VC Flavors 6 JWT-based VC (e.g., SMART Health Cards) ✓

    Simple, easy to develop ✓ Many real world instances  No selective disclosure  VCs & VPs are linkable doc format = JSON proof format = JWT sig scheme = RSA, ECDSA, EdDSA, ... Holder Verifier VP Issuer VC ✓ issued by: Japanese Government ✓ issued on: April 3, 2022 ✓ patient name: Dan Yamamoto ✓ got vaccinated on: August 10, 2021 ✓ vaccine code: 207 ✓ lot number: 9999999 ✓ ... must reveal all attributes for verification Holder Verifier Issuer Linkable via signature values
  7. VC Flavors 7 JWT-based VC (e.g., SMART Health Cards) ✓

    Simple, easy to develop ✓ Many real world instances  No selective disclosure  VCs & VPs are linkable Ours: LD&ZKP-enabled VC (an extension of LDP-BBS2020) doc format = JSON proof format = JWT sig scheme = RSA, ECDSA, EdDSA, ...  Relatively complicated  Still work in progress ✓ Selective disclosure ✓ Unlinkability doc format = JSON-LD proof format = Data Integrity sig scheme = BBS+ {ZK}
  8. LD&ZKP-enabled Health Cards 8 Issuer (JP Gov) Holder VC Verifier

    (Airport) did:example:xyz : Person name = Dan Yamamoto http://example.org/cred#123 : VerifiableCredential issuanceDate = 2022-04-03 issuer = JP Gov proof = (type, pk, sig) credentialSubject #01 : Immunization date = 2021-08-10 lotNumber = 9999999 isPatientOf http://hl7.org/ fhir/sid/cvx#207 : Vaccine vaccineCode • issued by: Japanese Government • issued on: April 3, 2022 • patient name: Dan Yamamoto • got vaccinated on: August 10, 2021 • vaccine code: 207 • lot number: 9999999 JSON-LD Data Integrity
  9. Selective Disclosure & Unlinkability & Range Proofs 9 Issuer (JP

    Gov) Holder VC Verifier (Airport) VP did:example:xyz : Person name = Dan Yamamoto http://example.org/cred#123 : VerifiableCredential issuanceDate = 2022-04-03 issuer = JP Gov proof = (type, pk, sig) credentialSubject #01 : Immunization date = 2021-08-10 lotNumber = 9999999 isPatientOf http://hl7.org/ fhir/sid/cvx#207 : Vaccine vaccineCode did:example:xyz : Person name = Dan Yamamoto http://example.org/cred#123 : VerifiableCredential issuanceDate = 2022-04-03 issuer = JP Gov proof = (type, pk, sig) credentialSubject #01 : Immunization date = 2021-08-10 lotNumber = 3004501 isPatientOf http://hl7.org/ fhir/sid/cvx#207 : Vaccine vaccineCode ********************** ********************** selectively disclosable attributes sig → ZKP ) show ZKP of signatures (instead of signatures) for unlinkability ******************* ********************************* *** ******************* ******************* >= 2021-08 range proofs
  10. Possible Future Use Cases 10 Issuer (JP Gov) Holder VC

    1 did:example:xyz : Person name = Dan Yamamoto http://example.org/cred#123 : VerifiableCredential issuer = JP Gov; proof = ... credentialSubject #01 : Immunization date = 2021-08-10 lotNumber = 9999999 isPatientOf http://hl7.org/ fhir/sid/cvx#207 : Vaccine vaccineCode VC 2 http://example.org/cred#999 : VerifiableCredential issuer = VCLP; proof = ... http://hl7.org/fhir/sid/cvx#207 : Vaccine name = Spikevax manufacturer = http://modernatx.com status = active credentialSubject Issuer (Vaccine Code List Provider)
  11. Possible Future Use Cases 11 Issuer (JP Gov) Holder VC

    1 did:example:xyz : Person name = Dan Yamamoto http://example.org/cred#123 : VerifiableCredential issuer = JP Gov; proof = ... credentialSubject #01 : Immunization date = 2021-08-10 lotNumber = 3004501 isPatientOf http://hl7.org/ fhir/sid/cvx#207 : Vaccine vaccineCode http://example.org/cred#999 : VerifiableCredential issuer = VCLP; proof = ... http://hl7.org/fhir/sid/cvx#207 : Vaccine name = Spikevax manufacturer = http://modernatx.com status = active credentialSubject Verifier (Airport) VP VC 2 combine two VCs (as Linked Data) with Selective Disclosure & ZKP ****** 𝑋1 ******* ****************** ************************** *𝑋2 * ****************** ***** 𝑋3 ***** ************** ************* 𝑋3 *************** ********************************** ********************************** *************************** ❝ I (anonymized) was vaccinated on 2021-08-10 with a vaccine (anonymized) approved as ACTIVE, asserted by JP Gov & Vaccine Code List Provider❞ ZKP of Vaccination Issuer (Vaccine Code List Provider)
  12. Other Use Cases: ZKP of Employer 12 ❝ I (anonymized)

    work for a company (anonymized) that received the Top 100 award, asserted by Local Gov & GLEIF-like organization ❞ did:ex:abc : Person name = John https://corp : Corporation name = Corp worksFor https://corp : Corporation award = Top 100 https://cred1 : VerifiableCredential issuer = Local Gov https://cred2 : VerifiableCredential issuer = GLEIF-like credentialSubject credentialSubject Employee Credential Legal Entity Registry (Open Data) *** 𝑋1 *** *** 𝑋2 *** *** 𝑋2 *** ***** 𝑋4 ***** ***** 𝑋3 ***** ********* *********
  13. Other Use Cases: ZKP of Residence 13 ❝ I (anonymized)

    live in a place (anonymized) that is geographically located in (35.69, 139.74) --- (35.70, 139.75), asserted by Local Gov & Land Department ❞ did:ex:a : Person name = John Smith birthDate = 2000-04-01 #f1bc9.. : Address address #f1bc9.. : Address lat = 35.6987 lon = 139.7471 country = JP localAddress = Yokohama https://cred1 : VerifiableCredential issuer = Local Gov https://cred2 : VerifiableCredential issuer = Land Dept credentialSubject credentialSubject Electronic Identitfication (eID) Address Registry (Open Data) *** 𝑋1 *** 35.69 < x < 35.70 139.74 < x < 139.75 *** 𝑋2 *** *** 𝑋2 *** ********* ****************** ****************** **** 𝑋3 **** **** 𝑋4 ****
  14. @zkp-ld Implementations and Demo 14 ◼ @zkp-ld/jsonld-signatures-bbs ◼ @zkp-ld/bls12381-key-pair ◼

    @zkp-ld/bbs-signatures Implementations (published on Github and npm) ◼ a playground for developers ◼ you can sign & verify LD-based credential and show & verify presentations on browser ◼ with Selective Disclosure, Unlinkability, and (partially implemented) Range Proof ZKP-LD Playground <https://zkp-ld.org> jsonld-bbs-signatures (TS) bbs-signatures (TS + Rust) bls12381-key-pair (TS) zkp-ld-playground (React/TS) @mattrglobal fork
  15. Implementation Details @zkp-ld jsonld-bbs-signatures (TS) bbs-signatures (TS + Rust) bbs

    (Rust) bls12381-key-pair (TS) zkp-ld-playground (React/TS) @mattrglobal fork bulletproofs_amcl (Rust) MIRACL (旧 Apache Milagro Cryptographic Library) (Rust, C++) Hyperledger ursa fork pairing-plus (algorand) (Rust) (different implementations for the same BLS12-381 curve) Application BBS+ frontend BBS+ backend + Bulletproofs Pairing-Friendly Curves 15
  16. Summary 16 Conclusions ⚫ Constructed a LD&ZKP-enabled VC scheme with

    selective disclosure, unlinkability, and range proofs ⚫ Proposed novel use cases using LD&ZKP-enabled VCs ⚫ Provided prototype implementations and Web-based demo Work in Progress & Future Work ⚫ Issuer-Hiding presentations ⚫ Holder-Binding credentials ⚫ Credentials with Pairwise Pseudonymous IDentifiers (PPIDs) ⚫ LD2JWP (Linked Data to JSON Web Proofs) Serialization ⚫ Revocation
  17. References 17 ◼ [FHS19] G. Fuchsbauer, C. Hanser, and D.

    Slamanig, “Structure-preserving signatures on equivalence classes and constant-size anonymous credentials,” Journal of Cryptology, vol. 32, no. 2, pp. 498–546, Apr. 2019. ◼ [TG20] S.-Y. Tan and T. Groß, “MoniPoly - an expressive q-SDH-based anonymous attribute- based credential system,” in ASIACRYPT 2020, Part III, ser. LNCS, S. Moriai and H. Wang, Eds., vol. 12493. Springer, Heidelberg, Dec. 2020, pp. 498–526. ◼ [S20] O. Sanders, “Efficient redactable signature and application to anonymous credentials,” in PKC 2020, Part II, ser. LNCS, A. Kiayias, M. Kohlweiss, P. Wallden, and V. Zikas, Eds., vol. 12111. Springer, Heidelberg, May 2020, pp. 628–656. ◼ [SP21] O. Steele and M. Prorock, “JSON Web Proofs for Binary Merkle Trees,“ https://w3c- ccg.github.io/Merkle-Disclosure-2021/jwp/ ◼ [FY22] D. Fett and K. Yasuda, “Selective Disclosure JWT (SD-JWT),“ Internet-Draft, Jul. 2022, https://datatracker.ietf.org/doc/draft-fett-oauth-selective-disclosure-jwt/02/ ◼ [MJ22] J. Miller and M. Jones, “JSON Proof Algorithms,“ Internet-Draft, Jul. 2022, https://www.ietf.org/archive/id/draft-jmiller-jose-json-proof-algorithms-00.html ◼ [ISO/IEC 27551] ISO/IEC 27551:2021, Information security, cybersecurity and privacy protection — Requirements for attribute-based unlinkable entity authentication