Skip to content

NIP-17: Prywatne Wiadomości Bezpośrednie - Kompletny Przewodnik

Dowiedz się o NIP-17, bezpiecznym zamienniku dla NIP-04, i jak migrować swoje prywatne wiadomości w Nostr

Zaawansowany Last updated

NIP-17 reprezentuje znaczącą aktualizację bezpieczeństwa dla prywatnych wiadomości w Nostr. Ten przewodnik wyjaśnia dlaczego powinieneś dbać o tę poprawę protokołu, jak migrować ze starego standardu NIP-04 oraz praktyczne kroki do zabezpieczenia swoich komunikacji.

Czym jest NIP-17?

NIP-17 to specyfikacja protokołu Nostr, która definiuje Prywatne Wiadomości Bezpośrednie używając dwuwarstwowego systemu szyfrowania zwanego “seal + gift wrap”. Została stworzona, aby rozwiązać fundamentalne luki bezpieczeństwa w poprzedniej metodzie szyfrowania NIP-04.

W przeciwieństwie do NIP-04, który używał pojedynczej warstwy szyfrowania AES-256-CBC, NIP-17 używa:

  1. Seal (kind 13) — wewnętrzna warstwa, która szyfruje wiadomość i ukrywa, który klucz ją podpisał
  2. Gift wrap (kind 1059) — zewnętrzna koperta podpisana kluczem jednorazowym, dzięki czemu Twoja prawdziwa tożsamość nigdy nie pojawia się w evencie przechowywanym przez relaye

To rozwarstwienie oznacza, że:

  • Treść wiadomości pozostaje prywatna
  • Relaye nie widzą, kto wysłał wiadomość — gift wrap jest podpisany losowym kluczem jednorazowym, a nie Twoim
  • Timestampy są losowane, więc trudniej skorelować momenty wysyłki

Dlaczego NIP-17 Ma Znaczenie: Problem Bezpieczeństwa NIP-04

NIP-04 był oryginalnym protokołem wiadomości bezpośrednich w Nostr, ale ma kilka krytycznych problemów bezpieczeństwa, które czynią go nieodpowiednim dla naprawdę prywatnej komunikacji.

Porównanie: NIP-04 vs NIP-17

CechaNIP-04NIP-17
SzyfrowaniePojedyncza warstwa AES-256-CBCDwuwarstwowe (seal + gift wrap)
Metadane NadawcyWidoczne dla relayówUkryte — podpisane kluczem jednorazowym
Metadane OdbiorcyWidoczne dla relayówNadal widoczne — jawny tag p
Treść WiadomościZaszyfrowanaZaszyfrowana
Ochrona przed ReplayBrakLosowane timestampy
Forward SecrecyNieNie — NIP-44 tego nie zapewnia
Status BezpieczeństwaPrzestarzałyZalecany
InteroperacyjnośćPowszechnie wspieranyRosnące wsparcie

Podstawowy Problem z NIP-04

Wiadomości NIP-04 ujawniają kto z kim rozmawia każdemu relayowi, który je przechowuje. (Nostr nie ma żadnego blockchaina — eventy po prostu leżą na relayach, a czytać z relaya może każdy.) Podczas gdy treść wiadomości jest zaszyfrowana, koperta zawiera:

# Struktura Eventu NIP-04 (uproszczona)
{
  "pubkey": "<sender_public_key>",      # Każdy może zobaczyć kto to wysłał
  "tags": [["p", "<recipient_pubkey>"]], # Każdy może zobaczyć kto to otrzymał
  "content": "<encrypted_content>"       # Tylko treść jest ukryta
}

Oznacza to, że operatorzy relayów, obserwatorzy sieci i scrapery danych mogą:

  • Budować grafy społeczne pokazujące kto z kim komunikuje się
  • Śledzić wzorce i częstotliwość komunikacji
  • Wnioskować o relacjach z timingów wiadomości

NIP-17 rozwiązuje to poprzez owinięcie całej struktury wiadomości w dodatkową warstwę szyfrowania, czyniąc niemożliwym zobaczenie nadawcy lub odbiorcy bez klucza deszyfrującego.

Jak Działa NIP-17: Seal + Gift Wrap

Zrozumienie implementacji technicznej pomaga docenić ulepszenia bezpieczeństwa.

Warstwa Gift Wrap (Zewnętrzna)

Gift wrap to zewnętrzna koperta ukrywająca wszystkie metadane. Jest szyfrowana do specjalnego “gift wrap key” wyprowadzonego z klucza publicznego odbiorcy. Ta warstwa zawiera:

  • Losowy klucz publiczny (nie powiązany z prawdziwym nadawcą)
  • Klucz publiczny odbiorcy
  • Timestamp
  • Zapieczętowaną wiadomość wewnętrzną

Warstwa Seal (Wewnętrzna)

Wewnątrz gift wrapa znajduje się seal, który zawiera faktyczną wiadomość. Ta warstwa:

  • Jest szyfrowana używając świeżej pary kluczy efemerycznych
  • Zawiera prawdziwy klucz publiczny nadawcy
  • Zawiera treść wiadomości
  • Ma własny timestamp dla ochrony przed replay

Gift wrap (warstwa zewnętrzna)

Losowy pubkey, wskazówka odbiorcy — tylko tyle widzi relay

Seal (warstwa wewnętrzna)

Zaszyfrowany kluczem efemerycznym

Faktyczna treść wiadomości

Nadawca: prawdziwy pubkey · Timestamp: 1234567890

Każda warstwa ukrywa tę w środku, więc relay nie dowiaduje się niczego poza wskazówką odbiorcy.

Kluczowe Korzyści

  1. Prywatność Metadanych: Nikt oprócz odbiorcy nie może ustalić kto wysłał wiadomość lub komu została wysłana
  2. Niepowiązywalność: Wielokrotne wiadomości między tymi samymi stronami wyglądają jako niepowiązane eventy dla obserwatorów
  3. Lepsza Forward Secrecy: Każda wiadomość używa unikalnych kluczy efemerycznych

Dostarczanie: Lista Relayów DM (Kind 10050)

Seal i gift wrap opisują, jak wiadomość jest zapakowana. Trzeci element — event kind 10050 — opisuje, dokąd jest dostarczana. To mała, publiczna lista relayów, które przyjmują Twoje prywatne wiadomości.

Specyfikacja jest w tej kwestii rygorystyczna: nadawcy MUSZĄ publikować gift wrapy wyłącznie na relaye z listy kind 10050 odbiorcy. Jeśli nigdy jej nie opublikowałeś, specyfikacja traktuje Cię jako “niegotowego na odbieranie wiadomości” i klienci nie powinny nawet próbować — więc DM-y adresowane do Ciebie po cichu nigdy nie są dostarczane. Po żadnej stronie nie ma błędu.

Dwie praktyczne zasady:

  • Opublikuj ją, zanim zaczniesz oczekiwać jakichkolwiek DM-ów NIP-17 (zobacz Krok 3 przewodnika migracji poniżej)
  • Trzymaj ją małą — specyfikacja zaleca 1-3 relaye, a każdy relay na liście widzi, kto wysyła Ci wiadomości

Przewodnik Migracji: Przełączanie z NIP-04 na NIP-17

Migrowanie do NIP-17 jest proste z nowoczesnymi klientami Nostr. Oto jak dokonać zmiany.

Krok 1: Sprawdź Wsparcie Swojego Klienta

Przed migracją, zweryfikuj czy Twój klient wspiera NIP-17:

KlientWsparcie NIP-17Status
DamusTakDomyślny dla nowych DM
AmethystTakDomyślny dla nowych DM
PrimalTakWspierany
CoracleTakWspierany
IrisTakWspierany
SnortTakWspierany
NosTakWspierany

Krok 2: Włącz NIP-17 w Swoim Kliencie

Damus (iOS/macOS)

  1. Otwórz Ustawienia → Prywatność i Bezpieczeństwo
  2. Przewiń do “Szyfrowanie Wiadomości”
  3. Przełącz “Używaj NIP-17 dla nowych wiadomości” na WŁĄCZONE
  4. Twoje nowe DM-y będą automatycznie używać NIP-17

Uwaga: Starsze wiadomości NIP-04 pozostają czytelne, ale nowe używają NIP-17.

Amethyst (Android)

  1. Idź do Ustawienia → Wiadomości
  2. Włącz “Używaj NIP-17 dla DM-ów”
  3. Uruchom ponownie aplikację dla pełnego efektu

Primal (iOS/Android/Web)

  1. Przejdź do Ustawienia → Prywatność
  2. Pod “Wiadomości Bezpośrednimi,” wybierz “NIP-17 (Zalecany)”
  3. Zmiany mają zastosowanie natychmiast do nowych rozmów

Krok 3: Opublikuj Swoją Listę Relayów DM (Kind 10050)

Nadawcy NIP-17 dostarczają wyłącznie na relaye wymienione w Twoim evencie kind 10050 — bez niego wiadomości do Ciebie są po cichu porzucane (zobacz Dostarczanie: Lista Relayów DM powyżej).

  1. W swoim kliencie poszukaj ustawienia relayów DM, wiadomości prywatnych lub wiadomości bezpośrednich
  2. Dodaj od jednego do trzech relayów, które przyjmują gift wrapy (kind 1059) — niektóre relaye je odrzucają
  3. Zapisz — Twój klient opublikuje listę kind 10050 za Ciebie

Niektórzy klienci publikują tę listę automatycznie po włączeniu NIP-17. Nie zakładaj tego: zweryfikuj dostarczanie w Kroku 5, zanim na tym polegasz.

Krok 4: Skomunikuj się ze Swoimi Kontaktami

NIP-17 działa tylko jeśli obie strony mają wsparcie NIP-17. Wyślij wiadomość do częstych kontaktów:

nostr:note1... # Szablon wiadomości migracji

"Hej! Aktualizuję do NIP-17 dla lepszej prywatności w naszych DM-ach.
Proszę zaktualizuj swojego klienta Nostr, jeśli jeszcze tego nie zrobiłeś.
Nasze przyszłe wiadomości będą bezpieczniejsze!"

Krok 5: Zweryfikuj Sukces Migracji

Aby potwierdzić, że NIP-17 działa:

  1. Wyślij wiadomość testową do siebie lub znajomego
  2. Sprawdź rodzaj eventu (powinien być 1059 dla gift wrapów)
  3. Szukaj kind: 1059 w szczegółach wiadomości
  4. Tag p powinien wskazywać na losowy klucz efemeryczny, nie prawdziwy klucz znajomego
// Przykładowy event NIP-17 (uproszczony)
{
  "kind": 1059, // Event gift wrap
  "pubkey": "<random_ephemeral_key>", // Nie prawdziwy nadawca!
  "tags": [["p", "<recipient_pubkey>"]],
  "content": "<encrypted_seal_content>"
}

Przewodniki Konfiguracji Specyficzne dla Klienta

Damus

Damus uczynił NIP-17 domyślnym dla nowych wiadomości bezpośrednich w najnowszych wersjach. Jeśli używasz starszej wersji:

  1. Zaktualizuj do najnowszego Damus z App Store
  2. NIP-17 jest automatycznie włączony dla nowych rozmów
  3. Sprawdź szczegóły wiadomości (przytrzymaj) aby zobaczyć odznakę “NIP-17”

Wskazówka: Damus pokazuje ikonę kłódki z tekstem “NIP-17” na bezpiecznych wiadomościach.

Amethyst

Amethyst wspiera NIP-17, ale może wymagać jawnego włączenia:

  1. Ustawienia → Zaawansowane → Ustawienia Protokołu
  2. Włącz “NIP-17 gift wrap dla DM-ów”
  3. Klient automatycznie będzie negocjować NIP-17 ze wspierającymi kontaktami

Uwaga: Amethyst elegancko fallbackuje do NIP-04, jeśli odbiorca nie wspiera NIP-17.

Primal

Primal ma doskonałe wsparcie NIP-17:

  1. Ustawienia → Bezpieczeństwo i Prywatność
  2. Pod “Protokół Wiadomości” wybierz “NIP-17 (Prywatny)”
  3. Opcjonalnie: Włącz “Auto-upgrade rozmów NIP-04” aby konwertować istniejące czaty

Najlepsze Praktyki Bezpieczeństwa

Maksymalizuj swoją prywatność używając NIP-17:

1. Weryfikuj Wsparcie Klienta Przed Wrażliwą Komunikacją

Zawsze potwierdzaj, że Twój kontakt używa klienta wspierającego NIP-17 przed udostępnieniem wrażliwych informacji. Wysyłanie NIP-17 do klienta tylko-NIP-04 spowoduje nieczytelne wiadomości.

2. Nie Mieszaj Protokołów w Tym Samym Wątku

Unikaj dezorientacji używając jednego protokołu na rozmowę. Jeśli zaczniesz z NIP-04, zakończ z NIP-04, lub wyraźnie wskaż kiedy się przełączasz.

3. Używaj Świeżych Kluczy dla Rozmów o Wysokim Bezpieczeństwie

Dla maksymalnego bezpieczeństwa:

  • Utwórz dedykowaną parę kluczy dla wrażliwej komunikacji
  • Udostępnij klucz publiczny przez bezpieczny kanał poza pasmem
  • Rotuj klucze okresowo

4. Bądź Świadomy Metadanych w Innych Typach Eventów

NIP-17 chroni tylko wiadomości bezpośrednie. Inne typy eventów (notatki, reakcje, obserwacje) nadal ujawniają dane grafu społecznego. Używaj wielu tożsamości dla kompartmentalizacji.

5. Wybieraj Relaye Skupione na Prywatności

Nawet z NIP-17, Twoje wzorce ruchu są widoczne dla relayów. Używaj:

  • Tor lub VPN dla dodatkowej prywatności na poziomie sieci
  • Relayów, które nie logują lub nie zachowują metadanych wiadomości
  • Wielu relayów do rozproszenia Twojego ruchu

6. Zrozum Ograniczenia

NIP-17 zapewnia doskonałą prywatność, ale nie jest doskonały:

  • Relaye nadal widzą adresy IP (używaj VPN/Tor)
  • Analiza timingowa może ujawniać wzorce komunikacji
  • Skompromitowani klienci mogą wyciekać informacje
  • Odbiorca zawsze widzi tożsamość nadawcy

Rozwiązywanie Powszechnych Problemów

„Moje wiadomości nigdy nie docierają” — najpierw sprawdź listę relayów DM

To najczęstsza awaria NIP-17 i prawie nigdy nie chodzi o szyfrowanie.

Nadawcy NIP-17 nie dostarczają na Twoje zwykłe relaye. Szukają eventu kind 10050 — Twojej opublikowanej listy relayów przyjmujących wiadomości bezpośrednie — i wysyłają gift wrap wyłącznie tam. Jeśli nigdy jej nie opublikowałeś, klient nadawcy nie ma dokąd dostarczyć i wiadomość znika po cichu. Żaden z interfejsów nic nie pokaże.

Naprawa: w kliencie obsługującym NIP-17 znajdź ustawienie relayów dla wiadomości prywatnych i zapisz przynajmniej jeden relay. To publikuje Twoją listę kind 10050. Wybierz relay, który faktycznie przyjmuje gift wrapy — część odrzuca kind 1059. (To jest Krok 3 przewodnika migracji — jeśli go pominąłeś, zacznij od niego.)

Trzymaj listę krótką. Każdy relay na niej to relay, który widzi, kto Ci pisze.

”Wiadomości wyświetlają się jako nieczytelne lub bełkot”

Przyczyna: Odbiorca nie wspiera NIP-17 Rozwiązanie: Poproś odbiorcę o aktualizację klienta, lub tymczasowo wróć do NIP-04

”Nie widzę, czy ktoś przeczytał moją wiadomość NIP-17”

Przyczyna: Potwierdzenia przeczytania nie są jeszcze standaryzowane dla NIP-17 Rozwiązanie: To oczekiwane zachowanie. NIP-17 priorytetyzuje prywatność nad potwierdzeniem dostarczenia.

”Wiadomości pojawiają się poza kolejnością”

Przyczyna: Różnica czasu między urządzeniami Rozwiązanie: Upewnij się, że czas Twojego urządzenia jest zsynchronizowany (włącz automatyczną synchronizację czasu)

“Relay odrzuca eventy NIP-17”

Przyczyna: Stare oprogramowanie relaya Rozwiązanie:

  1. Sprawdź wspierane NIP-y relaya
  2. Dodaj nowoczesne relaye wspierające NIP-17
  3. Zgłoś operatorowi relaya

”Klient pokazuje zarówno opcje NIP-04 jak i NIP-17”

Oczekiwane zachowanie: Wielu klientów wspiera oba podczas okresu przejściowego. Zawsze wybieraj NIP-17 gdy dostępny.

Przyszłość Prywatnych Wiadomości w Nostr

NIP-17 to obecny złoty standard dla prywatnych wiadomości w Nostr, ale rozwój trwa:

  • NIP-44: Ulepszony schemat szyfrowania, który może zastąpić NIP-17
  • Szyfrowanie grupowe: Protokoły prywatnych wiadomości grupowych są rozwijane
  • Integracja płatności: Prywatne wiadomości z płatnościami Lightning

Bądź na bieżąco śledząc:

  • nostr:npub1… # Rozwój protokołu Nostr
  • nostr:npub1… # Najlepsze praktyki bezpieczeństwa

Podsumowanie

NIP-17 reprezentuje duży krok naprzód dla prywatności w Nostr. Rozwiązując problemy wycieku metadanych NIP-04, umożliwia naprawdę prywatne wiadomości bezpośrednie chroniące zarówno treść jak i wzorce komunikacji.

Proces migracji jest prosty: zaktualizuj klienta, zweryfikuj czy Twoi kontakty wspierają NIP-17 i ciesz się wzmocnioną prywatnością. Z powszechnym wsparciem klientów już dostępnym, nie ma powodu kontynuować używania przestarzałego protokołu NIP-04.

Zadania do wykonania:

  1. ✅ Zaktualizuj swojego klienta Nostr do najnowszej wersji
  2. ✅ Włącz NIP-17 w ustawieniach
  3. ✅ Opublikuj swoją listę relayów DM (kind 10050) — bez niej nic nie dociera
  4. ✅ Zweryfikuj ze swoimi kontaktami, że wspierają NIP-17
  5. ✅ Zacznij używać NIP-17 dla wszystkich nowych prywatnych rozmów

Pamiętaj: Prywatność to praktyka, nie produkt. NIP-17 daje Ci narzędzia—używaj ich mądrze.


Przetestuj Swoją Wiedzę o NIP-17

Gotowy sprawdzić swoje zrozumienie bezpiecznych wiadomości?

Quiz: NIP-17

Cel NIP-17

Pytanie 1 z 5

0/5 odpowiedziano

Do czego służy NIP-17?
Dobra wiedza

Ostatnia aktualizacja: 28 lipca 2026

Masz pytania? Dołącz do dyskusji na Nostr lub otwórz issue w tym repozytorium dokumentacji.


Czytaj dalej

Ulepsz tę stronę

Widzisz literówkę albo coś niejasnego? Edytuj ten poradnik na GitHubie.

Śledź nas na Nostr