# Towards a Catalogue of Self-Sovereign Identity Design Patterns
## 1 Introduction  
Self-sovereign identity (SSI) is a novel identity approach that presents a shift from current, centralised, and federated identity models to models following the principles of decentralisation and user-centrism. It provides a means for identification, authentication, and authorisation without the involvement of external entities, such as identity providers and certificate authorities, responsible for identity provisioning and management in current approaches. Therefore, users are central to digital interactions. They are responsible for obtaining, storing, managing, and distributing their identity data.  
The concept arose with the growing interest in the shift towards decentralisation, specifically after the successes of blockchain technology, which was presented as a promising solution in the field of identity management for solving problems such as data centralisation, single point of failure, lack of data control, anonymity, privacy and security vulnerabilities, etc. Although the SSI approach solves many problems, new challenges have emerged that are nowadays being addressed by numerous researchers, projects, companies, and organisations, such as the World Wide Web Consortium (W3C), the Decentralised Identity Foundation (DIF), The Sovrin Foundation, and Trust Over IP (ToIP), which are striving to define the scope, standardise the protocols and artefacts included in the SSI ecosystem, and validate it through proofs-of-concept (PoC). Even though the concept is gaining traction and interest in academia and industry, the SSI field is dominated by proposals. While the idea is well known, it can be implemented in different ways, which is reflected in the absence of a well-defined architecture. Therefore, the best implementation is still a matter of research, the requirements of the individual system, and its fieldof application. Consequently, many studies propose and present systems/solutions, IT architectures, and frameworks, and address authentication, security, trust, and privacy. On the other hand, there are almost no studies addressing usability, user experience, patterns, and best practices [1]. There is a lack of systematic architectural design for SSI systems that can support methodical development, which can potentially lead to security risks and vulnerabilities in the systems [2]. Well-designed and implemented systems are crucial to avoid failures and to the broader adoption of SSI solutions in general. Hence, the main objective of this study was to identify design patterns and good practices of the SSI ecosystems. The study presents a catalogue of thirty-five SSI design patterns that can serve as a starting point for a possible SSI system design. The catalogue is based on a literature review, as well as a technical documentation review, which focused on existing SSI implementations and best practices.  
The remainder of this paper is structured as follows. Section 2 outlines the background and related work and provides knowledge on the main concepts and technologies needed for understanding the work. It includes several sections describing SSI concepts such as actors, process flows, building blocks, etc. (Section 2.1) defining the concept of software design patterns (Section 2.2), and presenting related work on design patterns that formed the starting point of our study (Section 2.3). Section 3 presents the main contribution of the research. It defines the objectives (Section 3.1) and the research methodology (Section 3.2). It presents a summary of the identified design patterns and their classification (Section 3.3), while also including a representative example of a chosen pattern (Section 3.4). Finally, Section 4 provides a discussion, and Section 5 presents the conclusions, possibilities for extending and improving the study, and opportunities for future work.