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

  1. 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
  2. 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 destinataire
  • prekey - Prekey du destinataire pour le calcul DH
  • dh_sending - Clé publique DH d’envoi actuelle
  • current_index - Numéro du message dans la chaîne
  • previous_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 :