SELF Identity Documentation

website·Indexed 32 days ago

https://docs.selfid.com

Documentation for SELF, a self-custodial identity wallet and network. Includes guides on the Multi-Dimensional Identity Protocol (MDIP), Connect Your SELF (CYS) authentication flows, Sign In With Your SELF (SIWYS), and the management of DIDs, attestations, and digital genomes using atoms and molecules.

Tokens
8.3K
Snippets
25
Records
72
Agent score
56%

What's inside SELF

  1. Overview of the SELF ID identity standard

    SELF is a decentralized identity standard that uses Decentralized Identifiers (DIDs) and Verifiable Credentials (VCs) to give users ownership and control over their data (referred to as their "Digital Genome"). It removes the need for centralized authorities by allowing users to co-own data with platforms, enabling attestors to issue verifiable credentials, and allowing requestors to verify those credentials without centralized intermediaries.
  2. Overview of Connect Your SELF (CYS) decentralized authentication

    Connect Your SELF (CYS) is a decentralized authentication tool based on self-sovereign identity and verifiable credentials. Unlike traditional systems that rely on centralized providers (e.g., Google, Facebook) or password databases, CYS allows users to authenticate by responding to cryptographic challenges. This eliminates single points of failure, removes the need for password management, and gives users full control over what personal information they share with applications.
  3. Overview of the SELF Mobile App

    The SELF Mobile App is a self-custodial identity wallet used to securely manage digital identities and data. It allows users to collect, organize, and share 'molecules'—digital versions of real-world credentials such as diplomas, licenses, and certificates—while maintaining full control over information sharing.
  4. Use Sign In With Your Self (SIWYS) for authentication

    Sign In With Your Self™ (SIWYS) is a decentralized, passwordless authentication solution. It replaces traditional passwords to eliminate centralization risks and vulnerabilities. SIWYS allows users to maintain control over their access and enables the sharing of specific data during the authentication process for personalized interactions.
  5. Implement unique identification using DIDs

    In the SELF network, every object—including Identities, Molecules, Challenges, Responses, and Templates—is assigned a unique Decentralized Identifier (DID). This architecture ensures that all objects are globally addressable across the decentralized network, cryptographically secure against tampering, and independently verifiable without a central authority.
  6. Understand the Multi-Dimensional Identity Protocol (MDIP)

    The Multi-Dimensional Identity Protocol (MDIP) is a decentralized identity (DID) method conforming to the W3C DID Standard. It allows participants to own, control, and interact with digital identities in a way that is interoperable, privacy-preserving, secure, transparent, and verifiable. Unlike traditional identity systems, MDIP uses a multi-dimensional approach, allowing users to manage multiple facets of their identity and validate claims via Verifiable Credentials (VCs) issued by any identity within the network.
  7. Understand the CYS (Connect Your SELF) authentication flow

    The CYS process enables secure authentication using a challenge-response paradigm. Unlike credential requests, CYS does not exchange credentials; instead, it proves control over an identity by having the user's SELF agent sign a challenge.

    Prerequisites: Keymaster must be installed, initialized, and started before implementing this flow.

    Workflow Steps:

    1. Initiate Challenge: The relying party creates a challenge via the Keymaster SDK and specifies a callback endpoint.
    2. User Receives Challenge: The user's SELF agent receives and signs the challenge with their private key.
    3. Submit Response: The signed challenge is sent back to the relying party's callback endpoint.
    4. Verify Response: The relying party verifies the signature to confirm the user's identity.
  8. Understand the SIWYS (Sign In With Your SELF) authentication flow

    The SIWYS process enables secure authentication using a challenge-response paradigm. Unlike credential requests, SIWYS does not request or exchange credentials; it focuses solely on proving control over an identity.

    The flow consists of four steps:

    1. Initiate Challenge: The relying party creates a challenge via the Keymaster SDK and specifies a callback endpoint.
    2. User Receives Challenge: The user's SELF agent receives the challenge and signs it with their private key.
    3. Submit Response: The signed challenge is sent back to the relying party's callback endpoint.
    4. Verify Response: The relying party verifies the signature to confirm the user's identity.

    Prerequisite: Keymaster must be installed, initialized, and started before implementing this flow.

  9. Understand the SELF identity wallet and app

    SELF is a self-custodial identity wallet that provides users with full control over their digital identities and 'Molecules' (data units). It is secured via a private key to ensure privacy, security, and autonomy, allowing users to manage multiple identities and selectively share information within the network.
  10. Restore a genome using a Backup File

    A wallet genome can be restored by importing a previously downloaded encrypted backup file from the device's local storage.
  11. Create Verifiable Credentials using Templates

    Molecules (Verifiable Credentials) are created using Templates. Templates define the structure and rules for the Molecule to ensure consistency and compatibility across the network. They can be used for a range of data, from basic personal information (name, address) to complex professional certifications or attestations.
  12. Manage authentication challenges and responses

    Keymaster provides a workflow for challenge-response authentication: create a challenge with a callback URL, generate a response for a specific DID, and verify that response.
    // 1. Create a Challenge
    await Keymaster.createChallenge({
      callback: "https://www.your-domain.com/api/auth",
    });
    
    // 2. Create a Response
    await Keymaster.createResponse(
      "did:test:z3v8AuagJiXARFGw3B8Mc6DrLBC2thMzjgeUZWQvHcyPVBxAYZv",
    );
    
    // 3. Verify Response
    await Keymaster.verifyResponse(
      "did:test:z3v8AuagJiXARFGw3B8Mc6DrLBC2thMzjgeUZWQvHcyPVBxAYZv",
    );