NIP-104 define mensajes directos cifrados de extremo a extremo utilizando un protocolo double ratchet (basado en la arquitectura de Signal), proporcionando forward secrecy y post-compromise security para las conversaciones en Nostr.

Por Qué Es Importante

Las soluciones existentes de DM en Nostr tienen limitaciones:

  • NIP-04: Cifra el contenido pero filtra metadatos
  • NIP-17 + NIP-59: Resuelve la filtración de metadatos mediante gift-wrapping pero carece de forward/backward secrecy

NIP-104 completa el panorama: si la clave privada de un usuario se ve comprometida, los atacantes no pueden leer mensajes pasados (forward secrecy) ni continuar leyendo mensajes futuros indefinidamente (post-compromise security).

Cómo Funciona

Configuración Inicial (X3DH)

Dos partes realizan un intercambio triple Diffie-Hellman extendido utilizando claves de identidad y prekeys para derivar una clave raíz compartida inicial.

El Double Ratchet

  1. DH Ratchet: Cada vez que las partes intercambian mensajes, se generan nuevas claves Diffie-Hellman, produciendo nuevas claves raíz y claves de cadena
  2. Symmetric Ratchet: Cadenas separadas de envío y recepción derivan claves de mensaje individuales para cada mensaje

Esta rotación continua de claves asegura que comprometer una clave revele un contenido mínimo de mensajes.

Event Kinds

  • Kind 442: Publica prekeys del usuario para la inicialización X3DH
  • Kind 443: Configuración inicial de conversación con el primer mensaje cifrado
  • Kind 444: Mensajes cifrados subsecuentes en conversaciones establecidas

Todos los mensajes cifrados se envuelven en eventos GiftWrap kind 1059 para protección de metadatos.

Tags Clave

  • p - Clave pública del destinatario
  • prekey - Prekey del destinatario para cálculo DH
  • dh_sending - Clave pública DH de envío actual
  • current_index - Número de mensaje en la cadena
  • previous_length - Longitud de la cadena de mensajes anterior

Limitaciones

Los mensajes funcionan por par dispositivo-cliente. Sincronizar entre múltiples dispositivos requiere inicialización separada para cada dispositivo, un compromiso para mayor seguridad.


Fuentes primarias:

Mencionado en:

Ver también: