Verifiable Claims WG
TPAC Sessions
Day 1: Thursday October 25, 2018
Chairs: Matt Stone, Dan Burnett
Location: Saint Clair 1, Level 2 - Saint-Clair
1
Agenda: Thursday October 25
2
Date | Time | Topic | Discussion Leader |
10/25/2018 | 8:00 | W3C TPAC General Registration | |
10/25/2018 | 8:30 | Welcome, Introductions, and Logistics | Chairs |
10/25/2018 | 9:00 | Getting to Candidate Recommendation | Chairs |
10/25/2018 | 9:30 | 2018 commercial update status | Manu |
10/25/2018 | 10:00 | Break | |
10/25/2018 | 10:15 | WCIG Joint Session | Manu |
10/25/2018 | 11:30 | Use Cases & Problem Domains | JoeA |
10/25/2018 | 12:30 | Lunch | |
10/25/2018 | 13:30 | Digital Contracts (joint with WCIG) | Allen Brown |
10/25/2018 | 14:30 | | |
10/25/2018 | 15:00 | Break | |
10/25/2018 | 15:30 | Threat Model/Trust Model/Security | Brent Zundel |
10/25/2018 | 16:30 | Test Suite | Ganesh Annan |
Welcome!
3
Logistics
4
IRC and Scribes
5
| Thursday | Friday |
AM1 | Nathan | Richard Esplin |
AM2 | DChadwick | Ken |
PM1 | Brent | Dmitri |
PM2 | Matt | |
W3C WG IPR Policy
6
Introductions & Dinner
7
VCWG Mission and Goals
VCWG Scope
What does that mean -- and what isn’t it?
Verifiable Credentials allow
Verifiable Credentials DON’T
Documents and Background
11
Agenda: Thursday October 25
12
Date | Time | Topic | Discussion Leader |
10/25/2018 | 8:00 | W3C TPAC General Registration | |
10/25/2018 | 8:30 | Welcome, Introductions, and Logistics | Chairs |
10/25/2018 | 9:00 | Getting to Candidate Recommendation | Chairs |
10/25/2018 | 9:30 | 2018 commercial update status | Manu |
10/25/2018 | 10:00 | Break | |
10/25/2018 | 10:15 | WCIG Joint Session | Manu |
10/25/2018 | 11:30 | Use Cases & Problem Domains | JoeA |
10/25/2018 | 12:30 | Lunch | |
10/25/2018 | 13:30 | Digital Contracts (joint with WCIG) | Allen Brown |
10/25/2018 | 14:30 | | |
10/25/2018 | 15:00 | Break | |
10/25/2018 | 15:30 | Threat Model/Trust Model/Security | Brent Zundel |
10/25/2018 | 16:30 | Test Suite | Ganesh Annan |
Agenda: Friday October 26
13
Date | Time | Topic | Discussion Leader |
10/26/2018 | 8:00 | Good Morning, Agenda preview | Chairs |
10/26/2018 | 8:30 | ZKP style/spec alignment | Brent Zundel |
10/26/2018 | 9:30 | From issue #207 - Rename Claim to Subject | David Chadwick |
10/26/2018 | 10:00 | Morning Break | |
10/26/2018 | 10:30 | Terms of Use/Rights/Authorization/Delegation | David Chadwick, Chris Webber |
10/26/2018 | 11:30 | PING meeting | |
10/26/2018 | 12:30 | Lunch | |
10/26/2018 | 13:30 | Recharter (or not)? (2019 plan/adoption strategy) | Chairs |
10/26/2018 | 15:00 | JWT and JSON-LD industry direction | Christopher Allen? |
10/26/2018 | 16:00 | Break | |
10/26/2018 | 16:30 | Open issues/PRs | |
10/26/2018 | 17:00 | Open Topics, Close TPAC | |
Potential topics for “Open Topics” session
14
Getting to Candidate Recommendation
Time: 9:00-9:30
Leader: Chairs
15
Getting to Candidate Recommendation (30min)
Chairs
16
W3C Technical Report Progression Process (Dan)
17
Deliverable Review (Matt)
Recommendation Track
WG Notes
18
Deliverable status (Matt)
19
Deliverable status (Matt)
WG Notes
20
Timing (Matt)
21
March 2019
February 2019
January 2019
November 2018
TPAC 2018
Big Audacious Goal for TPAC
Resolve all outstanding issues to support first CR in November �through PR, closure, or deferral
22
What are we missing? (Dan)
23
2018 Commercial Status Update
Time: 9:30-10:00
Leader: Manu
24
Verifiable Credentials
2018 - State of Adoption and Deployment
25
W3C Member Confidential
Education
26
W3C Member Confidential
Publishing
27
W3C Member Confidential
Financial Services
28
W3C Member Confidential
Insurance
29
W3C Member Confidential
Workforce
30
W3C Member Confidential
Trade and Logistics
31
W3C Member Confidential
All Supporting Organizations
32
W3C Member Confidential
Break
33
WCIG Joint Session
Time: 10:15-11:30
Leader: Manu Sporny
34
Joint WCIG Session
Location: Roseraie 3, Level 3 - Roseraie
WCIG Agenda: https://www.w3.org/WebCommerce/IG/wiki/Main_Page/FTF_Oct2018
35
Use Case and Problem Domain Review
Time: 11:30-12:30
Leader: Joe Andrieu
36
Problem Domains (fka Needs Map)�https://w3c.github.io/vc-use-cases/
37
Problem Domains (fka Needs Map)�https://w3c.github.io/vc-use-cases/
Domain Check (20 min)
38
Problem Domains (fka Needs Map)�https://w3c.github.io/vc-use-cases/
Within each domain (4 min ea):
39
Lunch
40
WCIG Joint Session: Digital Contracts
Time: 13:30-14:30
Leader: Allen Brown
41
Joint WCIG Session: Digital Contracts
Location: Roseraie 3, Level 3 - Roseraie
WCIG Agenda: https://www.w3.org/WebCommerce/IG/wiki/Main_Page/FTF_Oct2018
42
Open Issue Discussion
Time: 14:30-15:00
Leader: Chairs
43
Break
44
Threat Model,
Trust Model,
Security
Time: 15:30-16:30
Leader: Brent Zundel
45
Goals for this Session
W3C Verifiable Claims
46
Topics
Requirements:
W3C VC Trust Model (1 of 2)�
W3C Verifiable Claims
47
Proof issuer generated the credential
Credential has either:
OR
Transmission that clearly establishes that the issuer generated the credential.
1.
2.
Subject
Holder
Verifier
Issuer
Credential
Identifier Registry
(Which identifiers belong
to which entity)
Credential Repository
(VC wallet)
W3C VC Trust Model (2 of 2)��
W3C Verifiable Claims
48
Subject
Holder
Verifier
Issuer
Credential
Identifier Registry
(Which identifiers belong
to which entity)
Credential Repository
(VC wallet)
Interactive Whiteboard Session: Threat Model
W3C Verifiable Claims
49
Dolev-Yao threat model for the communications between all the entities
“Focal” Use Case and Threat Model (1 of 4)
From the Use Cases Document, https://w3c.github.io/vc-use-cases/
W3C Verifiable Claims
50
Use Case: International Travel with Minor and Upgrade
Malathi is traveling internationally with her 8-month-old son, Anand. His father, Rajesh, is staying home. Malathi has enough frequent flyer miles to upgrade the ticket to first class.
Malathi
Anand
(8 months old)
Rajesh
Upgrade
US passports do not establish relationship between parent & child
Credentials must be coordinated between two verifiers (travel agent and airline) for two individuals, and a digital coupon is used.
Travel Agent
at HappyAir
Airline
TSA
“Focal” Use Case and Threat Model (2 of 4)
W3C Verifiable Claims
51
International Travel with Minor and Upgrade
Verifiable Credentials
Malathi's passport | Establishes identity of the traveling parent |
Anand's passport | Establishes identity of the minor |
Anand's Birth Certificate | Establishes relationship to parents and provides link from Rajesh to Anand that qualifies the permission to travel |
Permission to travel from Rajesh |
|
Upgrade coupon for first class ticket | Introduces commercial value in a verifiable credential |
“Focal” Use Case and Threat Model (3 of 4)
W3C Verifiable Claims
52
International Travel with Minor and Upgrade
Threat Model
“Focal” Use Case and Threat Model (4 of 4)
W3C Verifiable Claims
53
International Travel with Minor and Upgrade
Threat Model (continued)
What Does Tamper-Evident Mean?
W3C Verifiable Claims
54
“The cryptographic mechanism used to prove that the information in a verifiable credential or a verifiable presentation has not been tampered with is called a proof.
There are many types of cryptographic proofs including
Other Security Concerns
W3C Verifiable Claims
55
Are We Ready for the Security Review?
W3C Verifiable Claims
56
Test Suite Update
Time: 16:30-17:30
Leader: Ganesh Annan/Chris Webber
57
Test Suite slides from Chris, presented by Ganesh
https://dustycloud.org/misc/vc-test-suite.pdf
(Damnit, Chris!)
58
End of Day
59
Verifiable Claims WG
TPAC Sessions
Day 2: Friday October 26, 2018
Chairs: Matt Stone, Dan Burnett
60
Agenda: Friday October 26
61
Date | Time | Topic | Discussion Leader |
10/26/2018 | 8:00 | Good Morning, Agenda preview | Chairs |
10/26/2018 | 8:30 | ZKP style/spec alignment | Brent Zundel |
10/26/2018 | 9:30 | From issue #207 - Rename Claim to Subject | David Chadwick |
10/26/2018 | 10:00 | Morning Break | |
10/26/2018 | 10:30 | Terms of Use/Rights/Authorization/Delegation | David Chadwick, Chris Webber |
10/26/2018 | 11:30 | PING meeting | |
10/26/2018 | 12:30 | Lunch | |
10/26/2018 | 13:30 | Recharter (or not)? (2019 plan/adoption strategy) | Chairs |
10/26/2018 | 15:00 | JWT and JSON-LD industry direction | Christopher Allen? |
10/26/2018 | 16:00 | Break | |
10/26/2018 | 16:30 | Open issues/PRs | |
10/26/2018 | 17:00 | Open Topics, Close TPAC | |
ZKP Style/Spec Alignment
Time: 8:30-9:30
Leader: Brent Zundel
62
Agenda
What is a zero knowledge proof?
Formally, a zero-knowledge proof must satisfy three properties:
ZKP Verifiable Credentials Ecosystem
Holder
Issuer
Verifier
Credential
Presentation
Verifiable Data Registry
(Public DID, Schema, Credential Definition, Revocation Registry)
Public Blockchain or other Decentralized Network
Signs Credential
Verifies Signatures
Wallet
Zero Knowledge Credential
Zero Knowledge Proof
Proof is not transferable
Supports selective disclosure
What this lets Sovrin do
66
Objects that support Sovrin credentials
Revocation Registries
Credential Definitions
Schemas
Public DIDs
Pairwise DIDs can be gossiped and don’t belong on-chain.
Revocation cannot use unique identifiers or credentials become super-cookies.
Defining Credentials on-ledger allows you to present credentials anywhere and discover new opportunities for trust.
On-ledger schemas encourage credentials to converge on interoperable formats
Rename identifier registry
The current registry for identifiers should also include:
Proposal: Change this to “Verifiable Data Registry”
Rename identifier registry
Rename identifier registry
Presentation and its relationship to credentials
A verifiable presentation expresses data from one or more verifiable credentials, and is packaged in such a way that the authorship of the data is verifiable. If credentials are directly presented, they become a presentation. Data formats derived from credentials that are cryptographically verifiable but that do not, of themselves, contain credentials, may also be presentations.
Presentation and its relationship to credentials
For this reason we propose changing this image:
The aggregated claims in the verifiable presentation could come from multiple verifiable credentials.
Presentation and its relationship to credentials
Propose adding selective disclosure paragraph to the 3.1 Claims section:
Presentation and its relationship to credentials
along with this image:
Presentation and its relationship to credentials
We also propose adding this paragraph to the 3.2 Credentials section
Presentation and its relationship to credentials
We also propose changing this image of the basic components of a verifiable credential:
|
|
Selectively disclose all the things!
What changes on presentation
{� "@context": "https://w3id.org/credentials/v1",� "id": "http://dmv.example.gov/credentials/3732",� "type": ["VerifiableCredential", "ProofOfAgeCredential"],� "issuer": "https://dmv.example.gov/issuers/14",� "expirationDate": "2020-01-01T19:73:24Z",� "claim": {� "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",� "birthDate": "1969-02-14" },� "proof": { ... }�}
One more thing . . .
What is signed cannot be modified
Issue 207: Rename Claim to Subject?
Time: 9:30-10:00
Leader: David Chadwick
81
Generic Claim Model
Generic Claim Model
Subject
Value
Property
Generic Claim Model
Subject
Value
Property
Transformed into JSON
{
“subject”: {
“property”: “value”
}
}
Generic Claim Model
Subject
Value
Property
Transformed into JSON
{
"subject": {
"property": "value" } }
Transformed into JSON-LD, subject is replaced by its ID
{
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"property": "value”
}
which causes a readability/understanding problem as there is no mention of “subject”. To whom does this ‘id’ belong?
Generic Claim Model
Subject
Property
Object
Value
Property
Generic Claim Model
Subject
Property
Object
Value
Property
Transformed into JSON
{
"subject": {
"property": {
"object": {
"property": "value” } } } }
Transformed into JSON-LD
{
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"property": {
"id": "did:example:eb6f1c276e12ec21feb1f712eb",
"property": "value” } }
which again has readability/understandability problems
Combining the two
Value
Property1
Subject
Property2
Object
Value
Property3
Combining the two
Value
Property1
Subject
Property2
Object
Value
Property3
Transformed into JSON
{
"subject": {
"property1": "value",
"property2": {
"object": {
"property3": "value” } } } }
Transformed into JSON-LD
{
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"property1": "value",
"property2": {
"id": "did:example:eb6f1c276e12ec21feb1f712eb",
"property3": "value” } }
Application to Verifiable Credential Claims
1234
Identifier
Subject
has
Claim
21
Age
Transformed into JSON
{
"subject": {
"identifier": "1234",
"has": {
"claim": {
"age": "21” } } } }
This is perfectly readable and understandable JSON, whereas when is is transformed into JSON-LD
{� "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
”identifier": "1234",� "has": {� "id": "did:example:eb6f1c276e12ec21feb1f712eb",
"age": 21 } }
It is less meaningful, but is not even the current structure
RDF Subjects with type only
"proof": { "type": "RsaSignature2018",…}
"refreshService": { "type": "ManualRefreshService2018", … },
Current VC Data Model JSON
current JSON example
{
"claim": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"ageOver": 21
}
}
Claim
21
ageOver
“Claims are expressed using subject-property-value relationships.”
did...21
id
Inconsistent use of JSON-LD
RDF Subjects with type and id
{"id": "http://dmv.example.gov/credentials/3732", "type": ["VerifiableCredential", "ProofOfAgeCredential"],….}
"credentialStatus": { "id": "https://dmv.example.gov/status/24, "type": "CredentialStatusList2017" },
{ .. "id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5”, "type": ["VerifiablePresentation"],…}
termsOfUse": [{ "type": "IssuerPolicy", "id": "http://example.com/policies/credential/4", …)
"evidence": [{ "id": "https://dmv.example.gov/evidencef2aeec97fc0d-42bf-8ca7-0..231",
"type": ["DocumentVerification"],..}
"holder": { "type": "LawEnforcement”, "id": "did:example:ebfeb1276e12ec21f712ebc6f1c" },..}
"parent": { "id": "did:example:ebfeb1c276e12ec211f712ebc6f", "type": "Mother" }
Questions
95
RDF Subjects with an id only
"claim": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
…. },
"disputedClaim": { "id": "did:example:ebfeb1f71…6e12ec21",
….}
RDF Subjects with neither
"prohibition": [{ "assigner": "https://dmv.example.gov/issuers/14",….}
"address": { "streetAddress": "10 Rue de Chose",
Morning Break
98
Terms of Use and Rights Discussion
Time: 10:30-11:30
Leader: David Chadwick, Chris Webber
99
Framing the conversation
Are VCs an authorization framework?
101
Okay, so we agree that VCs can be used to build an ABAC/RBAC type authorization system. Is that substantially different from an ocap system?
Does the name “credential” imply authorization?
Are Terms of Use Mandatory to Enforce or Not
The value of this property ?MUST/SHOULD? be one or more terms of use that tell the verifier what actions it ?MUST/SHOULD? perform if it is to accept the verifiable credential or verifiable presentation. If the verifier is not willing to accept these terms of use then it ?MUST/SHOULD? reject the verifiable credential or verifiable presentation.
SHOULD OR MUST?
Are Terms of Use machine/system enforceable? (1/2)
How about some examples?
Are Terms of Use machine/system enforceable? (2/2)
DC: Security Vulnerability
The original X.509 model had CAs issuing v1 PKCs to users, who obviously had their own key pairs. A v1 PKC did not differentiate between an end user and a CA.
Users soon found that they could issue their own PKCs to their friends, who could then authenticate to the same systems as themselves, as the verification software automatically processed the certificate chains.
This was fixed in v3 PKCs, by introducing the Basic Constraints extension that differentiated between end users and CAs.
If we do not build fields into v1 VCs that allow the issuer to place constraints on the issued VCs, then we will encounter similar vulnerabilities that X.509 v1 encountered, e.g. subjects with VCs will issue their own VCs that pass on their credentials to holders. Since the standard says that the holder is not always the subject, then the verifier cannot tell if this is OK or not, from the perspective of either the subject or the issuer.
CW: Security Vulnerability
We aren’t designing for a world with a privileged class of entities such as CAs, this is an open world system. A trust model where we expect trust in an entity is 100% in a circle or 100% out doesn’t work for this.
ACLs and ocaps aren’t equivalent and we shouldn’t pretend they are. Confused deputy vulnerabilities and ambient authority problems are well documented with ACLs, literature is widely available (eg “ACLs Don’t” paper).
DC. Note that OCAPs and VCs are equally vulnerable to confused deputy and ambient authority, since they depend upon the deputy not explicitly using only the credentials accompanying the request, rather than the type of the credential in the request.
VCs are useful for “A says B about C” interactions which are themselves not authority mechanisms. Whether or not to add an authority mechanism to VCs (as an ACL/RBAC type system) should be made separately, on a separate layer, with careful consideration of the security risks associated with such systems.
DC: Conclusion
We have to build minimum authorisation constraining fields into v1 VCs in order to tell verifiers how they have to behave. Examples include:
CW: Conclusion
Terms of Use are useful. They can be used to describe expectations of issuer/subject/etc of what usage of this information is acceptable. Many core types of Terms of Use described in VCs cannot be protocol-enforced.
This too is part of the point: we are not defining a protocol.
It is absolutely possible to layer an authorization framework on top of VCs, which would be an ACL / RBAC type system. But that shouldn’t be the scope of this group, particularly because it requires solving many problems, and this group is running out of time.
Decisions, Next Steps
112
Joint meeting with PING
Time: 11:30-12:30
Leader:
113
Lunch
114
Future of VCWG Charter
Time: 13:30-15:00
Leader: Chairs
115
The Charter
Options:
116
JWT and JSON-LD Industry Direction
Time: 15:00-16:00
Leader: Manu Sporny/ Christopher Allen
117
Orthogonal Issues in JOSE vs JSON-LD
118
Progress on JOSE/COSE, JWTs, VCs Discussions
119
Break
120
Open Topics,
Close TPAC
Time: 16:30-EOD
Leader:
121
Open Topics (preference count)
122