NIP-104: Double Ratchet DMs
NIP-104 definisce messaggi diretti crittografati end-to-end utilizzando un protocollo double ratchet (basato sull’architettura di Signal), fornendo forward secrecy e post-compromise security per le conversazioni Nostr.
Perché È Importante
Le soluzioni DM esistenti su Nostr hanno limitazioni:
- NIP-04: Cripta il contenuto ma espone i metadati
- NIP-17 + NIP-59: Risolve la perdita di metadati tramite gift-wrapping ma manca di forward/backward secrecy
NIP-104 completa il quadro: se la chiave privata di un utente viene compromessa, gli attaccanti non possono leggere i messaggi passati (forward secrecy) né continuare a leggere i messaggi futuri indefinitamente (post-compromise security).
Come Funziona
Configurazione Iniziale (X3DH)
Due parti eseguono uno scambio triplo Diffie-Hellman esteso utilizzando chiavi di identità e prekeys per derivare una chiave radice condivisa iniziale.
Il Double Ratchet
- DH Ratchet: Ogni volta che le parti scambiano messaggi, vengono generate nuove chiavi Diffie-Hellman, producendo nuove chiavi radice e chiavi di catena
- Symmetric Ratchet: Catene separate di invio e ricezione derivano chiavi di messaggio individuali per ogni messaggio
Questa rotazione continua delle chiavi assicura che compromettere una chiave riveli un contenuto minimo di messaggi.
Event Kinds
- Kind 442: Pubblica le prekeys dell’utente per l’inizializzazione X3DH
- Kind 443: Configurazione iniziale della conversazione con primo messaggio crittografato
- Kind 444: Messaggi crittografati successivi in conversazioni stabilite
Tutti i messaggi crittografati sono avvolti in eventi GiftWrap kind 1059 per la protezione dei metadati.
Tag Chiave
p- Chiave pubblica del destinatarioprekey- Prekey del destinatario per il calcolo DHdh_sending- Chiave pubblica DH di invio correntecurrent_index- Numero del messaggio nella catenaprevious_length- Lunghezza della catena di messaggi precedente
Limitazioni
I messaggi funzionano per coppia dispositivo-client. La sincronizzazione tra più dispositivi richiede un’inizializzazione separata per ogni dispositivo, un compromesso per una maggiore sicurezza.
Fonti primarie:
Menzionato in:
Vedi anche: