- Bluesky-Konten sind nicht an eine bestimmte App gebunden, sondern können in mehreren atproto-basierten Apps verwendet werden; DIDs (dezentrale Identifikatoren) liefern die von Apps entkoppelte Grundlage zur Identitätsprüfung
- DIDs haben das Format
did:<method>:<identifier>; mithilfe der im DID Document enthaltenen öffentlichen Schlüssel und PDS-Position wird die Zuordnung zwischen Beitragsersteller und Konto verifiziert
did:web ist ein einfacher Ansatz, bei dem /.well-known/did.json einer Domain abgefragt wird, ist aber anfällig durch Abhängigkeiten von DNS und Registraren, Ausfälle des Webservers sowie Verzögerungen bei der Übernahme von Dokumentänderungen
- Das von Bluesky entwickelte
did:plc trennt IDs von bestimmten Domains und überlässt plc.directory den Betriebsaufwand; statt DNS muss man jedoch plc.directory vertrauen, und in Bluesky lassen sich etwa keine Blockchain-basierten DID-Verfahren verwenden
- Nutzer können durch das Registrieren zusätzlicher Schlüssel, Schlüsselrotation und den Betrieb eines eigenen PDS von Bluesky erzeugte Schlüssel entfernen und ihre Identität faktisch selbst kontrollieren; komplexes Schlüsselmanagement wird nicht allen aufgezwungen, sondern als Option für diejenigen angeboten, die es wollen
Bluesky-Konten und DID-basierte Identität
- Ein „Bluesky-Konto“ ist kein Konto, das nur in Bluesky verwendet wird, sondern ein Konto, das in mehreren Anwendungen der ATmosphere genutzt werden kann
- atproto, das zugrunde liegende Protokoll von Bluesky und anderen Apps, verwendet DIDs, um darzustellen, wer ein Nutzer ist, und um Logins oder die Urheberschaft von Beiträgen zu überprüfen
- Die 2022 vom W3C standardisierten DIDs sind dezentrale Identifikatoren, die Anwendungen als Grundlage für Identitäten verwenden können
- Die Dezentralität von DIDs besteht darin, dass nicht eine einzelne Institution festlegt, welche DID-Typen gültig sind, sondern Nutzer die DID-Methode wählen können, mit der ihre Identität verifiziert wird
- Allerdings können Anwendungen nicht automatisch alle DID-Methoden verarbeiten
- Für jede Methode muss Unterstützungscode separat implementiert werden
- Wenn eine App die Methode
foo nicht unterstützt, kann sie did:foo:1243 nicht auflösen, selbst wenn diese DID vorgelegt wird
DIDs und DID Documents
- Die Beispiel-DID
did:plc:3danwc67lo7obz2fmdg6jxcr besteht aus drei durch Doppelpunkte getrennten Teilen
- Schema:
did
- Methode:
plc
- Methodenspezifischer Identifikator:
3danwc67lo7obz2fmdg6jxcr
- Um eine DID zu verwenden, muss sie in ein DID Document aufgelöst werden
- Ein DID Document enthält Daten wie kryptografische öffentliche Schlüssel, damit das DID-Subjekt oder ein Bevollmächtigter sich authentifizieren und seine Zuordnung zu dieser DID nachweisen kann
- Das Beispieldokument enthält die für die Identitätsprüfung nötigen Informationen
id: die DID selbst
alsoKnownAs: at://steveklabnik.com
verificationMethod: Typ Multikey und publicKeyMultibase
service: PDS-Endpunkt vom Typ AtprotoPersonalDataServer
- Wenn ein beliebiger Beitrag behauptet, von einem bestimmten Nutzer verfasst worden zu sein, lässt sich die Echtheit dieser Behauptung mithilfe der Verifizierungsinformationen im Dokument prüfen
- Das Verfahren zur Auflösung einer DID in ein Dokument wird durch den jeweiligen methodenspezifischen Standard festgelegt
did:plc folgt dem PLC-Standard
did:web, eine weitere von Bluesky unterstützte Variante, wird nach der Web-Methode aufgelöst
Auflösung von did:web
- Nur sehr wenige Menschen verwenden
did:web, aber seine Struktur ist einfach, sodass der DID-Auflösungsprozess leicht zu verstehen ist
- Liz Fong-Jones’
did:web:lizthegrey.com wird aufgelöst, indem der methodenspezifische Identifikator lizthegrey.com in die folgende URL-Vorlage eingesetzt wird
https://<id>/.well-known/did.json
- Das DID Document, das unter dieser URL abgerufen wird, enthält folgende Informationen
id: did:web:lizthegrey.com
alsoKnownAs: at://web.lizthegrey.com, did:plc:i4tfenpfog244rxry5uz4vtk
verificationMethod: öffentlicher Multikey-Schlüssel für atproto
serviceEndpoint: https://pds.lizthegrey.com
Einschränkungen von did:web
did:web ist von DNS und Domain-Registraren abhängig
- Wenn der Registrar eine Domain einzieht, geht auch die Kontrolle über die DID verloren
- Auch wenn eine Domain nicht mehr genutzt wird oder nach Ablauf von jemand anderem gekauft wird, kann die Identität verloren gehen
- Dasselbe gilt, wenn ein Registrar-Konto gehackt und die Domain entwendet wird
- Der Webserver, der das DID Document bereitstellt, muss dauerhaft betrieben werden; fällt der Server aus, kann auch das Dokument nicht abgerufen werden
- Es gibt auch keine Möglichkeit, Clients sofort über Änderungen am DID Document zu informieren
- Anwendungen können weiterhin ein veraltetes Dokument verwenden
- Durch die Verzögerung zwischen Dokumentaktualisierung und Übernahme durch Anwendungen können vorübergehende Probleme entstehen, bis das aktuelle Dokument erneut abgerufen wird
Wie did:plc die Aufrechterhaltung von Identität verändert
- Bluesky entwickelte
did:plc, um die Probleme von did:web zu verringern
did:plc ruft das DID Document ab, indem die vollständige DID in die folgende URL-Vorlage eingesetzt wird
https://plc.directory/<did>
- Dass eine URL abgefragt wird, ist wie bei
did:web, doch Betrieb und Aufrechterhaltung der Identität unterscheiden sich
- Da die DID nicht an eine bestimmte Domain gebunden ist, kann man
steveklabnik.com auslaufen lassen und zu steve.klabnik.com wechseln und trotzdem dieselbe DID behalten
- Den Betrieb des Webservers übernimmt
plc.directory für den Nutzer, wodurch der Betriebsaufwand sinkt
- Das Vertrauensobjekt verschwindet dadurch nicht
- Bei
did:web muss man DNS und Domain-Registraren vertrauen
- Bei
did:plc muss man darauf vertrauen, dass plc.directory keine IDs entzieht und nicht kompromittiert wird
- Nutzer, die weder DNS noch
plc.directory vertrauen, können eine andere DID-Methode wählen, die Namen etwa über eine Blockchain auflöst
- Da Bluesky solche Methoden jedoch nicht unterstützt, können sie in Bluesky-Anwendungen nicht verwendet werden
Zugänglichkeitsprobleme und neue DID-Ansätze
did:web selbst einzurichten erfordert Aufgaben, die für nicht fachkundige Nutzer belastend sind
- Eine Domain registrieren und laufend dafür bezahlen
- Einen Webserver einrichten und JSON für das DID Document schreiben
- Den Server dauerhaft betreiben
- Private Schlüssel speichern und sicher verwalten
- Dieser Prozess ist deutlich komplexer als die Registrierung bei einer typischen Web-App und passt daher nicht zu Blueskys Ziel, auch nicht fachkundigen Nutzern die Plattform zugänglich zu machen
- Wenn
plc.directory die entsprechenden Aufgaben verwaltet, müssen Nutzer diese Schritte nicht selbst durchführen
did:webvh ist ein Ansatz, der did:web erweitert, um einige Nachteile zu beheben, und Version 1.0 erreicht hat; die konkreten Spezifikationen werden hier jedoch nicht in den Vergleich einbezogen
Wie man in Bluesky die eigene Identität selbst besitzt
- In der Standardeinstellung erzeugt Bluesky das Schlüsselpaar des Nutzers und kann auf den geheimen Schlüssel zugreifen, sodass man in gewissem Sinn sagen kann, dass Bluesky die Identität besitzt
did:plc kann zusätzliche Schlüsselpaare für eine ID registrieren und Signaturschlüssel rotieren
- Von Bluesky erzeugte Schlüssel können entfernt werden
- Sie können durch selbst erzeugte Schlüssel des Nutzers ersetzt werden
- Nur den Schlüssel zu wechseln trennt einen nicht vollständig von der Bluesky-Infrastruktur
- Damit ein PDS Beiträge signieren kann, muss er den Schlüssel des Nutzers verwenden
- Bei einem von Bluesky verwalteten PDS wird der Schlüssel normalerweise in der Bluesky-Infrastruktur gespeichert
- Um Identität von Bluesky zu trennen, muss man einen eigenen PDS betreiben und anschließend die Schlüssel rotieren
- Der Schlüssel wird in Infrastruktur gespeichert, die dem Nutzer gehört
- Danach kontrolliert Bluesky diesen Schlüssel nicht mehr
- Auch wenn die meisten Nutzer sich nicht für einen eigenen PDS und eigenes Schlüsselmanagement entscheiden, ist es eine wichtige Designeigenschaft, dass motivierte Nutzer ihre Identität faktisch selbst besitzen können
- Statt allen Nutzern direktes Schlüsselmanagement aufzuzwingen, ist es für die meisten Nutzer angemessen, es denjenigen als Option anzubieten, die es wollen
1 Kommentare
Lobste.rs-Meinungen
did:plc:, und selbst wenn es einer Non-Profit-Organisation gehört, sollte man sich fragen, ob man einer zentralen Instanz vollständig vertrauen willIch entwickle gerade ein Projekt, das W3C DID und W3C Verifiable Credentials (VC) unterstützt, während ich Keybase neu implementiere. Ziel ist es, die Eigenschaft, ein Mensch zu sein, eindeutig und zugleich privat nachzuweisen und eine dezentralisierte Identität zu besitzen, die man selbst kontrolliert
https://foks.pub/
dindabgekürzt gesehen, weiß aber nicht, ob das nur eine Gepflogenheit an meinem Arbeitsplatz oder allgemein üblich istEs ist nicht dasselbe wie eine Instanz bei Mastodon, und die Konzepte von AT und ActivityPub entsprechen sich nicht sauber eins zu eins
did:webdas Hosting eines.well-known-Servers erfordert und die Daten ohnehin fast statisch sind, warum verwendet man dann nicht direkt DNS, das sich ähnlich wie eine URL lesen lässt, wahrscheinlich gecacht wird und weniger leicht versehentlich ausfällt, etwa wie ein TXT-Record?Die Abhängigkeit von DNS und das Problem, Aktualisierungen von
did.jsonnicht leicht erkennen zu können, bleiben zwar bestehen, aber wenn das Ziel darin besteht, eine bestimmte Domain mit der Identität einer Person zu verknüpfen, scheint es sinnvoller zu sein, die Komponenten zu minimieren und direkt an DNS-Funktionalität anzuknüpfen. Ich frage mich, ob es einen Grund gibt, warum dieser Ansatz nicht funktioniert oder in der Praxis schwierig istDie tatsächlichen Beschränkungen sind allerdings etwas komplexer: https://news.ycombinator.com/item?id=38419272
Ich konnte auch zwei Vorschläge bzw. Entwürfe für
did:dnsfinden: https://danubetech.github.io/did-method-dns/ und https://datatracker.ietf.org/doc/html/draft-mayrhofer-did-dns-01