# Leveraging Blockchain Technology for Secure 5G Offloading Processes +
## 2 State-of-the-Art
### Authentication in 5G Networks
#### 2.2.1 Self-Sovereign Identity (SSI)  
SSI uses a decentralized registry, also known as a Verifiable Data Registry (VDR), that stores information such as DIDs (Decentralized Identifiers) and DID documents [82], which are used as identifiers of the different users inside an SSI ecosystem. This registry is usually implemented using distributed ledger technologies (DLTs), such as Blockchain, thus improving the overall security of the system by preserving the integrity and availability of the stored information [83]. SSI works with Verifiable Credentials (VCs), which are digital certificates that contain information about an individual's identity (holder) and are issued by trusted entities (issuers). These credentials are stored privately in the user's wallets, that allow users to control access to their personal information and share it selectively with websites, applications, and services. A verifier sends a Presentation Request (PR) to the holder and he or she must generate a Verifiable Presentation (VP) and send it back to the verifier, who then can verify it. More Information about how SSI works can be read in the Verifiable Credentials Data Model v2.0 from the W3C [84]. The SSI not only works for people, but also for machines. In this context, several authors have extended its application to IoT devices [74; 85; 86]. There are several technologies and frameworks that enable the usage of SSI including Hyperledger Aries [87], Veramo [88], Blockstack [89], Veres One [90], and Jolocom [91], among others. Among all these existing SSI technologies, Hyperledger Aries stands out [87] for its high maturity level as well as lower delay and cost. Aries provides a shared, reusable, interoperable toolset designed for creating, transmitting, and storing verifiable credentials. Hyperledger Aries is the evolution of Hyperledger Indy [92]. Currently, Hyperledger Indy remains as a set of libraries and tools that allow to the deployment of a purpose-built distributed ledger for decentralized identity. The key difference between them lies in their functionalities. Aries primarily covers the agent (client) part of a decentralized identity application that is intended to be agnostic to the underlying ledger/DIDs/verifiable credentials layer. However, Indy is a decentralized identity implementation including support for a ledger (VDR), DIDs, and verifiable credentials. Initially, the idea was to move the agents code implemented in Indy to Aries, and so the first working versions of Aries use Indy underneath for the decentralized identity components. Over time, those components will become pluggable, and additional decentralized identity components will be supported. Thus, major parts of the indy-sdk will be deprecated, as they are now being migrated to Aries. The Hyperledger Aries Cloud Agent [93] (ACA-Py) is a component within the Hyperledger Aries project. The ACA-Py specifically focuses on providing a framework for building and deploying cloud-based agents. ACA-Py operates within the second and third layers of the Trust Over IP framework [94], utilizing DIDComm messaging [95] and Hyperledger Aries protocols. The term cloud means that ACA-Py is designed to run on servers, being not intended for mobile device deployment. To interact with ACA-Py, developers need to implement a controller that communicates with it by sending HTTP requests and receiving webhook notifications. Due to this modular design, it is adequate to be used in the IoT, such as 5G user equipment. By minimizing the piece of code that runs on the IoT (controller) it is compatible with constrained devices, and the SSI logic (agent) runs on a separate constraint-free server. It also allows developers to use any language of convenience for implementing the HTTP requests. Finally, running most of the code on a cloud server has some security advantages, that is, servers are typically highly protected and backed by cloud service providers and automatically apply updates and patches, which ensures that the client is always protected against known vulnerabilities.