NIP-17: Private Direktnachrichten
NIP-17 definiert private Direktnachrichten mit NIP-59 Gift Wrapping für die Privatsphäre des Absenders. Im Gegensatz zu NIP-04 DMs, die den Absender im äußeren Event offenlegen, verbirgt NIP-17 den Absender vor Relays und beiläufigen Beobachtern.
Wie es funktioniert
Nachrichten werden in mehrere Verschlüsselungsschichten eingehüllt:
- Der eigentliche Nachrichteninhalt liegt in einem rumor Event vom Kind 14.
- Ein seal verschlüsselt diesen Inhalt für den Empfänger.
- Ein gift wrap verschlüsselt das seal erneut und veröffentlicht es von einem wegwerfbaren Keypair aus.
Das äußere gift wrap nutzt ein zufälliges, wegwerfbares Keypair, sodass Relays und Beobachter nicht feststellen können, wer die Nachricht gesendet hat.
Nachrichtenstruktur
- Kind 14 - Der eigentliche DM-Inhalt innerhalb der eingehüllten Schichten
- Kind 1059 - Das äußere GiftWrap-Event, das an Relays veröffentlicht 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 Absender nicht sehen, da er durch das wegwerfbare Keypair des gift wrap verborgen wird
- Der Empfänger bleibt sichtbar, im
p-Tag des gift wrap - Nachrichtentimestamps werden innerhalb eines Fensters randomisiert
- Auf dem Relay gibt es kein sichtbares Threading oder Gruppieren von Konversationen
Der Empfänger erfährt nach dem Auspacken trotzdem, wer die Nachricht gesendet hat. NIP-17 verbirgt die Absenderidentität vor dem Netzwerk, nicht vor dem anderen Teilnehmer. Diese Unterscheidung ist wichtig, wenn Leute von “privaten DMs” sprechen.
Warum es wichtig ist
NIP-04 DMs verschlüsseln Inhalte, lassen Metadaten aber sichtbar:
- Der Pubkey des Absenders ist öffentlich
- Der Pubkey des Empfängers steht im
p-Tag - Timestamps sind exakt
NIP-17 verbirgt den Absender, kostet aber mehr Implementierungskomplexität.
Diese Komplexität bringt einen echten Gewinn an Privatsphäre. Ein Relay kann weiter sehen, dass eine eingehüllte Nachricht an einen Empfänger adressiert ist, aber es kann nicht direkt einen Absender-Empfänger-Graphen aus den Metadaten des äußeren Events bauen, wie es bei Kind-4-Nachrichten möglich ist.
Interop-Hinweise
NIP-17 definiert auch Inbox-Relay-Listen für private Nachrichten. Clients können ein Kind-10050-Event veröffentlichen, damit Absender wissen, welche Relays sie für die DM-Zustellung ansprechen sollen. Die Trennung von DM-Relay-Routing und öffentlichem Content-Routing hilft dabei, privaten Verkehr nicht an die falschen Orte zu veröffentlichen.
Primärquellen:
- NIP-17 Specification
- PR #2098 - wording cleanup and reaction support update
Erwähnt in:
- Newsletter #1: NIP Updates
- Newsletter #2: News
- Newsletter #3: December Recap
- Newsletter #3: Notable Code Changes
- Newsletter #5: News
Siehe auch: