m Hyperledger Aries - identity, data management tools

Key Points

  1. Aries provides a shared, reusable, interoperable tool kit designed for initiatives and solutions focused on creating, transmitting and storing verifiable digital credentials. It is infrastructure for blockchain-rooted, peer-to-peer interactions
  2. Key components of an Aries solution are: agents, DID communications, protocols.
  3. Multiple Aries Agent SDKs
  4. Only Python fully ready, documented
  5. GO, dotNet both available
  6. Other SDKs not happening
  7. Indy provides tools, libraries, and reusable components for providing digital identities rooted on blockchains or other distributed ledgers so that they are interoperable across administrative domains, applications, and any other silo

References

Reference_description_with_linked_URLs_____________________________Notes______________________________________________________________
did-aries-indy-v1 gdoc link


https://www.hyperledger.org/use/ariesHyperledger Aries project
https://github.com/hyperledger/ariesWhat is Aries ? ***
https://decentralized-id.com/hyperledger/aries/Why Aries agent communications supports multiple identity networks using SSI 
Indy, Ion, more
https://github.com/hyperledger/aries-rfcsAries RFCs
https://www.youtube.com/watch?v=bZrWAsD42-I
Hyperledger Aries Demo video ( 6 min ) mobile app for verification to access a service

https://ldej.nl/post/becoming-a-hyperledger-aries-developer-getting-started/

aries-developer-article-Becoming a Hyperledger Aries Developer - Getting Started.pdf link

Becoming an Aries Developer article **
Build Your Identity Solution Using Hyperledger Aries workshop - 2022Aries workshop - 4 hours   Feb 2022
Aries Workshop - 5 hours Nov 2021 ( older )
https://github.com/hyperledger/ariesGithub - Aries Developer Getting Started
https://www.infoq.com/news/2019/05/Hyperledger-Aries-Identity/article on Aries
https://wiki.hyperledger.org/display/ARIES/Aries+Working+Group SIG WIKI Hyperledger Aries WG   
https://wiki.hyperledger.org/display/TSC/2020+Q2+Hyperledger+AriesAries Project Status

 Aries v2.0 architecture deck  

 Aries old architecture deck  
https://github.com/hyperledger/aries-rfcs/tree/main/conceptsAries concepts
https://github.com/hyperledger/aries-rfcs/tree/main/featuresAries feature requests - RFCs


https://courses.edx.org/courses/course-v1:LinuxFoundationX+
LFS172x+3T2019/course/

https://www.edx.org/course/identity-in-hyperledger-aries-indy-and-ursa?utm_source=lms_catalog_service_user&utm_medium=affiliate_partner

Old EDX Indy, Aries course LFS 272x



https://github.com/hyperledger/aries-cloudagent-python/tree/master/docs/GettingStartedAriesDevAries Getting Started Guide - github ***
https://github.com/hyperledger/aries-cloudagent-python/blob/master/docs/GettingStartedAriesDev/AriesAgentArchitecture.mdAries Getting Started Guide - Architecture overview - github ***

Aries Getting Started - Deployment model - github ***
https://ula-aca.github.io/aries-cloudagent-interface-javascript/Aries Swagger Interface Definition **
https://docs.google.com/presentation/d/1L5L4QcZOATrn9rj4bEMmlbvij9XW
yqgQRoWO-HNiUGw/edit#slide=id.g6f6594a78a_0_354
Aries Architecture presentation - 2019 **

https://docs.google.com/presentation/d/18EpX6-i4B5pSMLU3lPOBAY2zEz2vGBhXMItJoIkfGzo/edit#slide=id.g9b820d33a7_0_10


Aries Revocation proposal pptx






More articles
https://ssimeetup.org/highlights-internet-identity-workshop-28-drummond-
reed-ssi-meetup-one-year-anniversary-special-webinar-27/
Drummond Reed's notes on 2019 Identity workshop - very good
digital-wallets-The_Current_and_Future_State_of_Digital_Wallets_v1.0_FINAL.pdfdigital-wallets-The_Current_and_Future_State_of_Digital_Wallets_v1.0_FINAL.pdf

evernym-Webinar 27 IIW 28 Drummond Reed.pptx

evernym-Webinar 27 IIW 28 Drummond Reed.pdf

SSI and Identity Mgt Presentation

lab1-Hyperledger Aries - The Technical Bits.pptx

http://bit.ly/AriesHGF2020

lab1-Hyperledger Aries - The Technical Bits.pdf

Aries Lab 1 pdf - Stephen Curran – VERY good
https://github.com/hyperledger/aries-cloudagent-python/tree/master
/docs/GettingStartedAriesDev
Aries Python Agent SDK Getting Started Guide ( none for GO yet )
https://github.com/hyperledger/aries-framework-dotnetAries dNet Agent SDK Getting Started Guide

https://github.com/hyperledger?q=aries&type=&language=

https://github.com/hyperledger/aries

https://github.com/hyperledger/aries-acapy-plugin-toolbox

https://github.com/hyperledger/aries-acapy-controllers

https://github.com/hyperledger/aries-staticagent-python

https://github.com/hyperledger/aries-toolbox

https://github.com/hyperledger/aries-framework-go

https://github.com/hyperledger/aries-framework-javascript

https://github.com/hyperledger/aries-protocol-test-suite

https://github.com/hyperledger/aries-sdk-java

Aries on github
https://github.com/hyperledger/aries-rfcs/blob/master/index.mdThe Aries RFC list
zkp-private-data-modelLition_TechnicalWhitePaper.pdfprivate data and zkp - model for baseline implementation

DID Comm protocol - 2020 status

DIDComm WG Basics and Update.pdf

DIDComm WG Basics and Update.pptx

DIDComm WG Basics and Update.pdf - gdrive


DIDComm myths and misconceptions video




Aries Training
https://www.edx.org/professional-certificate/linuxfoundationx-
developing-blockchain-based-identity-applications

Linux Foundation - Professional Certificate in Developing Blockchain-Based Identity Applications

2 courses - Intro to Sovrin, Indy, Aries & Ursa

Becoming an Aries Developer






Key Concepts


Indy Identity Networks for SSI

m Hyperledger Indy

https://github.com/hyperledger/aries-cloudagent-python/blob/master/docs/GettingStartedAriesDev/IndyBasics.md



Aries Concepts 

https://github.com/hyperledger/aries


Build your Identity Solution with Hyperledger Aries session

https://www.youtube.com/watch?v=dj_VyVyWuu8&t=1s




  1. Hyperledger Aries allows trusted online peer-to-peer interactions based on decentralized identities and verifiable credentials.
  2. Aries includes a protocol definition, tools, and reference implementations.
  3. The Aries protocol supports identities rooted in a variety of distributed ledgers or blockchains.
  4. This approach to identity is often called Self Sovereign Identity (SSI).

Key components of an Aries solution are:

Getting Started

Aries is a young project that is maturing quickly. As such, be warned that the project documentation and links may get out of out-of-date. If you find there is something missing, please connect with the community on the Aries Hyperledger Rocketchat Channel. And of course, pull requests are always welcome to fix things that are confusing!

If you are entirely new to the decentralized identity space and the Hyperledger projects there is a Linux Foundation edX course on decentralized identity and Hyperledger Indy, Aries and Ursa. Start there! A companion developers edX course is planned for "early" 2020.

If you know about decentralized identity and verifiable credentials and want to get started building applications on top of Aries (and Indy), the most consistently maintained guide for new developers is the one included in the Aries Cloud Agent Python (ACApy):

Repos

The Aries project contains a number of repos, which can be grouped into some important categories.

Aries Agent Frameworks

Developers who want to solve business problems (vs. contributing directly to Aries) should start with an Aries agent framework. Agent-based applications are created by adding application-specific code that control the Aries agent.

There are several Aries general purpose agent frameworks that are ready to go out of the box.

  • Aries Cloud Agent - Python (ACA-Py) is suitable for all non-mobile agent applications and has production deployments. ACA-Py and a controller run together, communicating across an HTTP interface. Your controller can be written in any language and ACA-Py embeds the Indy-SDK.
  • Aries Framework - .NET can be used for building mobile (via Xamarin) and server-side agents and has production deployments. The controller for an aries-framework-dotnet app can be written in any language supporting embedding the framework as a library in the controller. The framework embeds the Indy-SDK.
  • Aries Static Agent - Python is a configurable agent that does not use persistent storage.

There are several other frameworks that are currently under active development, including:

  • Aries Framework - Go is a pure golang framework that provides a similar architecture to ACA-Py, exposing an HTTP interface for it's companion controller. The framework does not currently embed the Indy SDK and work on supporting a golnag-based verifiable credentials implementation is in progress.
  • aries-sdk-ruby
  • aries-framework-javascript

Development Tools and Test Suites

The Aries project provides some useful tools for developing agents and testing that they are compatible with other agents in the ecosystem.

Shared Libraries

Coming Soon There are also a set of shared open source libraries that provide C-callable APIs that can be used by agents and frameworks to support the Aries protocols.

  • Aries Key Management: Functions for managing keys, including storage plugins.
  • Aries Verifiable Data Registry Interface: An interface for verifying data agianst an underlying ledger.
  • Aries Util: Utility functions for Aries communication, such as message packing.

While these are in development, the ACA-Py and .NET frameworks embed the Indy-SDK, while the Go framework is building the capabilities in golang.

Protocols

If you want to understand the theory and the open standards that these agents and frameworks implement, then you should refer to the Aries protocol documents:

Use Aries to build identity solutions on Indy DLT

If you want to start build decentralized identity capabilities around Indy, you should use the existing Aries Agent frameworks described above that embed the Indy SDK. If you are already using the Indy SDK to build a decentralized identity solution, you can keep using it knowing that it will continue to be maintained. If and when the Indy SDK is fully or partially deprecated, a transition process will be communicated.

Aries Architecture Diagram

In such a deployment there are always two components - a configured agent itself, and a controller that injects into that agent the business rules for the particular agent instance (see diagram).

ACA-Py Deployment Overview


Conceptual Network of Aries Agents in Context

https://github.com/hyperledger/aries-cloudagent-python/blob/master/docs/GettingStartedAriesDev/AriesBigPicture.md

Sovrin network is shown but this could be another Indy network


The agents in the picture shares many attributes:

  • They have some sort of storage for keys and other data related to their role as an agent
  • They interact with other agents using secure. peer-to-peer messaging protocols
  • They have some associated mechanism to provide "business rules" to control the behaviour of the agent
    • That is often a person for phone, tablet, laptop, etc. based agents
    • That is often backend enterprise systems for enterprise agents
    • Business rules for cloud agents are often about the routing of messages to and from edge agents

While there can be many other agent setups, the picture above shows the most common ones - edge agents for people, edge agents for organizations and cloud agents for routing messages (although cloud agents could be edge agents. Sigh...). A significant emerging use case missing from that picture are agents embedded within/associated with IoT devices. In the common IoT case, IoT device agents are just variants of other edge agents, connected to the rest of the ecosystem through a cloud agent. All the same principles apply.

Misleading in the picture is that (almost) all agents connect directly to the Ledger network. In this picture it's the Sovrin ledger, but that could be any Indy network (e.g. set of nodes running indy-node software) and in future, ledgers from other providers. That implies most agents embed the ledger SDK (e.g. indy-sdk) and makes calls to the ledger SDK to interact with the ledger and other SDK controlled resources (e.g. secure storage). Thus, unlike what is implied in the picture, edge agents (commonly) do not call a cloud agent to interact with the ledger - they do it directly. Super small IoT devices are an instance of an exception to that - lacking compute/storage resources and/or connectivity, they might communicate with a cloud agent that would communicate with the ledger.

While current Aries agents currently only support Indy-based ledgers, the intention is to add support for other ledgers.

The (most common) purpose of cloud agents is to enable secure and privacy preserving routing of messages between edge agents. Rather than messages going directly from edge agent to edge agent (which is often impossible - for example sending to a mobile agent), messages sent from edge agent to edge agent are routed through a sequence of cloud agents. Some of those cloud agents might be controlled by the sender, some by the receiver and others might be gateways owned by agent vendors (called "Agencies"). In all cases, an edge agent tells routing agents "here's how to send messages to me", so a routing agent sending a message only has to know how to send a peer-to-peer message. While quite complicated, the protocols used by the agents largely take care of this complexity, and most developers don't have to know much about it.



Aries Resources 


InfoQ article on Aries

https://www.infoq.com/news/2019/05/Hyperledger-Aries-Identity/

In a recent blog post, the Hyperledger project announced their 13th project called Hyperledger Aries, which provides an interoperable identity management toolkit that enables creating, transmitting and storing verifiable digital certificates. Using this toolkit, organizations can support secure, interoperable peer-to-peer messaging across different distributed ledger technologies (DLT).

Identity management continues to be one of the most important and challenging aspects of building DLT applications. Tykn, a digital identity management organization, classifies the problem as:

Most of the current identity management systems are weak and outdated. Paper-based systems are at risk of loss, destruction or fraud. Digital systems, if centralized, are honeypots of personal data for hackers. Constantly subject to leaks and breaches. Since 2017 alone, more than 600 million personal details – such as addresses or credit card numbers – have been hacked, leaked or breached from organizations. Identities need to be portable and verifiable everywhere, any time, and digitization can enable that. But being digital is not enough. Identities also need to be private and secure.

Hyperledger Aries plans to address some of these identity challenges through the use of verifiable digital credentials. Nathan George, cto Sovrin Foundation and Hyperledger Aries sponsor, explains:

Identity is commonly cited as one of the most promising use-cases for distributed ledger technology. Initiatives and solutions focused on creating, transmitting and storing verifiable digital credentials will benefit from a shared, reusable, interoperable tool kit.

The Hyperledger project has been very clear that Aries is not a blockchain, nor is it an application. The toolkit has roots from both the Hyperledger Indy, from a resolver implementation perspective, and Hyperledger Ursa, which it has leveraged some cryptographic functionality from. However, Hyperledger Aries does provide a blockchain interface layer, known as a resolver that allows for the creation and signing of blockchain transactions. It also includes secure storage that acts as a cryptographic wallet where secrets can be stored and includes an implementation of a Decentralized Key Management System (DKMS) which is currently being incubated in Hyperledger Indy.

Aries includes an encrypted messaging system for off-ledger interactions between clients across different transport protocols and the ability to abstract higher level protocols through API-based secure messaging interactions.

Additional technology from another Hyperledger project, Hyperledger Ursa, is being leveraged within Aries. An implementation of Zero Knowledge Proof (ZKP) capable W3C verifiable credentials using the ZKP primitives is being included. ZKP-capable W3C verifiable credentials can represent the same knowledge that may be found in physical credentials, such as a driver’s license, passport or health insurance card, but includes privacy-preserving and data-minimization features.


Image source: https://www.hyperledger.org/blog/2019/05/14/announcing-hyperledger-aries,-infrastructure-supporting-interoperable-identity-solutions

While the generic Aries resolver interface will support Hyperledger Indy, it is flexible that developers can build a pluggable method using another decentralized identifier (DID) method resolver based upon Hyperledger Fabric or Ethereum.

Moving forward, the project is focused on enhancing identity storage and exchange capabilities. George explains:

The ultimate goal of Hyperledger Aries is to provide a dynamic set of capabilities to store and exchange data related to blockchain-based identity. These capabilities will range from the secured, secret storage of data, such as private keys, up to the capability of globally accessible data that can be viewed and accessed by anyone. An example of such support is the creation of a secure storage solution similar to the wallet available in Hyperledger Indy today.

Developers can learn more about Hyperledger Aries by visiting their wiki or joining the Hyperledger chat channel.



Aries Python Agent SDK Getting Started Guide ( none for GO yet )

https://github.com/hyperledger/aries-cloudagent-python/tree/master/docs/GettingStartedAriesDev

This guide is to get you from (pretty much) zero to developing code for issuing (and verifying) credentials with your own Aries agent. On the way, you'll look at Hyperledger Indy and how it works, find out about the architecture and components of an Aries agent and its underlying messaging protocols. Scan the list of topics below and jump in as soon as you hit a topic you don't know.

Note that in the guidance we have here, we include not only the links to look at, but we recommend that you not look at certain material to which you might naturally gravitate. That's because the material is out of date and will take you down some unnecessary rabbit holes. Keep your eyes on the goal - developing with Indy and Aries.



Using OIDC Authentication with a DID


Verifiable Credential Authentication with OpenID Connect (VC-AuthN OIDC)

https://github.com/bcgov/vc-authn-oidc


This repository is the home of a project to achieve verifiable credential based authentication using OpenID Connect.

Run in Debug Mode

The VCAuthn-Service has two main dependencies

  1. A backend database, postgres is used as the provider
  2. An instance of ACA-Py for handling the interactions with verifiable credentials

To run the OIDC-Controller in debug, first you must run these dependencies with the following command

    docker-compose -f ./docker/docker-compose.local-debug.yml build
    docker-compose -f ./docker/docker-compose.local-debug.yml up

Following this you can either launch the VCAuthn-Service in debug via an IDE like VS Code or Visual Studio or run the following command

dotnet run ./src/VCAuthn

Quick Demo using VON network

You will need an instance of von-network running in Docker


https://github.com/bcgov/vc-authn-oidc/blob/master/docs/README.md

authentication-oidc-verifiable-credential-from-oidc-for-aries-agent-2020.pdf


Verification Flow


this particular integration aims to provide an easy integration path that allows parties to start leveraging the power of verifiable credentials for user authentication in a non-disruptive fashion. This is achieved by extending the vastly popular OpenID Connect family of specifications.

In reference to the above diagram. A supporting OP will act as the verifier on behalf of a RP for a verifiable credentials presentation. This mode of integration means RP's that already support OIDC only have to extend their support to making VC-AuthN based OIDC requests to a supported OP, rather than adding full support for verifiable credential interactions directly. The holder will use an IdentityWallet (IW) mobile app to store their verifiable credentials and manage presentation requests from verifiers.



Reference OpenId Protocol

https://openid.net/specs/openid-connect-core-1_0.html#Overview



Stackoverflow notes

https://stackoverflow.com/questions/57588346/oidc-cloud-agent-vs-siop-edge-agent

This answer assumes you know a fair bit about Indy, Aries, DIDs, verifiable credentials and OIDC. I know a lot about the first set of topics, but am not an expert on OIDC, so bear with me :-).

SIOP (Self-Issued OpendID Connection Provider) is a standard extension to OIDC, althought it is not implemented by most of the IAM vendors. When implemented, an OIDC Relying Party (RP) can use the SIOP protocol to directly contact a DID holder (say, an Identity Wallet) and get back a verified identifier using a standard OIDC protocol. A project (Interop Project) at the Decentralized Identity Foundation (DIF) is using SIOP to implement DID Authentication. There is an article about the approach here - https://medium.com/decentralized-identity/using-openid-connect-with-decentralized-identifiers-24733f6fa636. The interop project can be found here: https://github.com/decentralized-identity/interop-project

An alternative that we are working on at British Columbia (BC) Gov with Mattr Global (New Zealand) uses an OIDC cloud agent to implement a standard OIDC Identity Provider (OP) that talks OIDC on one side, and uses a DID protocol (DIDComm) on the other side to talk to a Verifiable Credential holder (again, an Identity Wallet). We're using a standard OIDC client library on one side to receive authorization requests from the RP, and then (using HTTP) to send requests to an Aries Agent (based on Indy) to interact with the Identity Wallet (itself an Aries Agent - or at least one that talks DIDComm) to request a proof, and to receive back the proof. The OIDC library then takes the data from the claims, maps them into an OIDC token to return to the RP. The implmentation assumes that the RP and IdP (combination of OIDC client library and Aries Agent) are operated by the organization requesting the authorization.

This link has a picture of what the two implementation look like: https://github.com/decentralized-identity/interop-project/issues/16#issuecomment-521130043

Note that the SIOP implementation is about verifying DIDs, while the OIDC Agent implementation is focused on verifiying claims from verifiable credentials (VC). We are thinking that a degenerative case of the VC authorization is proof of a DID, so the OIDC Agent approach may be able to handle both cases.

There is a good discussion/summary of the pros and cons of the approaches here: https://github.com/decentralized-identity/interop-project/issues/9

The work we (BC Gov and Mattr Global) is here: https://github.com/bcgov/vc-authn-oidc


  • Thanks, Stephen. I have a question when you talk about SIOP at the beginning and you say: "..and get back a verified identifier using a standard OIDC protocol". My understanding of the DID Auth is that implement the authentication in two steps: 1) by validating the signatures 2) verification of the DID with the DID registry. So when you say that the wallet sends back a verified identifies, is the wallet performing those two steps I mentioned before? It does not make sense to me to ask the Issuer for the ownership verification but ask to the blockchain (let say DID Registry). Thanks! – MarcosF8 Aug 23 '19 at 8:11
  • I was doing these Microsoft labs ( didproject.azurewebsites.net/docs/overview.html) for DID (mainly Lab 4 - Authenticate DIDs) that use DID-Auth-Jose library for the wallet, it supposes to be SIOP, indeed debugging everything I was able to see that the wallet respond with the verifiable information (self-issued) but then when this response arrives at the RP, the library (did-auth-jose) makes a request to the DID Registry to verify the ownership of the DID. – MarcosF8 Aug 23 '19 at 8:34


Article - Using OpenId Connect with DIDs

https://medium.com/decentralized-identity/using-openid-connect-with-decentralized-identifiers-24733f6fa636


related github project

https://github.com/decentralized-identity/interoperability


Continious technical demonstration of interoperability between DID Methods, Wallets, Agents, Encrypted Data Vaults, and Verifiable Credentials. https://identity.foundation/interoper…

https://github.com/decentralized-identity/interoperability/blob/master/docs/InteropProject.png




RFC - Present Proof Protocol for Verification Request

https://github.com/hyperledger/aries-rfcs/tree/master/features/0037-present-proof

verification-present-proof-protocol-aries-std-2020.pdf

The present proof protocol consists of these messages:

  • Propose Proof - Prover to Verifier (optional)
  • Request Proof - Verifier to Prover
  • Present Proof - Prover to Verifier

In addition, the ack and problem-report messages are adopted into the protocol for confirmation and error handling.

This protocol is about the messages to support the presentation of verifiable claims, not about the specifics of particular verifiable presentation mechanisms. This is challenging since at the time of writing this version of the protocol, there is only one supported verifiable presentation mechanism(Hyperledger Indy). DIDComm attachments are deliberately used in messages to try to make this protocol agnostic to the specific verifiable presentation mechanism payloads. Links are provided in the message data element descriptions to details of specific verifiable presentation implementation data structures.

Choreography ( from draw.io )







MOBI questions on digital wallets


MOBI Wallet questions
Last week, we began a conversation about Trust over IP. Lucy has reached out to the Evernym team for a presentation, which will happen at our next innovation call on Wednesday, June 10th at 9 am PST - be on the lookout for invitation. 

This week,  we will discuss what is missing from the work we have been doing so far and what events need to be captured. 

Wallets. What wallet capabilities do we want to achieve with having the wallet in the vehicle? 

 
Create a clear set of questions and goals: 

How is interoperability achieved for identity wallets? Interchange standards

What security standards are used/built on?

Execution environment - where have they been deployed?

How is hardware key encryption done?

What capability should be on a wallet for VID?

What are the security, hardware and software specs needed for VID wallets?

Pricing information

Reference baseline from the wallet companies

Holding VCs in wallets including identity

What platforms are conceptually supported by these wallets?

Autonomously engage in transaction through their agents

What EAL (evaluation assurance level) does the hardware wallet have?

 
The wallet is a private key with computational elements. The main issue is where will the wallet be located? It’s most likely going to be in the ECU (Engine control unit)/ head unit. However, the issue is that the ECU is not made by the majority of OEMs. Toyota and Honda do not make their own. Having a tier 1 provide the changes on the head unit is a 3 year process before we see it in the next model of the car. 

Part of the design process should ensure that the wallet is still functional if there is an accident and the ECU is damaged. 

One outcome would be that there is an outfit (Toyota as an example) with good software with bad hardware  - Toyota could source a tier 2 wallet vendor (Riddle & Code or ZF) who will provide the software and potentially the crypto chip and they will send the package to a tier 1 (Denso) who will put it in their ECU and send it as completed assembly to Toyota. That lead time is extremely long. 

If there is a yes today, these wallets will end up in cars 7 years from now. GIven this length of time, why is it required to have the wallet in the car? Cars already have the OEM certificate inside which can be encrypted. An alternative is to have it on your phone. Or designate the OEM as custodian. However,  when you talk about congestion prices you need an autonomous agent inside the vehicle to make these transactions. There are also privacy reasons. 

In the short term, it will most likely be a custodian approach and we will need a cloud based wallet as well. There can be hardware or hybrid model for the wallet. The wallet will need to be able to do transactions off-line. The wallet will need cloud based services for backup and recovery. 

How is interoperability achieved for wallets?

DID com protocol. Interoperability at this layer is the interchange. What interchange standards apply? If we are expecting DIDs to be the medium of exchange, then the protocol (DID com) needs to be required to exchange the verifiable credentials. 

Details on key management? Do you use the same public key more than once? Is there a payment capability that we need? How are the transaction audits done?

Will still need key management as you are generating multiple public keys and will never use the public key more than once. We will need to come up with some core functionalities and requirements. 

In Aries, agents = wallets

Wallet = public/private key data store

 
Requirements for wallets:

Hold VCs (verifiable credentials) - from the manufacturer, DMV, etc - does it with some DID com capabilities. How do you get funds in and out of the wallet itself? Through transactions and payments. DID com is just messaging. The other piece that will give us interoperability is the resolve. 

DID com capabilities 

Data storage

public/private keys

Audit capabilities - ledger of DID com events

Payment capabilities

Security standards - 

Extensibility - ability to add features/ software updates

Backup/recovery - needs to be innovated because you cannot recover what’s in a chip

Resolver

Generate proofs (ZK proofs) 

 
Crypto wallets make sense if the owner of the funds is the vehicle. The core component is a crypto chip. 

What is the difference between agents and wallets?

Wallet is the container; wallet is the hard drive
Agent is the logic to get stuff in and out of the container; agent is the operating system
Evernym can also answer questions about the wallet. See article:
 




Potential Value Opportunities



Potential Challenges



Aries coordination with other identity systems: DIF, TrustID etc


Jim Mason : are these docs current for the current release ?? https://trustos.readthedocs.io/en/latest/id.html
Jorge Ordovas : This docs are related to Telefonica’s TrustOS API, but not related to TrustID (the documentation is in the GitHub repository Maria Teresa is presenting, on Hyperledger Labs)
Jorge Ordovas : https://github.com/hyperledger-labs/TrustID
Rouven Heck : The interOp Charter: https://docs.google.com/document/d/1a01GQVtZB7tDVcm9avS8zuYPHQzEEDtTOEh4Bqu-8Bs/edit
Rouven Heck : https://identity.foundation/interop/
Rouven Heck : https://github.com/decentralized-identity/interoperability
Rouven Heck : this working group meets weekly ^^
Rouven Heck : recently kicked off, so all pretty new
Jim Mason : Thanks @rouven — looks good. Aries already has done some work with OIDC for authentication to legacy systems as well
Rouven Heck : There was recently a workshop with OIDC to discuss/represent DID Auth SIOP, there is close collaboration happening: https://identity.foundation/working-groups/authentication.html
Rouven Heck : DIF has people from the Aries community part of it. Might be the same effort
Rouven Heck : similar with DIDComm - close collaboration across ecosystems


Candidate Solutions



Old EDX Indy, Aries course LFS 272x

https://courses.edx.org/courses/course-v1:LinuxFoundationX+LFS172x+3T2019/course/


digital trust goal

about identity on the Internet and being able to trust the data passed to you. They are about being able to prove to others who you are and you being certain who they are






Aries Meetings


m201028 - aries agent updates and BC.gov info

-------------
aca.pug>

stephen curran
andrew whitehead
telegram sam
wade 


hardening revocation handling in acapy 5.5

deployments of credentials to orgbook

issuing credentials to humans
verifier kit ( eg tsa )

std apps for verifiable credentials ( eg tsa )


From Wade to Me: (Privately) (2:08 PM)

Regarding volumes.  We BC Gov, have experience with scales in the 10 to 15 million credential area.
Also volume loading of those credentials.



andrew whitehead

record api transaction interface for Indy lib

	sqlite type rust lib
	prep stmts
	static validations



From Wade to Me: (Privately) (2:08 PM)

Regarding volumes.  We BC Gov, have experience with scales in the 10 to 15 million credential area.
Also volume loading of those credentials.


From Me to Wade: (Privately) (2:10 PM)

Thanks very much. My State is probably similar in size to bc.gov  … 700K businesses to license etc
We have 1 M individual incense transactions per year


From Wade to Me: (Privately) (2:11 PM)

9,995,053 creds in BC right now.


From Me to Wade: (Privately) (2:11 PM)

excellent. that would be a good capacity for where we may get to.


From Wade to Me: (Privately) (2:12 PM)

11,209,434 for the Ontario version of OrgBook


From Stephen Klump aka 613 612 7749 to Everyone: (2:12 PM)

Work in progress: https://github.com/sklump/aries-rfcs/tree/441-present-proof-best-practices/concepts/0441-present-proof-best-practices


From Wade to Me: (Privately) (2:15 PM)

The wallet for Ontario is currently 254GB
Most of the space in the wallets is consumed by tags.


From Wade to Me: (Privately) (2:17 PM)

You need to be concerned about credential exchange records, as they can cause significant bloat if you done clean them up.


From Me to Wade: (Privately) (2:20 PM)

Do you have an email ? ( i’m jmason900@yahoo.com ). I would love to have you present at https://wiki.hyperledger.org/display/PSSIG on the work your team has done for bc.gov
sorry - you are doing this for Ontario or BC?


From Wade to Me: (Privately) (2:20 PM)

Both
We're also helping the Federal government.


From Me to Wade: (Privately) (2:21 PM)

excellent .. thanks .. let me know if you have the interest and the time .. the group would really benefit from your experi
ence

I'm in the BC DTS team with Stephen Ian, Emiliano, and Andrew.
I'm the SRE and DevOps engineer.


From Wade to Me: (Privately) (2:22 PM)

Contact info can be found here; https://github.com/WadeBarnes


From Wade to Me: (Privately) (2:23 PM)

As far as presentations go Stephen is much better at that than I.


From Me to Wade: (Privately) (2:25 PM)

thanks … I will twist his arm “really hard” then .. thanks very much


You can also connect to us on http://chat.hyperledger.org/


swcurran and WadeBarnes

swcurran and WadeBarnes
Here is a list of some of our opensource work; https://github.com/search?q=topic%3Averifiable-organizations-network

From Wade to Me: (Privately) (2:30 PM)

which includes the hyperledger contributions.

From Wade to Me: (Privately) (2:31 PM)

This one in particular would be of interest to you; https://github.com/bcgov/issuer-kit


This PoC includes personal digital identity bits; https://vonx.io/safeentry/
OpenShift (k8s) configurations and links to code for that can be found here; https://github.com/bcgov/essential-services-delivery



remote web hooks api for call backs 
	use api key for wallet, transaction reference on call back
	api key in controller - controller can check in the path to grep

This is the issue: https://github.com/hyperledger/aries-cloudagent-python/issues/578

Ian>>

working on multi-tenancy
	add mediator for wallets

	mediator support presentation coming

iiw session on cam, kiva  for pssig ???




https://www.hyperledger.org/blog/2019/05/01/an-overview-of-self-sovereign-identity-the-use-case-at-the-core-of-hyperledger-indy




m200520 - review rfc verifiable credentials chains

-----------------
aries.m200520>

a> aries test harness review
	3 agents - holder, issuer, malicious 

a> find aries tutorials to test

a> stellar - create a custom token 


daniel hardman

rfc for chained credentials 
	issued and then delegated thru 3rd parties

	works w w3c credentials ( vs indy )
	vc -verifiable credentials 

i> how long are the trust chains required?
	if a trusted entity has other entity relations how are they trusted?

g> smaller trust lists, p2p trust links


ex> employment credential from acme uses a govt credential for name id
	eg passport as a cited sources for credentials 

cite sources for authority and ..

c> a credential has an embedded schema to avoid external lookups
	field - provenance proofs -- chain of data

i> can issue chained credentials but verifiers need to support chains
i> need better revocation tracking on vc

r> need to back trace the vc chain for delegation 

r> proof of employment credential and name came from govt passport

q> WHAT exactly is the proof ???  an id, a string = passport or ???
q> how do you handle changing uids from issuers ?? 
q> does each step have a nonce in the presentation of the chain?

c> bank did kyc on customer - bank saves the verification 
	has the nonce and presentation of it 
	historical provenance 
	proves there was past authority

	zkp revocations ?
	next step 
	has this credential been revoked since then?
	liveness check on revocation 

i> what was disclosed at point in time upstream is available downstream
	so use limited zkp where feasible 

q> how are parties in a chain private from one another?
	based on zkp, encryption 
	parties in chain could be private from each other

ex> look at car rental use case flow thru 

early vs late anonymous to valet -- risky




Evernym video on Future of Authentication

https://www.youtube.com/watch?v=UalIJmbkbUU



Step-by-step guide for Example



sample code block

sample code block
 



Recommended Next Steps