2J/ Intro to Verifiable Cliams by W3C VCWG Members

From IIW

Verifiable Claims by the W3C


Wednesday 2J

Convener: John Tibbetts

Notes-taker(s): Dan Finlay


Discussion notes, key understandings, outstanding questions, observations, and, if appropriate to this discussion: action items, next steps: Trebuchet 11


Verifiable claims are a data format for encoding claims & their verifiability!


Does not have opinions on storage or transmission strategies, only defines schema & format.


Use cases:

  • Loyalty Cards
  • Digital Receipts
  • Digital Offers
  • Education
  • (unofficially) Refugees


The document has 4 components:

  • Subject Identifier
  • Claims about Subject
  • Claims Set Metadata
  • Digital Signature by Issuer


Claims About Subject Example:

{

“@context”: “https://w3id.org/credentials/v1”, // defines spec in detail.

id: http://example.gov/credentials/13431,

type: [“Credential”, “ProofOfAge”],

issuer: “dmv.gov”,

issued: “2010-01-01”,

claim: {

id: “did:method:aeorihareiahr”,

ageOver: “21” // Can include any number of claims per document.

},

signature: { … }

}


Signature Example


{

type: “RsaSignature2016”,

created: …

creator: link_to_key,

domain: “www.example.com”,

nonce: “9824592db”,

signatureValue”: “BavE110/I1oahera…”  // Dependent on signature type

}


You can play with this serialization format on JSON-LD Playground

http://json-ld.org/playground/


Pelle Brandegard from uPort objects to using JSON-LD as the base format, since it has a lot of required metadata fields, increasing the claim size by about 3-5x. Suggests taking more inspiration directly from JSON Web Tokens instead.


Nathan George from SOVRN agrees that they have been treating many of these metadata fields as optional, and that the standard might want to consider making some of the JSON-LD metadata fields officially optional.


Additional notes from Colin Jaccino


A document in which you can a cert a set of attributes about an entity or set of entities.


Components of a verifiable claim:

- Set of verifiable claims

- Subject Identifier
- Claims about a subject
- claim set metadata
- digital signature by issuer


Three use cases:

  Loyalty Cards

  Digital Authors

  Education


Subject Identifier 

{

“id”: “http://example.cov.credentials/3732”,

"type: [“Credential,”, “ProofOfAgeCredential”]

“issuer”: “https://dmv.example.gov”,

“issued”: “…date…”,

“claim”: “did:method:8719238471234”,

“ageOver”: 21

}

“signature”: “{ _ }”

}


Notes by John Tibbets


Verifiable Claims

Data Model Deep Dive

IIW 24

Wednesday, 10:30 AM

By John Tibbetts, Joe Andrieu, Nathan George, Drummon Reed

Deck created by Manu Sporny


Components of a Verifiable Claim

  • Set of Verifiable Claims
  • Digital Signature by Issuer
  • Claims about Subject
  • Subject Identifier
  • Claim Set Metadata


Components of a Verifiable Claim

  • Set of Verifiable Claims
  • Digital Signature by Issuer
  • Claims about Subject
  • Subject Identifier
  • Claim Set Metadata

{

    "id": "http://example.gov/credentials/3732",

    "type": [

        "Credential",

        "ProofOfAgeCredential"

    ],

    "issuer": "https://dmv.example.gov",

    "issued": "2010-01-01",

    "claim": {

        "id": "did:method:f36100c0-1dfb-957c-e403f8b0dbd5",

        "ageOver": 21

    },

    "signature": {

    }

}


Components of a Verifiable Claim

  • Set of Verifiable Claims
  • Digital Signature by Issuer
  • Claims about Subject
  • Subject Identifier
  • Claim Set Metadata

{

    "id": "http://example.gov/credentials/3732",

    "type": [

        "Credential",

        "ProofOfAgeCredential"

    ],

    "issuer": "https://dmv.example.gov",

    "issued": "2010-01-01",

    "claim": {

        "id": "did:method:f36100c0-1dfb-957c-e403f8b0dbd5",

        "ageOver": 21

    },

    "signature": {

    }

}


Components of a Verifiable Claim

  • Set of Verifiable Claims
  • Digital Signature by Issuer
  • Claims about Subject
  • Subject Identifier
  • Claim Set Metadata

{

    "id": "http://example.gov/credentials/3732",

    "type": [

        "Credential",

        "ProofOfAgeCredential"

    ],

    "issuer": "https://dmv.example.gov",

    "issued": "2010-01-01",

    "claim": {

        "id": "did:method:f36100c0-1dfb-957c-e403f8b0dbd5",

        "ageOver": 21

    },

    "signature": {

    }

}


Components of a Verifiable Claim

  • Set of Verifiable Claims
  • Digital Signature by Issuer
  • Claims about Subject
  • Subject Identifier
  • Claim Set Metadata

{

    "id": "http://example.gov/credentials/3732",

    "type": [

        "Credential",

        "ProofOfAgeCredential"

    ],

    "issuer": "https://dmv.example.gov",

    "issued": "2010-01-01",

    "claim": {

        "id": "did:method:f36100c0-1dfb-957c-e403f8b0dbd5",

        "ageOver": 21

    },

    {

    "signature": {

        "type": "RsaSignature2016",

        "created": "2016-06-18T21:19:10Z",

        "creator": "https://dmv.va.gov/keys/1",

        "domain": "www.example.com",

        "nonce": "598c63d6",

        "signatureValue": "BavEll0/I1zpY...W3JT24="

    }

}


Why Linked Data?

  • Global meaning for “attributes”
  • Open-world assumption (say anything about anything)
  • Native support for URLs (linking to other information)
  • Graph-based data model aligned with the Web
  • Data model natively supports querying and merging
  • Maps to multiple syntaxes
  • Rich data typing
  • Link to external resources creating a “knowledge graph”


What is Linked Data?

  • Linked Data allows resources to unambiguously refer to each other
  • Statements about a Person or Claim use URLs to describe those things
  • URLs are links, which can be used to find out more information about that thing.E.g.: to say a Claim is a “Credential”, causes “Credential” to be resolved to “https://w3id.org/identity#Credential”. Dereferencing that leads to a description of “Credential” (or will, eventually).
  • JSON-LD describes statements which relate entities with each other, or describe literal attributes of that entity.
  • Each statement becomes a triple in the RDF data model
  • Collections of statements become a graph
  • JSON-LD can be turned into triples, and triples back into JSON-LD using core algorithms


Linked Data

  • Linked (Open) Data – Separate the past from the future
  • RDF is about the links, not the syntax
  • Use URLs as names for things
  • When someone looks up a URL, provide useful information using standards
  • Link to other URLs, allowing discovery of new things
  • JSON-LD is an RDF format


But I Don’t Care About Linked Data!

  • JSON-LD is designed to be unobtrusive
  • Treat it like JSON
  • Most developers don’t have to care - that’s the goal
  • We should be open to people rejecting Linked Data
  • Verifiable Claims should continue to work if this happens


CTI Credentials

  • Express CTI credentials via VC
  • Launched by Lumina Foundation
  • A global registry includes defined achievements of many types: competencies, apprenticeships, degrees, badges, certificates