# Aries RFCs for the OpenMined Identity and Security Roadmad This aims to be a collection of resources, mainly aries rfcs, that will help provide a technical understanding of the OpenMined identity and security roadmap. Hyperledger Aries is an open source project, that forms part of a technology stack for implementing what is often termed Self-Sovereign Identity. The Trust over IP stack rfc is a great place to start - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0289-toip-stack](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0289-toip-stack). ## Establishing a DID Comm communication channel **DIDComm** is a protocol for sending communication between **agents** across a channel established first by exchanging decentralised identifiers (DIDs) through a **DIDexchange** protocol. These identifiers are called **peer DIDs**, due to the fact that they are created and managed within the context of the peer-to-peer relationship. No one else needs to be involved. DID based communication is designed to be transport agnostic - while currently most implementations use http - the idea is that you can communicate using DIDs across any transport protocol. DIDComm involved - Agents - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0004-agents](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0004-agents) - Protocols - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0003-protocols](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0003-protocols) - DID Exchange - [https://github.com/hyperledger/aries-rfcs/tree/master/features/0023-did-exchange](https://github.com/hyperledger/aries-rfcs/tree/master/features/0023-did-exchange) - DIDComm - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0005-didcomm](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0005-didcomm) - Peer DIDs - [https://openssi.github.io/peer-did-method-spec/index.html](https://openssi.github.io/peer-did-method-spec/index.html) - DIDComm transports - [https://github.com/hyperledger/aries-rfcs/tree/master/features/0025-didcomm-transports](https://github.com/hyperledger/aries-rfcs/tree/master/features/0025-didcomm-transports) ## DID Comm Messages Messages are sent across DIDComm channels wrapped inside an Encryption Envelope, these messages can be of a specific message type which defines the structure of the message. For example the Basic Message type defines a stateless user message. In the future it will be possible to verify certain trust aspects about these messages using an object called a Message Trust Context. Mediators and Relays are defined with the agent to agent communication system to enable complex topologies and flows that can further preserve end user privacy. From the rfc - "By modeling the roles of mediators and relays in routing, we can support routes that use multiple transports, routes that are not fully known (or knowable) to the sender, routes that pass through mix networks, and other advanced and powerful concepts." Through each hop between Mediators a new encryption envelope is wrapped around the agent message, this forms the basis of what is called Cross Domain messaging. We want the sender to know just enough about the message recipient's identity domain to send the message and no more. **Mediators and relays and Cross Domain Messaging seem to be a core concept in terms of meeting the initial design laid out in roadmap document.** - Message ID and Threading - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0008-message-id-and-threading](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0008-message-id-and-threading) - Encryption Envelope - [https://github.com/hyperledger/aries-rfcs/tree/master/features/0019-encryption-envelope](https://github.com/hyperledger/aries-rfcs/tree/master/features/0019-encryption-envelope) - Message Types - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0020-message-types](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0020-message-types) - Basic Message - [https://github.com/hyperledger/aries-rfcs/tree/master/features/0095-basic-message](https://github.com/hyperledger/aries-rfcs/tree/master/features/0095-basic-message) - Message Trust Context - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0029-message-trust-contexts](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0029-message-trust-contexts) - Mediators and Relays - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0046-mediators-and-relays](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0046-mediators-and-relays) - Cross Domain Messaging - [https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0094-cross-domain-messaging](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0094-cross-domain-messaging) ## Other Concepts - The idea of the **Introduce** protocol sounds interesting/useful - [https://github.com/hyperledger/aries-rfcs/tree/master/features/0028-introduce](https://github.com/hyperledger/aries-rfcs/tree/master/features/0028-introduce) - Help me discover protocol - https://github.com/hyperledger/aries-rfcs/tree/master/features/0214-help-me-discover The full collection of RFCs can be found here - [https://github.com/hyperledger/aries-rfcs](https://github.com/hyperledger/aries-rfcs)