NIP-104: Double Ratchet DMs
NIP-104 définit des messages directs chiffrés de bout en bout utilisant un protocole double ratchet (basé sur l’architecture de Signal), offrant forward secrecy et post-compromise security pour les conversations Nostr.
Pourquoi C’est Important
Les solutions DM existantes sur Nostr ont des limitations :
- NIP-04 : Chiffre le contenu mais expose les métadonnées
- NIP-17 + NIP-59 : Résout la fuite de métadonnées via gift-wrapping mais manque de forward/backward secrecy
NIP-104 complète le tableau : si la clé privée d’un utilisateur est compromise, les attaquants ne peuvent pas lire les messages passés (forward secrecy) ni continuer à lire les messages futurs indéfiniment (post-compromise security).
Comment Ça Fonctionne
Configuration Initiale (X3DH)
Deux parties effectuent un échange triple Diffie-Hellman étendu utilisant des clés d’identité et des prekeys pour dériver une clé racine partagée initiale.
Le Double Ratchet
- DH Ratchet : Chaque fois que les parties échangent des messages, de nouvelles clés Diffie-Hellman sont générées, produisant de nouvelles clés racines et clés de chaîne
- Symmetric Ratchet : Des chaînes d’envoi et de réception séparées dérivent des clés de message individuelles pour chaque message
Cette rotation continue des clés garantit que la compromission d’une clé révèle un contenu minimal de messages.
Event Kinds
- Kind 442 : Publie les prekeys de l’utilisateur pour l’initialisation X3DH
- Kind 443 : Configuration initiale de conversation avec premier message chiffré
- Kind 444 : Messages chiffrés subséquents dans les conversations établies
Tous les messages chiffrés sont enveloppés dans des événements GiftWrap kind 1059 pour la protection des métadonnées.
Tags Clés
p- Clé publique du destinataireprekey- Prekey du destinataire pour le calcul DHdh_sending- Clé publique DH d’envoi actuellecurrent_index- Numéro du message dans la chaîneprevious_length- Longueur de la chaîne de messages précédente
Limitations
Les messages fonctionnent par paire appareil-client. La synchronisation entre plusieurs appareils nécessite une initialisation séparée pour chaque appareil, un compromis pour une sécurité renforcée.
Sources primaires :
Mentionné dans :
Voir aussi :