Dmitri Zagidulin: Working in decentralized identity spect with digital bazaar, also involved in other projects solid, did:web, and other other specs [scribe assist by Christopher Allen] ✪
Topic: Announcements and Reminders
Joe Andrieu: Reminder about the DID Resolution calls on Thursdays ✪
… General reminder - please read and comment on this publication from NIST
… since it's likely of interest to the people in this group
… issue 1 - SIP is not working?
Christopher Allen: A number of us are having challenges on making SIP work on various platforms ✪
Kim Hamilton Duffy: Dmitri presented the did:web method during last week's VC for Education Task Force meeting. There's a lot of interest in hearing the recording for it (so I backfilled it), and it's available here: https://w3c-ccg.github.io/meetings/2020-02-10/✪
… it would be great if somebody could write up instructions / tips and tricks
… looking for volunteers
Joe Andrieu: Didn't we used to have a blurb, on SIP instructions? ✪
… if we have one, I'll add a paragraph about Windows
Dmitri Zagidulin: Where would be a good place to put this instruction docs? ✪
Christopher Allen: On our repo, ultimately. short term, Google Doc is fine ✪
… the important thing about Directed Capabilities is - they are issued by the same authority that is accepting the credential
… the process of invoking the capability is what gives an actor the authority to take that action
… DCs can be set up also to have Delegation, Revocation
… because these are also digital objects, they can be managed alongside VCs, in digital wallets
… the idea being that in your wallet you'll have a mix of VCs and DCs
… so, you'll have credentials, and then capabilities to trigger various actions
… so, with DCs, the privileges are _explicit_
… which is a bit of a shift from most ACL-based paradigms
… the inspection of the capability can directly reveal what is invokable
… it's easy to audit "what does this let me do"
… and if the DC is valid, non-revoked, and you invoke it, the contract is that the provider makes the action happen
… important: these are completely independent of traditional forms of identity (DIDs, etc)
… so, the atomic manifestation is - the ability to invoke an individual capability
… so, the DCs are self-contained (not dependent on ambient context)
… the canonical example of a Directed Capability is a physical car key
… which is a capability that lets you open and start a car
… it does not depend on the identity of the user
… you don't have to register it with a registry, or anything like that
… so the possession of the key IS the embedded authorization
… so, for example, in court, if you accuse your child of stealing your car, but you gave them your key, the case won't work — the possession of the key is the authorization
… so another example of an Attenuated capability is a Valet Key
… so, it has a subset of permissions of a regular key
… DCs are Revokable
… you can revoke / disable the authorization remotely, without tracking down the actual capability
… and they are Losslessly Delegatable
… at low marginal cost
… thirdly, you can Attenuate these capabilities in any number of ways (as allowed by the Issuer)
… the issuer gets to set up the framework of attenuation privileges, but after that, it's completely under the holder's control
… so, issuer, when creating a DC, specifies the Scope of the capability
… and set up the rules fo rrevocation, delegation and attenuation
Kim Hamilton Duffy: Should Capabilities have a type? (ref https://w3c.github.io/vc-data-model/) there's some commonality between this and VCs, and I see why you modeled it differently, but in a few years, will we end up with a range of Verifiable "Things ✪
… so, if you wanted different actions based on day of the week or time of day, that's possible. But key thing is - the issuer has to support that action
… but once the issuer sets up the pattern, after that it's entirely under control of the DC holder, operationally
… all of that supported by cryptography
… so let's look at an example of a digital car key
… so now, we can attenuate it in interesting ways. For example, disable trunk access. Or, further, do not allow the car to start. (so, the key can only open the door and that's it)
… you can have limits on location (so valet can't take car on joyride)
Kim Hamilton Duffy: Meant to link here: https://w3c-ccg.github.io/zcap-ld/. there are some elements of VCs that maybe are also needed in zcaps. Joe mentioned issuer... ✪
… obviously this is limited by car features (like onboard GPS), so you can't arbitrarily make up limitations
… some architectures require 'phoning home' to the issuer. but other architectures do not
… So, imagine that a bank gives you a Directed Capability
… I can delegate them to my accountant, bookkeeper, controller, and so on. So they can have access to my account without me sharing my login & password to the actual account
… you can attenuate these delegations in interesting ways. Read-only. Or, read only a subset or a summary of my accounts (say, a monthly summary only)
… again, the issuer (bank) has to _support_ these capabilities
… and either the bank or the resource controller can revoke the capability at the same time
… another nice thing about DCs is - if I delegate one of these to my accountant, he can delegate it to his assistant
… so, I can either delegate access to a firm, or to a person, but then it's delegatable (without me getting involved)
… I could restrict it and not allow delegation, of course. but it's easier on me in many cases, if I don't have to be involved
… key is - upon invocation, the entire chain of delegation is presented
… again, unlike typical ACL architectures
Orie Steele: I'm not sure its practically possible to restrict delegation.... technically.... ✪
… you could track the audit trail exactly who authorized these capabilities, and who delegated, and so on
… there's limitations on identifying people by keys and so on, but the auditability is there
… slide 21 - Credentials vs Capabilities
… how I think of these things
… so, Credentials - they're basically statements. you can present em anywhere, and the business rules of the verifier manage interpretation.
… Capabilities - the business rules are set up during creation, by the issuer
… and delegation mechanisms are also constructed at time of issuance
… both are revokable
… credentials are not delegatable or attenuatable
… like, 'Joe says sky is blue' is just a statement, you can't really delegate it
… whereas Capabilities - are delegatable etc
… the best use of Credentials is — authoritative credentials or identity proofing
… like, KYC (Know Your Customer) type of use cases
… Capabilities, on the other hand, are ideal for authorization and delegation
Orie Steele: It's not practically possible to stop delegation (you can share/proxy keys/proofs), but liability changes when you get caught (either you delegated in an authorized way or you didn't .. the latter being potentially more dangerous for you) [scribe assist by Dave Longley] ✪
… so, once I'm onboarded onto a service (with credentials), then I can manage authorization, with delegations and so on, using capabilities
… where the issuer is Alice, but the capability is going to be exercised at Alice's chosen service providre
… that she has chosen as a processor
… I put in a link to this four-way chain of agents
… that I use to describe this usecase
Christopher Allen: An issuer can require that presentation of a capability can include a phone home or audit log home, etc. requirement. Remember, issuers consume their own capababilites. ✪
… and we have a number of delegation steps in that use case, for an agent scenario, that I hope we can map into the Capabilities model
… and that includes this important ones, about different parties' wallets
Joe Andrieu: It's a slight misnomer that Alice is the issuer in your example. It would be the Processor that's the initial issuer. which gives a capability to Alice, who can then delegate to Bob ✪
… the not phoning home is — Alice or Bob does not need to check with the processor during delegation or attenuation