NIP-104 es un borrador para mensajes directos cifrados de extremo a extremo usando un diseño de double ratchet, con el objetivo de aportar forward secrecy y recuperación post-compromiso a las conversaciones de Nostr.

Por Qué Importa

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 apunta a la propiedad que falta: si el estado de un dispositivo o la clave a largo plazo se ve comprometida, el atacante no debería obtener automáticamente el historial completo de la conversación ni acceso permanente a mensajes futuros.

Cómo Funciona

NIP-104 comienza con una configuración estilo X3DH que combina claves de identidad y prekeys para derivar un secreto compartido inicial. Después, cada lado avanza un double ratchet: un ratchet Diffie-Hellman rota las claves raíz y de cadena cuando las partes intercambian claves públicas nuevas, y un ratchet simétrico deriva claves por mensaje dentro de cada cadena de envío o recepción.

Dado que cada clave de mensaje es de corta vida, los textos cifrados antiguos son más difíciles de recuperar incluso si un estado posterior queda expuesto. Esa es la principal diferencia técnica con los esquemas de clave estática única.

Event Kinds

  • Kind 10443: Publica prekeys del usuario para la inicialización X3DH
  • Kind 443: Configuración inicial de conversación con 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.

Seguridad y Compensaciones

La ganancia de seguridad viene con más estado. Cada par de dispositivos necesita estado de ratchet, gestión de prekeys y lógica de recuperación para entrega fuera de orden. Restaurar un respaldo antiguo o usar múltiples dispositivos no sincronizados puede romper el descifrado hasta que la conversación se reestablezca.

Esa compensación es la razón por la que la mensajería con double ratchet es más difícil de adaptar que las notas cifradas ordinarias. Los clientes necesitan estado local duradero y semánticas de dispositivo cuidadosas, no solo una primitiva de cifrado.

Notas de Interoperabilidad

La propuesta usa kinds dedicados de configuración y mensaje más NIP-59: Gift Wrap para privacidad de transporte. También recomienda publicar estos eventos gift-wrapped solo en relays listados en el evento de preferencia de relay para DMs kind 10050 del usuario. Eso significa que NIP-104 no es simplemente un reemplazo directo de NIP-17: Mensajes Directos Privados; los clientes necesitan soporte explícito para su flujo de prekeys, descubrimiento de relay para DMs y máquina de estados del ratchet.


Fuentes primarias:

Mencionado en:

Ver también: