NIP-104: DM con Double Ratchet
NIP-104 è una bozza per messaggi diretti end-to-end encrypted che usa un design double ratchet, con l’obiettivo di portare forward secrecy e recupero dopo compromissione nelle conversazioni Nostr.
Perché conta
Le soluzioni DM esistenti in Nostr hanno limiti:
- NIP-04: Cifra il contenuto ma perde metadata
- NIP-17 + NIP-59: Risolve la perdita di metadata tramite gift-wrapping ma non offre forward/backward secrecy
NIP-104 punta alla proprietà che manca: se lo stato di un dispositivo o una chiave di lungo periodo viene compromessa, l’attaccante non dovrebbe ottenere automaticamente l’intera cronologia della conversazione o accesso permanente ai messaggi futuri.
Come funziona
NIP-104 parte con una configurazione in stile X3DH che combina chiavi d’identità e prekey per derivare un segreto condiviso iniziale. Dopo quel punto, ciascun lato fa avanzare un double ratchet: un ratchet Diffie-Hellman ruota root key e chain key quando le parti si scambiano nuove chiavi pubbliche, e un ratchet simmetrico deriva chiavi per messaggio all’interno di ogni catena di invio o ricezione.
Poiché ogni chiave di messaggio ha vita breve, i vecchi ciphertext sono più difficili da recuperare anche se uno stato successivo viene esposto. Questa è la principale differenza tecnica rispetto agli schemi con una singola chiave statica.
Kind di evento
- Kind 10443: Pubblica le prekey dell’utente per l’inizializzazione X3DH
- Kind 443: Configurazione iniziale della conversazione con primo messaggio cifrato
- Kind 444: Messaggi cifrati successivi in conversazioni già stabilite
Tutti i messaggi cifrati sono racchiusi in eventi kind 1059 GiftWrap per la protezione dei metadata.
Sicurezza e compromessi
Il guadagno in sicurezza porta con sé più stato. Ogni accoppiamento di dispositivi richiede stato del ratchet, gestione delle prekey e logica di recupero per la consegna fuori ordine. Ripristinare un vecchio backup o usare più dispositivi non sincronizzati può rompere la decrittazione fino a quando la conversazione non viene ristabilita.
Questo compromesso spiega perché la messaggistica double-ratchet è più difficile da integrare a posteriori rispetto a normali note cifrate. I client hanno bisogno di stato locale persistente e di una semantica accurata per i dispositivi, non solo di una primitiva di cifratura.
Note sull’interoperabilità
La proposta usa kind dedicati per configurazione e messaggi, più NIP-59: Gift Wrap per la privacy del trasporto. Raccomanda anche di pubblicare questi eventi gift-wrapped solo sui relay elencati nell’evento di preferenza DM-relay kind 10050 di un utente. Questo significa che NIP-104 non è semplicemente un sostituto drop-in di NIP-17: Messaggi diretti privati; i client hanno bisogno di supporto esplicito per il flusso delle prekey, la scoperta dei DM-relay e la macchina a stati del ratchet.
Fonti primarie:
Citato in:
Vedi anche: