SSI Simulation

Willkommen in der Zukunft der digitalen Identität. Diese interaktive Demo macht das abstrakte Konzept von Self-Sovereign Identity (SSI) greifbar. Erlebe hands-on, wie digitale Ausweise funktionieren – sicher, dezentral und nutzerzentriert.

Gefällt dir das Projekt?

Spendier mir einen Kaffee
⚖️

Das Vertrauensdreieck

Das SSI-Ökosystem basiert auf drei Rollen: Issuer (Aussteller), Holder (Nutzer) und Verifier (Prüfer). Du lernst interaktiv, wie diese Parteien vertrauensvoll zusammenarbeiten, ohne auf zentrale Datenbanken angewiesen zu sein. Zudem kannst du jederzeit neue digitale Identitäten für Personen und Organisationen anlegen und verwalten.

Grundlagen
🎯

Use-Cases

Hier definierst du, welche Art von digitalem Nachweis (Verifiable Credential - VC) erstellt werden soll. Die Auswahl reicht von hoheitlichen Dokumenten wie der E-ID bis hin zu privatwirtschaftlichen Zertifikaten oder Tickets. Damit bestimmst du den Kontext für die nachfolgende Ausstellung und Prüfung.

Szenarien
🏛️

Base & Trust Registry

Dezentrale Register (Base Registry) und Vertrauenslisten (Trust Registry) bilden das technische Fundament für globale Auffindbarkeit. Du erfährst, wie öffentliche Schlüssel (DIDs) hinterlegt werden, ohne personenbezogene Daten zentral zu speichern. Zusätzlich kannst du neue Aussteller (Issuer) konfigurieren und in die Vertrauensliste eintragen.

Infrastruktur
🔏

VC Ausstellen

In diesem Schritt erstellt der gewählte Aussteller (Issuer) einen manipulationssicheren digitalen Nachweis (als Verifiable Credential) für einen Nutzer (Holder). Der fertige Nachweis wird kryptografisch signiert und sicher in der Wallet des Nutzers abgelegt. Dabei wird dir Schritt für Schritt visualisiert, wie ein VC technisch aufgebaut ist.

Prozess
🕵️

VP Prüfen

Wähle einen Geschäftsprozess, der einen spezifischen digitalen Nachweis (VC) erfordert, und lade das entsprechende Wallet eines Holders. Der Prüfer (Verifier) fordert eine Verifiable Presentation (VP) an und validiert deren Echtheit in Echtzeit. Der komplexe mathematische Prüfprozess wird hierbei transparent und verständlich in Einzelschritten dargestellt.

Prozess
🧪

Weitere Simulationen

  • 👁️‍🗨️ Selektive Offenlegung: Datensparsamkeit (nur das Nötigste zeigen).
  • 🚫 Revocation: Ungültige/Widerrufene Nachweise erkennen.
  • 📢 Incident Reporting: Verdächtige Verifier melden & erkennen.
  • 🛡️ Manipulationstest: Daten verändern & Sicherheit prüfen.
  • 📲 Backup & Recovery: Wallet Wiederherstellung simulieren.
  • 🗃️ Data Manager: Demo Daten verwalten.
Deep Dive
👇 Wähle unten einen Tab, um zu starten
⚖️

Setup Vertrauensdreieck

Erstelle die Identitäten (Issuer, Holder, Verifier) und generiere ihre kryptografischen Schlüsselpaare lokal im Browser.

🧰 Welches Problem wird gelöst?

Digitales Vertrauen ist schwer herzustellen. Oft müssen wir uns auf zentrale Vermittler (wie "Login mit Google") verlassen, um Identitäten zu prüfen.

SSI löst das durch kryptografische Schlüsselpaare, die den Nutzern selbst gehören – ohne zentrale Abhängigkeit.

🧪 Was passiert hier?

Wir generieren ein komplettes Ökosystem lokal in deinem Browser. Jeder Akteur erhält eine eigene DID (Dezentrale ID) und Schlüsselpaare:
  • Issuer: Der Aussteller
    (beglaubigt Daten durch Signaturen)
  • Holder: Der Besitzer
    (verwaltet Daten in der Wallet)
  • Verifier: Der Prüfer
    (validiert Echtheit kryptografisch)

🇨🇭 CH Vertrauensinfrastruktur

Der Bund agiert als Vertrauensanker ("Trust Root"). Er betreibt eine öffentliche Trust Registry.

Darin steht z.B.: "Der kryptografische Schlüssel XY... gehört dem Kanton Aargau und darf E-IDs ausstellen." So entsteht Vertrauen ohne zentrale Datenspeicherung.

🤝

SSI Vertrauensdreieck erstellen

Erstelle die Identitäten für die Simulation.

🏛️

1. Issuer (Aussteller)

👤

2. Holder (Besitzer)

🕵️

3. Verifier (Prüfer)

⚙️

SSI Vertrauensdreieck auswählen

Wähle die Identitäten für die Simulation aus.

🏛️

Issuer Auswahl

👤

Holder Auswahl

🕵️

Verifier Auswahl

🎯

Use-Cases

Hier wird ausgewählt, welcher Digitale Nachweis (Verifiable Credential) erstellt werden soll, durch den oben ausgewählten Issuer.

🧪 Wozu dienen Use-Cases?

Damit du nicht jedes Datenfeld einzeln definieren musst, nutzen wir hier Vorlagen (Schemas). Der gewählte Use-Case bestimmt die Struktur des digitalen Nachweises: Welche Datenfelder (Claims) wie Name, AHV-Nummer oder Mitarbeiter-ID enthalten sein sollen.

👉 Wichtig: Deine Auswahl hier dient als aktive Vorlage für den späteren Schritt "Verifiable Credential (VC) ausstellen".

1
Lade Szenario...
🏛️

Base & Trust Registry

Die technische Basis für Vertrauen: Wo finde ich Schlüssel (Base Registry) und wem darf ich vertrauen (Trust Registry)?

🧰 Welches Problem wird gelöst?

Wie prüfe ich eine digitale Unterschrift, wenn ich den Aussteller gar nicht kenne?

Ohne ein "Telefonbuch" finde ich den öffentlichen Schlüssel nicht. Und ohne eine "Liste vertrauenswürdiger Behörden" könnte jeder behaupten, das Strassenverkehrsamt zu sein. Wir brauchen also einen Ort zum Nachschlagen und Verifizieren.


Bei der Prüfung liest der Verifier zuerst, wer unterschreibt (Base Registry), und dann, ob derjenige diesen Nachweis ausstellen darf (Trust Registry).

🧪 Was passiert hier?

Wir übertragen deine vorherige Auswahl jetzt in die simulierte Infrastruktur:
  • Base Registry (DID Log):
    Der oben ausgewählte Issuer wird hier eingetragen. Damit ist sein öffentlicher Schlüssel (Public Key) später weltweit über die DID abrufbar.
  • Trust Registry:
    Wir verknüpfen den Issuer mit dem gewählten Use-Case. Das bestätigt offiziell: "Dieser Issuer darf genau diese Art von Nachweis ausstellen."

🇨🇭 CH Vertrauensinfrastruktur

Der Bund betreibt die Base- und Trust Registry. Wichtig: Dort sind keine Personendaten gespeichert!

Dort steht nur: "Der Schlüssel mit der ID did:tdw:... gehört dem Kanton Zürich und darf E-IDs ausstellen." Die Daten der Bürger bleiben sicher auf deren Smartphones.

📤 In Base Registry veröffentlichen

Identity
Aktueller Issuer
Letzter Eintrag
{}

In Trust Registry autorisieren

Permission
Gewählter VC-Typ
Letzter Eintrag
{}
🛠️ Verwaltung Base und Trust Registry

📇 Verwaltung Base Registry

Identities

Entfernt Einträge aus der Base Registry.

🧾 Verwaltung Trust Registry

Permissions

Entfernt ausgewählte Autorisierungen (pro VC-Typ).

🔏

Digitaler Nachweis ausstellen (VC)

Der Kernprozess: Eine Aussteller (Issuer) signiert Daten digital und "überträgt" sie in die Wallet des Nutzers (Holder).

🧰 Das Problem mit PDFs

Herkömmliche Dateien sind manipulierbar. Doch auch qualifiziert signierte PDFs sind keine Lösung für Ausweise:

  • Alles oder Nichts: Bei einem PDF musst du immer das ganze Dokument zeigen. Du kannst nicht nur dein Alter beweisen, ohne deine Adresse zu enthüllen.
  • Nicht maschinenlesbar: PDFs sind "digitales Papier" für menschliche Augen. Wallets und Automaten benötigen aber strukturierte Daten.

🧪 Was passiert hier?

Wir erstellen ein valides JSON-Dokument nach dem offiziellen W3C Verifiable Credentials Data Model ↗.

Der oben gewählte Issuer erstellt nun das VC für deinen gewählten Use-Case. Du definierst dabei die Parameter:
  • Farbe: Wie soll die Karte im Wallet aussehen?
  • Gültigkeit: Wann läuft der Nachweis ab?
  • Geräte-Binding: Soll das VC an dein Wallet gebunden sein? (Verhindert das Kopieren auf andere Handys).

Kurzum:
  • Signieren:
    Der Issuer nutzt seinen Private Key zum Versiegeln.
  • Übertragen:
    Das VC landet direkt in der Wallet des Holders.

🇨🇭 CH Vertrauensinfrastruktur

Während wir in der Demo das generische W3C-Modell nutzen, setzt die Schweiz auf SD-JWT (IETF Standard) ↗.

Der Unterschied: Das Demo-VC (W3C) hat oft nur eine Signatur über alles.
SD-JWT hingegen verpackt jedes Datenfeld einzeln ("Salt"). Das ermöglicht später die selektive Offenlegung (Datensparsamkeit), ohne die Signatur zu brechen.

🔏

1 Aussteller (Issuer)

🔏
-
👤

2 Empfänger-Daten (Holder)

📝

3 Fachdaten (Claims)

Use-Case: Lade...

4 Einstellungen

5 Design

🔄 Typischer Ablauf – in 5 einfachen Schritten
1️⃣ Antrag
Du beantragst einen Nachweis (z.B. im Webportal der Gemeinde oder im Intranet). Du identifizierst dich dort einmalig.
2️⃣ Erstellung
Der Issuer (Aussteller) prüft deine Daten und stellt das JSON-Dokument zusammen (Vorname, Adresse, Berechtigung).
3️⃣ Signatur
Der Issuer berechnet einen Hash (Fingerabdruck) und signiert ihn mit seinem geheimen Private Key.
4️⃣ Verpacken
Die Signatur wird als Proof an das Dokument angehängt. Jetzt ist es ein echtes Verifiable Credential (VC).
5️⃣ Lieferung
Das VC wird an deine Wallet gesendet und dort sicher gespeichert. Du hast es nun immer griffbereit.
🏭 Was macht der Aussteller? (Zusammenfassung)

Der Issuer bürgt für die Richtigkeit der Daten. Er nimmt die Fachdaten (Claims), berechnet einen Hash (digitales Einfrieren) und signiert diesen mit seinem Private Key.
Gleichzeitig veröffentlicht er seinen Public Key in der Infrastruktur (Trust Registry), damit andere die Signatur prüfen können.
Einfach gedacht: „Daten schreiben“ + „Einfrieren“ + „Stempeln (Signieren)“ + „Abschicken“ ⇒ VC.

🧾 VC Erstellt

Noch kein VC ausgestellt.
🕵️

Nachweis prüfen (VP)

Der Moment der Wahrheit: Der Verifier prüft die kryptografische Echtheit, ohne beim Issuer (Staat) nachfragen zu müssen.

🧰 Das "Telefon"-Problem

Wie prüft ein Türsteher heute einen Ausweis? Er leuchtet mit einer UV-Lampe darauf. Aber er kann nicht sicher wissen, ob der Ausweis nicht gestohlen oder gestern als ungültig erklärt wurde.

Um sicher zu sein, müsste er theoretisch bei der Behörde anrufen ("Phone-Home"). Das ist langsam, teuer und ein Datenschutz-Albtraum (Überwachung).

Der Staat schaut nicht zu (Unlinkability):
Wenn du dein Alter im Supermarkt prüfst, erfährt das Bundesamt (Issuer) nichts davon. Die Prüfung findet direkt zwischen deinem Handy und der Kasse statt. Es gibt keinen zentralen Server, der Nutzungsprotokolle anlegt ("Kein Phone-Home").

🧪 Was passiert hier?

Demo (Vereinfacht): Wir nutzen eine klassische W3C Verifiable Presentation ↗. Das ist ein einfaches JSON-Paket.


Hier spielst du den Prüfvorgang durch:
  1. Wallet wählen:
    Du siehst sofort, welche digitalen Nachweise (VCs) du besitzt.
  2. Szenario wählen:
    Ein Prüfer (z.B. Kiosk) fordert einen spezifischen Nachweis an.
  3. Präsentieren:
    In diesem Schritt senden wir das ganze VC (alle Attribute) zur Prüfung.
👉 Tipp: Die selektive Offenlegung (nur einzelne Felder zeigen) kannst du unten bei "Weitere Simulationen" testen.

🇨🇭 CH Vertrauensinfrastruktur

Die CH Vertrauensinfrastruktur nutzt für die Übertragung das Protokoll OIDC4VP ↗ (OpenID Connect for Verifiable Presentations).

Warum OIDC4VP? Es bietet mehr Sicherheit. Der Prüfer (Verifier) muss sich gegenüber dem Wallet authentifizieren. So sieht der Nutzer auf dem Handy genau, wer die Daten anfordert (z.B. "Bundesamt für Informatik"), bevor er zustimmt.

🔄 Typischer Ablauf – in 5 einfachen Schritten
1️⃣ Start
Du siehst einen QR-Code oder klickst „Nachweis vorzeigen“. Oft bist du bereits eingeloggt.
2️⃣ Wallet öffnet
Deine Wallet zeigt an, was die Gegenseite sehen möchte. Du behältst die Kontrolle.
3️⃣ Auswahl
Du wählst einen passenden VC. Optional selektive Offenlegung (nur das Nötige).
4️⃣ Senden
Wallet erstellt VP (Umschlag) & signiert. Gegenstelle prüft Signaturen & Statusliste.
5️⃣ Ergebnis
Du erhältst „gültig“. Danach: Rabatt, Zutritt, Abschluss – ohne Papier.
🕵️ Was macht der Prüfer? (Zusammenfassung)

Der Holder verpackt dein VC in eine VP und signiert diese mit seinem Private-Key.
Der Verifier lädt die Schlüssel, bildet den gleichen Hash, prüft die Issuer-Signatur (Inhalt echt) und die Holder-Signatur (Umschlag echt) und schaut in die Statusliste.
Einfach gedacht: „Stempel stimmt“ (Issuer) + „Umschlag echt“ (Holder) + „nicht widerrufen“ (Status) + „berechtigt“ (Registry) ⇒ valid.

1 👤 Identität (Wallet) wählen

Wähle hier, welche Person (Wallet) geprüft werden soll.

2 Wählen Sie einen Szenario (Geschäftsprozess)

3 Prüfbericht (Validation Report)

📡 JSON Protokoll (Request / Response) Anzeigen
Verifier Request
Waiting...
Wallet Response (VP)
Waiting...
🧪

Weitere Simulationen

Vertiefe dein Wissen: Teste Datensparsamkeit, Widerrufe Nachweise, Manipuliere Daten in einem VC, erkenne böse Verifier und prüfe Wiederherstellung von VCs.

👁️‍🗨️

Selektive Offenlegung & Verifier-Vertrauen

Konfiguriere eine Anfrage und entscheide als Nutzer, was du teilst.

💡 Warum Selektive Offenlegung?

  • Gezielte Anfragen: Die Prüfstellen fragen gezielt Attribute oder Aussagen an (z. B. „ist 18+“, „wohnhaft in …“). Deine Wallet zeigt die Anfrage transparent an.
  • Nur das Nötigste teilen: Statt ein ganzes „Datenblatt“ zu zeigen, beweist du nur das benötigte Merkmal (z. B. „≥18: Ja“ oder „Mitglied: Ja“) -> "Zero-Knowledge"
  • Mehr Kontrolle für dich: Du entscheidest pro Anfrage, welche Felder sichtbar sind.
  • Weniger Risiko: Weniger offengelegte Daten bedeutet weniger Kopien in fremden Systemen.
  • Schneller & bequemer: Prüfer bekommen genau das Kriterium, das sie brauchen – kein Papier, keine PDFs.
🧪

🧪 In dieser Demo (lokal)

Wir erstellen eine Verifiable Presentation (VP) basierend auf dem W3C-Standard.

Hier in der Demo kann der Verifier (Prüfstelle) einen ganzen Digitalen Nachweis (VC) verlangen, nur einzelne Attribute oder sogar nur eine Regel definieren wie "Alter >= 18" (Datensparsamkeit).

Wichtig zur Einordnung: Echte Krypto-Beweise (Zero-Knowledge) benötigen komplexe Mathematik, die den Browser verlangsamen würde.
Diese Demo erzeugt echte JSON-Strukturen, simuliert aber den mathematischen Teil der "versteckten Felder", damit du das Prinzip von Selektiver Offenlegung flüssig erleben kannst.
🇨🇭

🇨🇭 CH Vertrauensinfrastruktur

Die CH Vertrauensinfrastruktur nutzt SD-JWT. SD-JWT nutzt einen Trick, um "Zero-Knowledge"-Eigenschaften zu erreichen: Hashes & Salts.

Stell dir vor, der Issuer schreibt jedes Datenfeld auf einen Zettel, legt ein geheimes Zufallswort ("Salt") dazu, macht ein Foto davon (Hash) und signiert nur das Fotoalbum.

Wenn du später dein Alter beweisen willst, gibst du dem Prüfer nur den Zettel mit dem Alter und dem Salt. Die anderen Zettel behältst du. Der Prüfer vergleicht das Foto (Hash) und sieht: "Ja, das gehört zum signierten Album".
👤

1 Wallet (Holder)

Lade Inhalte...
🏢

2 Verifier

📋

3 Szenario (Use-Case)

📝

4 Datenfilter

🔮 Regel (Zero-Knowledge)
🚫

Revocation: Wiederruf & Statuslisten

💡 Warum Status-Listen?

  • Privatsphäre (Privacy): Der Issuer sieht nicht, wer geprüft wird. Der Prüfer lädt anonym die ganze Liste, statt den Issuer nach einer Person zu fragen.
  • Effizienz: 1 Bit pro Ausweis. 1 Million Ausweise = nur ca. 125 KB Dateigrösse.
  • Caching: Die Liste kann vom Prüfer zwischengespeichert werden (weniger Traffic).
🧪

🧪 In dieser Demo (lokal)

Wir simulieren den Webserver und speichern die Bits im LocalStorage deines Browsers.

Technischer Blick:
  • 📂 Speicherort: Key demo.statuslist.[DID]
  • 🔢 Format: JSON mit Array bits: [0,0,1,...]
  • 👀 Ansehen: Tab "LocalStorage" oder F12-Tools.

Klickst du oben auf "Widerrufen", setzen wir das Bit an der Position (Index) des VCs von 0 auf 1.

🇨🇭

🇨🇭 CH Vertrauensinfrastruktur

Die Statusliste ist eine Datei, die auf einem hochverfügbaren Webserver (HTTPS) liegt.

Die Liste ist selbst ein signiertes VC des Issuers. So kann niemand die Liste fälschen, selbst wenn der Server gehackt wird.

  • 🔗 Verlinkung: Dein VC enthält unter credentialStatus.id die URL zur Liste.
  • ✍️ Authentizität: Prüfer lädt Liste & prüft Signatur des Issuers.
  • 🔍 Check: Ist Bit an Position statusListIndex == 0?
⚡ Wie funktioniert digitaler Widerruf?
📢

Kein "Rückruf"

Wir können das VC nicht aus dem Wallet löschen. Stattdessen markieren wir es global als ungültig.

📊

Die Status-Liste

Der Issuer führt eine Bit-Liste. 0=Gültig, 1=Widerrufen. Extrem effizient: 100'000 Ausweise brauchen nur 12kb.

🕵️

Privatsphäre

Der Prüfer lädt nur die Bit-Liste. Er sieht "Nr. 45 ist ungültig", weiss aber nicht, wem Nr. 45 gehört.

🔍 Blick in den Code: Wo steht das im VC?

VC Ausschnitt
"credentialStatus": {
  "type": "StatusList2021Entry",
  "statusPurpose": "revocation",
  "id": "did:demo:8aae...#sl-175",
  "statusListIndex": "175",
  "statusListCredential": "https://registry.../list"
}
Index: 175
Deine Position in der Liste.
Der Ausweis enthält selbst keine Information über "gültig" oder "ungültig". Er sagt dem Prüfer nur: "Schau in der Liste an Stelle 175 nach."
URL / Source
Wo liegt die Liste?
Der Link zur aktuellen Status-Liste (auf dem Server des Issuers oder der Trust Registry). Der Prüfer lädt diese Datei herunter.
💡 Zusammengefasst: Der Prüfer lädt die Liste von der URL, springt zu Bit #175 und prüft: Ist es 0 (OK) oder 1 (Gesperrt)?

1 Szenario Konfiguration

Deine DID:
-

Nur der Aussteller kann widerrufen.

Statistik

0
Ausgestellt
0
Widerrufen

📡 Status-Liste Monitor (Live) 256 BIT BLOCK

Visuelle Darstellung der ersten 256 Indizes in der Registry.

0 (OK)
1 (REVOKED)
Index 0 Index 255

Ausgestellte Dokumente

Wähle einen Issuer, um VCs zu laden.