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
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:
- Seal (kind 13) — wewnętrzna warstwa, która szyfruje wiadomość i ukrywa, który klucz ją podpisał
- 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
Relaye nadal widzą, do kogo piszesz
Gift wrap niesie klucz publiczny odbiorcy w jawnym tagu p. Musi go nieść —
inaczej relay odbiorcy nie wiedziałby, komu dostarczyć wiadomość. NIP-17
ukrywa nadawcę, a nie odbiorcę.
Każdy, kto czyta strumień relaya, widzi, że ktoś wysłał Ci wiadomość i kiedy — nie widzi tylko kto i co. Jeśli Twój model zagrożeń wymaga ukrycia samego faktu, że cokolwiek dostałeś, sam NIP-17 nie wystarczy.
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
| Cecha | NIP-04 | NIP-17 |
|---|---|---|
| Szyfrowanie | Pojedyncza warstwa AES-256-CBC | Dwuwarstwowe (seal + gift wrap) |
| Metadane Nadawcy | Widoczne dla relayów | Ukryte — podpisane kluczem jednorazowym |
| Metadane Odbiorcy | Widoczne dla relayów | Nadal widoczne — jawny tag p |
| Treść Wiadomości | Zaszyfrowana | Zaszyfrowana |
| Ochrona przed Replay | Brak | Losowane timestampy |
| Forward Secrecy | Nie | Nie — NIP-44 tego nie zapewnia |
| Status Bezpieczeństwa | Przestarzały | Zalecany |
| Interoperacyjność | Powszechnie wspierany | Rosną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
Kluczowe Korzyści
- Prywatność Metadanych: Nikt oprócz odbiorcy nie może ustalić kto wysłał wiadomość lub komu została wysłana
- Niepowiązywalność: Wielokrotne wiadomości między tymi samymi stronami wyglądają jako niepowiązane eventy dla obserwatorów
- 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:
| Klient | Wsparcie NIP-17 | Status |
|---|---|---|
| Damus | Tak | Domyślny dla nowych DM |
| Amethyst | Tak | Domyślny dla nowych DM |
| Primal | Tak | Wspierany |
| Coracle | Tak | Wspierany |
| Iris | Tak | Wspierany |
| Snort | Tak | Wspierany |
| Nos | Tak | Wspierany |
Krok 2: Włącz NIP-17 w Swoim Kliencie
Damus (iOS/macOS)
- Otwórz Ustawienia → Prywatność i Bezpieczeństwo
- Przewiń do “Szyfrowanie Wiadomości”
- Przełącz “Używaj NIP-17 dla nowych wiadomości” na WŁĄCZONE
- 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)
- Idź do Ustawienia → Wiadomości
- Włącz “Używaj NIP-17 dla DM-ów”
- Uruchom ponownie aplikację dla pełnego efektu
Primal (iOS/Android/Web)
- Przejdź do Ustawienia → Prywatność
- Pod “Wiadomości Bezpośrednimi,” wybierz “NIP-17 (Zalecany)”
- 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).
- W swoim kliencie poszukaj ustawienia relayów DM, wiadomości prywatnych lub wiadomości bezpośrednich
- Dodaj od jednego do trzech relayów, które przyjmują gift wrapy (kind 1059) — niektóre relaye je odrzucają
- 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:
- Wyślij wiadomość testową do siebie lub znajomego
- Sprawdź rodzaj eventu (powinien być
1059dla gift wrapów) - Szukaj
kind: 1059w szczegółach wiadomości - Tag
ppowinien 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:
- Zaktualizuj do najnowszego Damus z App Store
- NIP-17 jest automatycznie włączony dla nowych rozmów
- 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:
- Ustawienia → Zaawansowane → Ustawienia Protokołu
- Włącz “NIP-17 gift wrap dla DM-ów”
- 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:
- Ustawienia → Bezpieczeństwo i Prywatność
- Pod “Protokół Wiadomości” wybierz “NIP-17 (Prywatny)”
- 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:
- Sprawdź wspierane NIP-y relaya
- Dodaj nowoczesne relaye wspierające NIP-17
- 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:
- ✅ Zaktualizuj swojego klienta Nostr do najnowszej wersji
- ✅ Włącz NIP-17 w ustawieniach
- ✅ Opublikuj swoją listę relayów DM (kind 10050) — bez niej nic nie dociera
- ✅ Zweryfikuj ze swoimi kontaktami, że wspierają NIP-17
- ✅ 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?
Cel NIP-17
0/5 odpowiedziano
Ostatnia aktualizacja: 28 lipca 2026
Masz pytania? Dołącz do dyskusji na Nostr lub otwórz issue w tym repozytorium dokumentacji.
Czytaj dalej
Widzisz literówkę albo coś niejasnego? Edytuj ten poradnik na GitHubie.