Use Case Flow for Sharing Electricity Metering Data
Presenter
ELERING-ENERGINET/WORKSHOP / 15.03.2018
Slides: [bit.ly link]
Sovrin Basic Elements
Indy/Sovrin Transactions
For Sharing Electricity Meter Data
to a 3rd Party
Actors in this Use Case
Alice gets interested on Watt’s service and installs the app. She is
� Sovrin ledger
Bootstrapping Alice’s DID with Elering
Alice’s Edge Agent
Sovrin Trust Anchor
Sovrin Ledger
Prerequisite: Elering offers an Edge or Cloud Agent, and as Trust Anchor it provides also traditional IdP and IAL through Estonian ID anchor
2-4, 6-7 DID registration process *
… 5. Anchored Verinym written to the ledger by TA - associating the Legal � Identity of Alice to her DID
0. Enrolment & identity proofing between the Steward and Identity Owner
(may be validation in the physical real-world)
“IAL of Identity Owner = 3”
Alice
1. Authenticate (traditionally) to TA
*See slide notes
Bootstrapping Watt’s DID at Energinet
Watt’s Cloud Agent
Sovrin Trust Anchor
Sovrin Ledger
2-4, 6-7 DID registration process
… 5. Anchored Verinym written to the ledger by TA - associating the Legal � Identity of SEAS-NVE and its Watts service to its public DID
0. App/Service Provider enrolment - done through onboarding service, �results in a bootstrapped enterprise wallet
“VAT proof”
SEAS-NVE (company behind Watts)
1. Authenticate the company (through a delegated onboarding service user) to TA
Meanwhile something must have happened in Denmark:
Creating a Connection between A and W
Watt’s Cloud Agent
Sovrin Ledger
�Alice’s Edge
Agent
�DID of Alice
3. Send newly created DID for purpose of intended connection with Alice
2. TA writes and signs � Pseudonym DID to ledger
(Public agent-to-agent communication protocol is WIP)
Trust Anchor
Service issues a Credential with AccessDelegation+CustomerID* to Alice
Alice’s Edge Agent
Sovrin Validator Node
Issuer �with authority
Issuer’s �Revocation
Accumulator at Ledger
Customership Claim Definition at Ledger
1. Claim offer (optional, could be in slide 5 along with bootstrapping)
2. Claim request
3. Providing the Claim
Prerequisite: existing Sovrin Connection between Alice and Elering
0. Claim definition write
‘Alice is Elering’s customer with attribute
customerID:xxxxxxxxxx’
Authorisation Claim
{
"@context": [
"https://w3id.org/credentials/v1",
"https://example.com/credentials/v1",
"https://w3id.org/security/v1"
],
"type": [
"Credential",
"DelegatedAuthorityCredential",
"CustomerIdentityCredential"
],
"claim": {
"id": "TaVE1pAaummu3wfbWtVbyu",
"claim": {
"authorizedscopes": ["electricity_metering_data",”read_access”],
"customerid": "192873465"
}
},
"issuer": "VJkTdbQZTRnJneZAR245n6",
"issued": "2018-04-04",
"credentialStatus": {
"revocation": "http://example.com/revocation/c73fcffb-5cb0-4bc4-b97c-816048166cbf"
},
"signature": {
"type": "Ed25519Signature2018",
"creator": "VJkTdbQZTRnJneZAR245n6#key1",
"created": "2018-04-04T12:18:44.202Z",
"domain": null,
"nonce": "c73fcffb-5cb0-4bc4-b97c-816048166cbf",
"signatureValue": "SeZ0fqLYteuVBa7WI27dQcJPy0lS0CC3vuyvqsa9AqXDUVfX91hKSwgpwUnn9l7l0EBBcPz6CqDkI1gzmAfMBw=="
}
}
Piggybagged Authz(user) Proof?
Alice’s Edge Agent
Watt’s
Cloud Agent
Issuer’s �Revocation
Registry at Ledger
(1. Proof offer from claim holder)
2. Proof request - ‘Please give us, Watts, access to your electricity providers’ customer IDs and �[SCOPE, WHY, REQUESTED TIME SPAN] related to as an Authz Credential proof’
3. Provide a proof based on the Delegate Authority issued by Elering
5. Validating non-revocation
of the Proof
Claim Definition at Ledger
4. Claim definition check
Claim ‘piggybagging’ is not defined in any claim exchange mechanisms (Sovrin, W3C) - except Delegated Authority VC idea by Stephen Curran.�
Why? In order to convey Alice’s read access delegation within the ‘Authz Claim’ towards a service endpoint (at Elering, see next slide)
A issues Delegated Authority VC to W
Alice’s Edge Agent
Watt’s
Cloud Agent
Issuer’s �Revocation
Registry at Ledger
1. Proof request - ‘Please give us a, claim that tells we have access to your electricity providers’ s � Data [SCOPE, READ_ACCESS, PURPOSE, REQUESTED TIME SPAN]’
2. Providing DA_VC [SERVICE, SCOPE, CUSTOMER ID,READ_ACCESS, SUBJECT, TIME SPAN] signed with Alice’s DID linked with her Elering connection
Issuer
Claim Definition at Ledger
3. Claim definition check?
Alice’s DID linked to her Elering customership is used as the signing key
Watts’ Data Request to Elering
Elering’s
Cloud Agent
Watt’s
Cloud Agent
Issuer’s �Revocation
Registry at Ledger
1. Request to Elering’s data access service endpoint: ‘Please give us, Watts, access to customer data � [proof built out of Alice’s Delegated Authority VC]’
5. Providing authorized API key / token + customerID of Alice
Issuer
3. Validating non-revocation
of the Authz Claim
Claim Definitions at Ledger
2. Claim definition check
4. Check the customerID linked to the proof’s signing DID
Revoking Delegated Authority VC - WIP
Alice’s Edge Agent
Alice’s Revocation
Accumulator [WHERE?]
1.
2.
3.
4.
0. Updating the status of Rev Accum with a ZKP mechanism
Watt’s
Cloud Agent