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

advanced

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 - Wewnętrzna warstwa szyfrowania chroniąca treść wiadomości
  2. Gift Wrap - Zewnętrzna warstwa szyfrowania ukrywająca metadane nadawcy i odbiorcy

To podejście dwuwarstwowe zapewnia, że:

  • Treść wiadomości pozostaje prywatna
  • Nawet operatorzy relayów nie widzą kto z kim rozmawia
  • Wzorce wiadomości i metadane są chronione przed obserwatorami sieci

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 przed wszystkimi oprócz odbiorcy
Metadane OdbiorcyWidoczne dla relayówUkryte przed wszystkimi oprócz odbiorcy
Treść WiadomościZaszyfrowanaZaszyfrowana
Ochrona przed ReplayBrakWbudowane timestamps
Forward SecrecyNieLepsza (klucze per-wiadomość)
Status BezpieczeństwaPrzestarzałyZalecany
InteroperacyjnośćPowszechnie wspieranyRosnące wsparcie

Podstawowy Problem z NIP-04

Wiadomości NIP-04 ujawniają kto z kim rozmawia w blockchainie. 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
Reprezentacja Wizualna:
┌─────────────────────────────────────┐
│ Gift Wrap (Warstwa Zewnętrzna)      │
│ ┌─────────────────────────────────┐ │
│ │ Seal (Warstwa Wewnętrzna)       │ │
│ │ ┌─────────────────────────────┐ │ │
│ │ │ Faktyczna Treść Wiadomości  │ │ │
│ │ │ Nadawca: real_pubkey        │ │ │
│ │ │ Timestamp: 1234567890       │ │ │
│ │ └─────────────────────────────┘ │ │
│ │ Zaszyfrowane kluczem efemerycznym│ │
│ └─────────────────────────────────┘ │
│ Losowy pubkey, wskazówka 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

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: 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 4: 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

”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. ✅ Zweryfikuj ze swoimi kontaktami, że wspierają NIP-17
  4. ✅ 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?

NIP-17 Private Messages Quiz

NIP-17 Purpose

Question 1 of 5

0/5 answered
What is NIP-17?
P0 Critical

Ostatnia aktualizacja: 11 lutego 2025

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