NIP-17 definiert private Direct Messages, die NIP-59-Gift-Wrapping für Sender-Privatsphäre nutzen. Anders als NIP-04-DMs, die den Sender im äußeren Event offenlegen, verbirgt NIP-17 den Sender vor Relays und beiläufigen Beobachtern.

Funktionsweise

Nachrichten sind in mehrere Verschlüsselungsschichten eingepackt:

  1. Der eigentliche Nachrichteninhalt lebt in einem Rumor-Event vom kind 14.
  2. Ein Seal verschlüsselt diesen Inhalt für den Empfänger.
  3. Ein Gift Wrap verschlüsselt den Seal erneut und veröffentlicht ihn von einem Wegwerf-Keypair aus.

Der äußere Gift Wrap nutzt ein zufälliges, Wegwerf-Keypair, sodass Relays und Beobachter nicht feststellen können, wer die Nachricht gesendet hat.

Nachrichtenstruktur

  • Kind 14 - Der eigentliche DM-Inhalt innerhalb der eingepackten Schichten
  • Kind 1059 - Das äußere Gift-Wrap-Event, das an Relays publiziert wird
  • Verwendet NIP-44-Verschlüsselung für die Payloads innerhalb des Wrapping-Flows
  • Die Spezifikation wurde verfeinert, um interaktive DM-Features wie Reaktionen besser zu unterstützen

Sicherheits- und Vertrauensmodell

  • Relays können den Sender nicht sehen, weil das Wegwerf-Keypair des Gift Wraps ihn verbirgt
  • Der Empfänger bleibt sichtbar, im p-Tag des Gift Wraps
  • Nachrichtentimestamps werden innerhalb eines Fensters randomisiert
  • Es gibt kein sichtbares Threading oder Conversation Grouping auf Relay-Ebene

Der Empfänger erfährt nach dem Entpacken trotzdem, wer die Nachricht gesendet hat. NIP-17 verbirgt die Senderidentität vor dem Netzwerk, nicht vor dem anderen Teilnehmer. Diese Unterscheidung ist wichtig, wenn von “privaten DMs” gesprochen wird.

Warum das wichtig ist

NIP-04-DMs verschlüsseln Inhalte, lassen aber Metadaten sichtbar:

  • Der pubkey des Senders ist öffentlich
  • Der pubkey des Empfängers steht im p-Tag
  • Timestamps sind exakt

NIP-17 verbirgt den Sender, erkauft sich das aber mit höherer Implementierungskomplexität.

Diese Komplexität bringt einen echten Privatsphäregewinn. Ein Relay kann weiterhin sehen, dass eine verpackte Nachricht an einen Empfänger adressiert ist, aber es kann aus den äußeren Event-Metadaten nicht direkt einen Sender-Empfänger-Graphen ableiten wie bei kind-4-Nachrichten.

Interop-Hinweise

NIP-17 definiert außerdem Inbox-Relay-Listen für private Nachrichten. Clients können ein kind-10050-Event veröffentlichen, damit Sender wissen, welche Relays sie für die DM-Zustellung nutzen sollen. Private Relay-Routing-Daten getrennt von öffentlichem Content-Routing zu halten, hilft dabei, private Kommunikation nicht an die falschen Orte zu veröffentlichen.


Primärquellen:

Erwähnt in:

Siehe auch: