NIP-17 („Private Direct Messages“) je návrh protokolu Nostr, ktorý špecifikuje, ako posielať úplne súkromné priame správy medzi dvomi používateľmi.
Používa symetrické šifrovanie definované v NIP-44 a voliteľne „pečate“ a „darčekové balenie“ z NIP-59, takže samotný relay ani iní účastníci nevidia obsah správy – vidia iba zašifrovaný blob a metadáta, kto komu správu posiela. GitHubrust-nostr.org

Kľúčové prvky NIP-17

Prvok

Popis

Typ eventu (kind 4)

Šifrovaný DM sa publikuje ako event typu 4; pole content obsahuje ciphertext v base64 a JSON pole tags udáva verejný kľúč príjemcu ("p":<hex>). GitHub

Šifrovanie

Odosielateľ a príjemca vypočítajú symetrický kľúč z ECDH (súkromný kľúč odosielateľa × verejný kľúč príjemcu) – schéma definovaná v NIP-44. Tak vznikne end-to-end šifrovanie bez potreby PKI. GitHubrust-nostr.org

Relay

Správy sa publikujú na bežné Nostr relé; relé nemusí rozumieť obsahu, stačí ak vie preposielať eventy. Klient príjemcu správy si z databázy relé vytiahne všetky kind 4, ktoré sú adresované jeho verejnému kľúču.

Voliteľné „seals“

Ak sa správa prenáša cez nedôveryhodné relé, môže byť ďalšia vrstva šifrovania/pečatenia podľa NIP-59 (tzv. sealed envelope). GitHub

Prijímanie DM

Používateľ si môže v kontakte (NIP-02) alebo v zozname relé (NIP-51) uložiť, na ktorých relé chce DM prijímať. NIPs (Nostr Improvement Proposals)

Prečo je to dôležité

  1. Súkromie – obsah správ je prístupný len dvom protistranám; operator relé nepozná plaintext ani predmet.
  2. Jednoduchosť – nepotrebuje sa nastavovať extra „inbox server“; stačí bežné Nostr pripojenie.
  3. Rozšíriteľnosť – keďže ide o bežné eventy, správy môžu obsahovať akékoľvek binárne dáta (obrázky, súbory) po ich zakódovaní.

V praxi

Klienti ako Damus, Amethyst alebo Flash už NIP-17 implementujú – po výbere príjemcu jednoducho vyplnia text, klient ho zašifruje a publikuje ako kind 4. Prijímateľ uvidí „novú správu“, dešifruje ju lokálne a odpovie rovnakým spôsobom.

Stručne: NIP-17 je základný stavebný kameň end-to-end šifrovaných DM na Nostr-e – definuje formát eventu, krypto-handshake a príjem na relé, čím dáva používateľom možnosť chatovať súkromne bez centrálneho servera.