NIP-17: Private Direktnachrichten - Ein Vollständiger Guide
Lerne über NIP-17, den sicheren Ersatz für NIP-04, und wie du deine privaten Nachrichten in Nostr migrierst
NIP-17 ist ein bedeutendes Sicherheits-Upgrade für die Art, wie private Nachrichten in Nostr funktionieren. Dieser Guide erklärt, warum du dich für diese Protokollverbesserung interessieren solltest, wie du vom alten NIP-04 Standard migrierst und praktische Schritte zur Sicherung deiner Kommunikation.
Was ist NIP-17?
NIP-17 ist eine Nostr-Protokoll-Spezifikation, die Private Direktnachrichten mit einem dualen Verschlüsselungssystem namens “Seal + Gift Wrap” definiert. Es wurde erstellt, um grundlegende Sicherheitslücken der vorherigen NIP-04 Verschlüsselungsmethode zu beheben.
Im Gegensatz zu NIP-04, das eine einzelne Schicht AES-256-CBC Verschlüsselung nutzte, verwendet NIP-17:
- Seal (kind 13), die innere Schicht. Sie ist mit deinem echten Schlüssel signiert, damit die Person, der du schreibst, erkennen kann, dass die Nachricht tatsächlich von dir stammt
- Gift Wrap (kind 1059), der äußere Umschlag. Er wird mit einem Wegwerf-Schlüssel signiert und verbirgt das Seal, sodass deine echte Identität nie auf dem Event auftaucht, das die Relays speichern
Diese Schichtung bedeutet:
- Nachrichteninhalte bleiben privat
- Relays können nicht sehen, wer eine Nachricht gesendet hat. Das Gift Wrap ist mit einem zufälligen Einmal-Schlüssel signiert, nicht mit deinem
- Zeitstempel werden zufällig verschoben, wodurch sich das Timing von Nachrichten schwerer korrelieren lässt
Relays sehen weiterhin, wem du schreibst
Das Gift Wrap trägt den öffentlichen Schlüssel des Empfängers in einem
Klartext-p-Tag. Das muss es auch, sonst wüsste das Relay des Empfängers
nicht, wem es die Nachricht zustellen soll. NIP-17 verbirgt den Absender,
nicht den Empfänger.
Wer den Stream eines Relays mitliest, sieht, dass dir jemand eine Nachricht geschickt hat und wann. Wer und was, das bleibt verborgen. Wenn dein Bedrohungsmodell verlangt, dass niemand überhaupt erfährt, dass du etwas empfangen hast, reicht NIP-17 allein nicht aus.
Warum NIP-17 wichtig ist: das NIP-04-Sicherheitsproblem
NIP-04 war Nostrs ursprüngliches Direktnachrichten-Protokoll, aber es hat mehrere kritische Sicherheitsprobleme, die es für wirklich private Kommunikation ungeeignet machen.
Vergleich: NIP-04 vs NIP-17
| Feature | NIP-04 | NIP-17 |
|---|---|---|
| Verschlüsselung | Einschichtig AES-256-CBC | Zweischichtig (seal + gift wrap) |
| Absender-Metadaten | Sichtbar für Relays | Verborgen, mit Einmal-Schlüssel signiert |
| Empfänger-Metadaten | Sichtbar für Relays | Weiterhin sichtbar (Klartext-p-Tag) |
| Nachrichteninhalt | Verschlüsselt | Verschlüsselt |
| Timing-Metadaten | Echte Zeitstempel sichtbar | Zufällig bis zu zwei Tage zurückdatiert |
| Forward Secrecy | Nein | Nein, NIP-44 bietet sie nicht |
| Sicherheitsstatus | Veraltet | Empfohlen |
| Interoperabilität | Weit unterstützt | Wachsende Unterstützung |
Das Kernproblem mit NIP-04
NIP-04 Nachrichten enthüllen wer mit wem spricht gegenüber jedem Relay, das sie speichert. (Nostr hat keine Blockchain. Events liegen einfach auf Relays, und jeder darf von einem Relay lesen.) Während der Nachrichteninhalt verschlüsselt ist, enthält der Umschlag:
# NIP-04 Event Struktur (vereinfacht)
{
"pubkey": "<sender_public_key>", # Jeder kann sehen, wer dies gesendet hat
"tags": [["p", "<recipient_pubkey>"]], # Jeder kann sehen, wer es empfangen hat
"content": "<encrypted_content>" # Nur der Inhalt ist verborgen
}
Das bedeutet, Relay-Betreiber, Netzwerkbeobachter und Daten-Scraper können:
- Soziale Graphen erstellen, die zeigen, wer mit wem kommuniziert
- Kommunikationsmuster und -häufigkeiten verfolgen
- Beziehungen aus dem Nachrichten-Timing ableiten
NIP-17 schließt den größten Teil dieser Lücke, indem es die ganze Nachricht in einen äußeren Umschlag packt, der mit einem Wegwerf-Schlüssel signiert ist. Das Relay kann also nicht erkennen, wer gesendet hat. Eines bleibt aber absichtlich offen: Der öffentliche Schlüssel des Empfängers steht in einem Klartext-Tag auf dem Umschlag, denn das Relay muss wissen, wem es die Nachricht aushändigen soll. NIP-17 verbirgt somit den Absender, nicht den Empfänger.
Wie NIP-17 funktioniert: Seal + Gift Wrap
Das Verständnis der technischen Implementierung hilft, die Sicherheitsverbesserungen zu würdigen.
Die Gift Wrap Schicht (außen)
Das Gift Wrap ist der Umschlag, den ein Relay tatsächlich speichert. Dein Client erzeugt für genau diese eine Nachricht einen brandneuen Schlüssel, signiert damit den Umschlag und wirft den Schlüssel weg. Der Inhalt ist so verschlüsselt, dass nur der Empfänger ihn öffnen kann. Diese Schicht trägt:
- Einen zufälligen Einmal-Schlüssel, der nichts mit dir zu tun hat
- Den öffentlichen Schlüssel des Empfängers, in einem Klartext-Tag, das das Relay lesen kann
- Einen zufällig verschobenen Zeitstempel
- Die versiegelte innere Nachricht
Die Seal Schicht (innen)
Innerhalb des Gift Wraps befindet sich das Seal. Hier steckt die Urheberschaft, und das Relay bekommt sie nie zu sehen. Diese Schicht:
- Ist mit deinem echten Schlüssel signiert, woran der Empfänger erkennt, dass die Nachricht von dir stammt
- Ist mit einem Schlüssel verschlüsselt, der sich aus deinem privaten und dem öffentlichen Schlüssel des Empfängers ableitet, sodass nur ihr beide mitlesen könnt
- Trägt den Nachrichteninhalt
- Trägt einen Zeitstempel, den dein Client absichtlich um bis zu zwei Tage zurückdatiert, damit niemand Nachrichten nach Sendezeitpunkt gruppieren kann
Gift Wrap (äußere Schicht)
Zufälliger pubkey plus Empfänger-Hinweis, mehr sieht ein Relay nicht
Seal (innere Schicht)
Mit dem echten Schlüssel des Absenders signiert, lesbar nur für den Empfänger
Echter Nachrichteninhalt
Absender: echter pubkey · Zeitstempel: 1234567890
Hauptvorteile
- Absender-Privatsphäre: Niemand außer dem Empfänger kann bestimmen, wer die
Nachricht gesendet hat. Der Empfänger allerdings steht in einem
Klartext-
p-Tag, den Relays lesen können müssen. - Unverknüpfbarkeit: Jede Nachricht ist mit einem frischen Einmal-Schlüssel signiert, sodass Nachrichten desselben Absenders nicht offensichtlich zusammengehören.
- Keine Forward Secrecy: NIP-44 leitet den Konversationsschlüssel aus zwei
statischen Schlüsseln ab. Wer später an deinen
nseckommt, kann jede gespeicherte Nachricht entschlüsseln. Die Einmal-Schlüssel verbergen, wer gesendet hat; alte Nachrichten schützen sie nicht. Lösche alte Konversationen, wenn dir das wichtig ist.
Zustellung: Die DM-Relay-Liste (Kind 10050)
Seal und Gift Wrap beschreiben, wie eine Nachricht verpackt wird. Wohin sie zugestellt wird, sagt ein drittes Element: das kind-10050-Event. Es ist eine kleine, öffentliche Liste der Relays, die deine privaten Nachrichten annehmen.
Die Spezifikation ist hier streng: Absender MÜSSEN Gift Wraps ausschließlich an die Relays in der kind-10050-Liste des Empfängers veröffentlichen. Hast du nie eine veröffentlicht, giltst du laut Spezifikation als “nicht bereit, Nachrichten zu empfangen”, und Clients sollen es gar nicht erst versuchen. An dich adressierte DMs werden also stillschweigend nie zugestellt. Auf keiner der beiden Seiten erscheint ein Fehler.
Zwei praktische Regeln:
- Veröffentliche eine Liste, bevor du NIP-17-DMs erwartest (siehe Schritt 3 des Migrations-Guides unten)
- Halte sie klein. Die Spezifikation empfiehlt 1-3 Relays, und jedes gelistete Relay sieht, wer dir Nachrichten schickt
Migrations-Guide: Wechsel von NIP-04 zu NIP-17
Die Migration zu NIP-17 ist mit modernen Nostr Clients unkompliziert. So machst du den Wechsel.
Schritt 1: Prüfe deine Client-Unterstützung
NIP-17 hilft nur, wenn der Client an beiden Enden der Konversation es spricht. Diese vier sagen es in ihrer eigenen Dokumentation oder in ihrem eigenen Quellcode:
| Client | NIP-17 | Läuft auf |
|---|---|---|
| Amethyst | Ja | Android |
| 0xchat | Ja | Android, iOS |
| Coracle | Ja | Web |
| Snort | Ja | Web |
Damus braucht eine eigene Warnung. Stand September 2026 taucht NIP-17 in der Liste der Spezifikationen, die Damus veröffentlicht, immer noch nicht auf, nur das alte NIP-04. Daraus folgen zwei Dinge, und beide zählen. Eine gift-wrapped Nachricht, die du sendest, erscheint bei jemandem mit Damus überhaupt nicht. Und was diese Person dir schickt, geht als schlichtes kind-4-Event hinaus, mit euren beiden öffentlichen Schlüsseln außen drauf, wo jedes Relay, das es speichert, sie lesen kann. Ist ein Gespräch heikel, verlege es in einen der Clients oben.
Primal, Iris und Nos sitzen in einer ungeklärten Mitte. Primal sagt öffentlich weder das eine noch das andere, also behandle es als unbekannt. Iris verschlüsselt seine privaten Chats mit einem eigenen Double-Ratchet-Verfahren statt mit reinem NIP-17, was innerhalb von Iris in Ordnung ist und außerhalb nichts garantiert. Nos listet weder NIP-17 noch die beiden Spezifikationen, auf denen es aufbaut, und um das Projekt ist es seit Anfang 2025 still geworden.
Funktionslisten von Clients ändern sich schneller als Guides. Steht deiner hier nicht, klärt der Test in Schritt 5 die Sache schneller, als Changelogs zu lesen.
Schritt 2: Meistens gibt es nichts einzuschalten
Dieser Schritt ist kürzer, als du erwarten würdest. Keiner der Clients oben dokumentiert einen Schalter “NIP-17 aktivieren”, weil es keinen zu finden gibt. Sie nutzen Gift Wraps automatisch, sobald die Person am anderen Ende sie empfangen kann.
Spring also weiter zu Schritt 3, dem Teil, der dich tatsächlich braucht. Deine bestehenden NIP-04-Konversationen bleiben, wo sie sind, und bleiben lesbar; nichts konvertiert sie.
Schritt 3: Publiziere deine DM-Relay-Liste (Kind 10050)
NIP-17-Absender liefern nur an die Relays, die du in deinem kind-10050-Event listest. Ohne eine solche Liste werden Nachrichten an dich stillschweigend verworfen (siehe Zustellung: Die DM-Relay-Liste oben).
- Suche in deinem Client die Einstellung für DM-, Privatnachrichten- oder Messaging-Relays
- Füge ein bis drei Relays hinzu, die Gift Wraps (kind 1059) annehmen (manche Relays lehnen sie ab)
- Speichern, und dein Client veröffentlicht die kind-10050-Liste für dich
Manche Clients veröffentlichen diese Liste für dich, sobald du zum ersten Mal einen privaten Chat öffnest. Verlass dich nicht darauf, dass deiner das getan hat: Verifiziere die Zustellung in Schritt 5, bevor du dich darauf verlässt.
Schritt 4: Kommuniziere mit deinen Kontakten
NIP-17 funktioniert nur, wenn beide Parteien NIP-17 Unterstützung haben. Sende eine Nachricht an häufige Kontakte:
"Hey! Ich upgrade auf NIP-17 für bessere Privatsphäre in unseren DMs.
Bitte aktualisiere deinen Nostr Client, falls du es noch nicht getan hast.
Unsere zukünftigen Nachrichten werden sicherer sein!"
Schritt 5: Verifiziere, dass es wirklich funktioniert
Für die Prüfung, auf die es ankommt, brauchst du überhaupt kein technisches Wissen. Bitte jemanden mit einem der Clients aus Schritt 1, dir zu schreiben, und antworte dann. Kommt beides an, ist deine kind-10050-Liste veröffentlicht und Gift Wraps erreichen dich. Verschwindet deine Nachricht und keiner von euch sieht eine Fehlermeldung, ist das das klassische Symptom einer fehlenden Relay-Liste, und Schritt 3 ist die Stelle, zu der du zurückgehst.
Denselben Test kannst du auch allein machen: Melde dich mit deinem Konto in einem zweiten Client an, oder schreibe dir selbst, falls dein Client das erlaubt.
Wenn dich interessiert, was da wirklich gesendet wird: Ein Nostr-Event-Viewer wie njump.me zeigt dir rohe Events. Ein funktionierendes Gift Wrap sieht ungefähr so aus:
// Beispiel NIP-17 Event (vereinfacht)
{
"kind": 1059, // Gift wrap event
"pubkey": "<random_ephemeral_key>", // Nicht der echte Absender!
"tags": [["p", "<recipient_pubkey>"]],
"content": "<encrypted_seal_content>"
}
Zwei Dinge sind daran abzulesen. Der pubkey ist ein Einmal-Schlüssel, den du nicht wiedererkennen wirst, und genau das ist der verborgene Absender, also das Gewünschte. Das p-Tag zeigt dagegen den echten Schlüssel des Empfängers. Das ist kein Fehler in deiner Einrichtung; das Relay braucht ihn, um zu wissen, wohin die Nachricht geht.
Sicherheits-Best-Practices
Maximiere deine Privatsphäre bei der Nutzung von NIP-17:
1. Verifiziere Client-Unterstützung vor sensibler Kommunikation
Bestätige immer, dass dein Kontakt einen NIP-17-fähigen Client nutzt, bevor du etwas Sensibles teilst. Ein Gift Wrap an jemanden, dessen Client nur NIP-04 spricht, kommt nicht als Kauderwelsch an. Es kommt gar nicht an: Sein Client sucht nie nach kind-1059-Events, und keiner von euch bekommt eine Fehlermeldung.
2. Behandle den Rückfall auf NIP-04 als echte Entscheidung
Manche Clients lassen dich einen alten NIP-04-Thread weiterführen. Gelegentlich ist das die praktische Wahl, aber wisse, was sie kostet: Eine NIP-04-Nachricht setzt beide öffentlichen Schlüssel im Klartext auf ein Event, das jedes Relay speichert. Heb dir das für Geplauder auf, das dir öffentlich zugeordnet werden darf, und beginne alles Sensible stattdessen als frische NIP-17-Konversation.
3. Nutze frische Schlüssel für Hochsicherheits-Konversationen
Für maximale Sicherheit:
- Erstelle ein dediziertes Schlüsselpaar für sensible Kommunikation
- Teile den öffentlichen Schlüssel über einen sicheren Out-of-Band-Kanal
- Rotiere Schlüssel regelmäßig
4. Sei dir der Metadaten in anderen Event-Typen bewusst
NIP-17 schützt nur Direktnachrichten. Andere Event-Typen (Notes, Reactions, Follows) enthüllen weiterhin Social-Graph-Daten. Nutze mehrere Identitäten zur Kompartimentierung.
5. Wähle privatsphäre-fokussierte Relays
Selbst mit NIP-17 sind deine Traffic-Muster für Relays sichtbar. Nutze:
- Tor oder VPN für zusätzliche Netzwerk-Level-Privatsphäre
- Relays, die keine Nachrichten-Metadaten loggen oder speichern
- Mehrere Relays, um deinen Traffic zu verteilen
6. Verstehe die Limitierungen
NIP-17 ist eine echte Verbesserung, und es ist kein Tarnmantel:
- Relays sehen weiterhin deine IP-Adresse (nutze ein VPN oder Tor)
- Timing-Analyse kann weiterhin Kommunikationsmuster enthüllen
- Der Schlüssel des Empfängers steht im Klartext auf dem Umschlag, so gewollt
- Ein kompromittiertes Telefon oder ein kompromittierter Client verrät alles, egal was das Protokoll tut
Fehlerbehebung bei häufigen Problemen
„Meine Nachrichten kommen nie an”: prüfe zuerst deine DM-Relay-Liste
Das ist der häufigste NIP-17-Fehler, und fast nie liegt es an der Verschlüsselung.
NIP-17-Absender liefern nicht an deine normalen Relays. Sie suchen nach einem kind-10050-Event, deiner veröffentlichten Liste von Relays, die deine Direktnachrichten annehmen, und schicken das Gift Wrap ausschließlich dorthin. Hast du nie eine veröffentlicht, hat der Client des Absenders kein Ziel und die Nachricht wird stillschweigend verworfen. In keiner der beiden Oberflächen erscheint etwas.
Lösung: Suche in einem Client mit NIP-17-Unterstützung die Relay-Einstellung für private Nachrichten und speichere mindestens ein Relay. Damit wird deine kind-10050-Liste veröffentlicht. Wähle ein Relay, das Gift Wraps tatsächlich annimmt. Manche lehnen kind 1059 ab.
Halte die Liste kurz. Jedes Relay darauf ist ein Relay, das sieht, wer dir schreibt. (Das ist Schritt 3 des Migrations-Guides. Wenn du ihn übersprungen hast, fang dort an.)
”Ein bestimmter Kontakt bekommt nie etwas von mir”
Wenn alle anderen von dir hören und eine Person nicht, liegt das Problem auf ihrer Seite, nicht in deiner Verschlüsselung. Ihr Client hat mit ziemlicher Sicherheit keine NIP-17-Unterstützung, abonniert also nie Gift Wraps und sieht deine Nachricht nie. Nichts erscheint als Kauderwelsch, weil überhaupt nichts erscheint.
Lösung: Bitte die Person, zu einem Client aus Schritt 1 zu wechseln. Geht das nicht und ihr könnt nur über alte NIP-04-Nachrichten reden, lies zuerst die Warnung unter Sicherheits-Best-Practices: NIP-04 händigt jedem Relay eure beiden öffentlichen Schlüssel im Klartext aus.
”Kann nicht sehen, ob jemand meine NIP-17 Nachricht gelesen hat”
Ursache: Lesebestätigungen noch nicht standardisiert für NIP-17 Lösung: Dies ist erwartetes Verhalten. NIP-17 priorisiert Privatsphäre über Zustellbestätigung.
”Nachrichten erscheinen in falscher Reihenfolge”
Ursache: Zeitverschiebung zwischen Geräten Lösung: Stelle sicher, dass deine Gerätezeit synchronisiert ist (aktiviere automatische Zeitsynchronisation)
“Relay lehnt NIP-17 Events ab”
Ursache: Auf dem Relay läuft alte Software, oder es weigert sich schlicht, kind-1059-Events zu speichern Lösung: Tausche es in deiner DM-Relay-Liste gegen ein anderes aus. Manche Clients zeigen auf ihrem Relay-Bildschirm, was ein Relay unterstützt; tun sie das nicht, ist ein anderes Relay auszuprobieren und zu schauen, ob Nachrichten ankommen, schneller als jede Recherche. Dem Betreiber Bescheid zu geben ist die Minute auch wert.
”Mein Client bietet mir eine Wahl des Nachrichtentyps”
Erwartetes Verhalten: Manche Clients lesen und schreiben noch beide Formate, solange das Netzwerk den Umzug abschließt, und lassen dich pro Konversation wählen. Nimm NIP-17, wann immer es angeboten wird.
Die Zukunft privater Nachrichten in Nostr
NIP-17 ist der aktuelle Standard für private Eins-zu-eins-Nachrichten in Nostr, und es ist das, was du heute nutzen solltest. Das Ende der Fahnenstange ist es aber nicht, und an seinen zwei echten Lücken wird gearbeitet: keine Forward Secrecy und kein richtiger Gruppenchat.
Die ernsthafteste Antwort bisher ist das Marmot-Protokoll, das MLS (den Gruppen-Messaging-Standard hinter Signal-artigem Gruppenchat) auf Nostr aufsetzt und Nostr-Schlüssel als Identität behält. Marmots eigenes Repository führt die Spezifikation als angenommen, und White Noise ist die darauf gebaute Chat-App. Dieser Ansatz liefert Forward Secrecy und beherrscht Gruppen, also genau das, was NIP-17 auslässt.
Eine Klarstellung, weil die Nummern dazu einladen: NIP-44 ist kein Konkurrent von NIP-17 und wird es nicht ablösen. NIP-44 ist die Verschlüsselung, die NIP-17 für beide seiner Schichten bereits nutzt. Sie gehören zur selben Sache.
Fazit
Gegenüber NIP-04 ist NIP-17 ein klarer Fortschritt, und du solltest es nutzen. Sei dir nur klar darüber, was du bekommst. Deine Worte sind verschlüsselt, und das Relay kann nicht erkennen, wer eine Nachricht gesendet hat. Es sieht weiterhin, für welches Konto sie bestimmt ist, und wer beide Enden beobachtet, lernt aus dem Timing immer noch eine Menge. Betrachte es als private Post, nicht als unauffindbare Sendung.
Der Umzug ist vor allem eine Frage des richtigen Clients und einer kleinen veröffentlichten Liste. Die Unterstützung ist real, aber ungleichmäßig, und Damus, einer der meistgenutzten Clients auf dem iPhone, hat bis heute keine. Zu prüfen, was am anderen Ende einer Konversation läuft, ist deshalb kein optionaler Schritt.
Aktionspunkte:
- ✅ Nutze einen Client mit NIP-17-Unterstützung (Amethyst, 0xchat, Coracle, Snort)
- ✅ Publiziere deine DM-Relay-Liste (kind 10050). Ohne sie kommt nichts an
- ✅ Schick mit einem Kontakt eine Testnachricht in beide Richtungen, damit du weißt, dass die Zustellung klappt
- ✅ Prüfe vor allem Sensiblen, in welchem Client die andere Person sitzt
Denk dran: Privatsphäre ist eine Praxis, kein Produkt. NIP-17 gibt dir die Werkzeuge; sie gut zu nutzen bleibt deine Sache.
Teste Dein NIP-17 Wissen
Bereit, dein Verständnis sicherer Nachrichten zu testen?
NIP-17 Zweck
0/5 beantwortet
Zuletzt aktualisiert: 2. September 2026
Hast du Fragen? Nimm an der Diskussion auf Nostr teil oder öffne ein Issue in diesem Dokumentations-Repository.
Weiterlesen
- Privatsphäre und Sicherheit in Nostr: das größere Bedrohungsmodell, in dem diese Nachrichten stecken
- Deine Schlüssel, deine Identität: wer den Schlüssel verliert, verliert die Konversation, endgültig