NIP-17: Mensajes Privados Directos - Una Guía Completa
Aprende sobre NIP-17, el reemplazo seguro de NIP-04, y cómo migrar tus mensajes privados en Nostr
NIP-17 representa una mejora significativa de seguridad en cómo funcionan los mensajes privados en Nostr. Esta guía explica por qué deberías preocuparte por esta mejora del protocolo, cómo migrar del antiguo estándar NIP-04, y pasos prácticos para asegurar tus comunicaciones.
¿Qué es NIP-17?
NIP-17 es una especificación del protocolo Nostr que define Mensajes Directos Privados usando un sistema de encriptación de doble capa llamado “seal + gift wrap”. Fue creado para abordar fallas de seguridad fundamentales en el método de encriptación NIP-04 anterior.
A diferencia de NIP-04, que usaba una sola capa de encriptación AES-256-CBC, NIP-17 usa:
- Seal (kind 13): la capa interna, firmada con tu clave real, para que quien te lee pueda comprobar que el mensaje es tuyo de verdad
- Gift wrap (kind 1059): el sobre exterior, firmado con una clave desechable, que oculta el seal, de modo que tu identidad real nunca aparece en el evento que guardan los relays
Este sistema de capas significa que:
- El contenido del mensaje permanece privado
- Los relays no pueden ver quién envió un mensaje. El gift wrap va firmado con una clave aleatoria de un solo uso, nunca con la tuya
- Los timestamps se aleatorizan, así que es más difícil correlacionar cuándo se envían los mensajes
Los relays sí pueden ver a quién le escribes
El gift wrap lleva la clave pública del destinatario en un tag p en texto
plano. No puede ser de otra forma: si no, el relay del destinatario no sabría a
quién entregárselo. NIP-17 oculta al remitente, no al destinatario.
Cualquiera que lea el flujo de eventos de un relay puede ver que alguien te envió un mensaje y cuándo, pero no quién ni qué. Si tu modelo de amenaza exige ocultar incluso que recibiste algo, NIP-17 por sí solo no basta.
Por Qué Importa NIP-17: El Problema de Seguridad de NIP-04
NIP-04 fue el protocolo de mensaje directo original de Nostr, pero tiene varios problemas de seguridad críticos que lo hacen inadecuado para comunicación verdaderamente privada.
Comparación: NIP-04 vs NIP-17
| Característica | NIP-04 | NIP-17 |
|---|---|---|
| Encriptación | Una capa AES-256-CBC | Doble capa (seal + gift wrap) |
| Metadatos del remitente | Visible para relays | Oculto, firmado con una clave de un solo uso |
| Metadatos del destinatario | Visible para relays | Sigue visible: tag p en texto plano |
| Contenido del mensaje | Encriptado | Encriptado |
| Metadatos de tiempo | Timestamps reales visibles | Aleatorizados hasta dos días atrás |
| Secreto hacia adelante | No | No, NIP-44 no lo proporciona |
| Estado de seguridad | Obsoleto | Recomendado |
| Interoperabilidad | Ampliamente soportado | Soporte creciente |
El Problema Central con NIP-04
Los mensajes NIP-04 exponen quién habla con quién ante cada relay que los almacena. (Nostr no tiene blockchain: los eventos simplemente residen en los relays, y cualquiera puede leer de un relay.) Mientras que el cuerpo del mensaje está encriptado, el sobre contiene:
# Estructura de Evento NIP-04 (simplificada)
{
"pubkey": "<sender_public_key>", # Cualquiera puede ver quién envió esto
"tags": [["p", "<recipient_pubkey>"]], # Cualquiera puede ver quién lo recibió
"content": "<encrypted_content>" # Solo el contenido está oculto
}
Esto significa que operadores de relays, observadores de red y scrapers de datos pueden:
- Construir grafos sociales mostrando quién se comunica con quién
- Rastrear patrones y frecuencias de comunicación
- Inferir relaciones del tiempo de los mensajes
NIP-17 cierra casi toda esa brecha envolviendo el mensaje entero en un sobre exterior firmado con una clave desechable, de modo que el relay no puede saber quién lo envió. Una cosa queda a la vista por diseño: la clave pública del destinatario viaja en el sobre, en un tag en texto plano, porque el relay tiene que saber a quién entregarlo. Así que NIP-17 oculta al remitente, no al destinatario.
Cómo Funciona NIP-17: Seal + Gift Wrap
Entender la implementación técnica ayuda a apreciar las mejoras de seguridad.
La Capa Gift Wrap (Exterior)
El gift wrap es el sobre que el relay guarda en realidad. Tu cliente genera una clave completamente nueva para este único mensaje, firma el sobre con ella y luego la tira. El contenido va encriptado de forma que solo el destinatario puede abrirlo. Esta capa lleva:
- Una clave pública de un solo uso, sin nada que la ate a ti
- La clave pública del destinatario, en un tag en texto plano que el relay puede leer
- Un timestamp aleatorizado
- El mensaje interno sellado
La Capa Seal (Interior)
Dentro del gift wrap se encuentra el seal. Aquí vive la autoría, y el relay nunca llega a verla. Esta capa:
- Va firmada con tu clave real, que es como el destinatario sabe que el mensaje es tuyo
- Va encriptada con una clave derivada de tu clave privada y la pública del destinatario, así que solo tú y esa persona pueden leerla
- Lleva el contenido del mensaje
- Lleva un timestamp que tu cliente desplaza a propósito hasta dos días hacia atrás, para que nadie pueda agrupar mensajes por el momento en que se enviaron
Gift wrap (capa exterior)
Pubkey aleatorio, pista del destinatario: esto es todo lo que ve un relay
Seal (capa interior)
Firmado con la clave real del remitente, legible solo por el destinatario
Contenido real del mensaje
Remitente: pubkey real · Timestamp: 1234567890
Beneficios Clave
- Privacidad del remitente: nadie salvo el destinatario puede determinar
quién envió el mensaje. El destinatario, en cambio, aparece nombrado en un tag
pen texto plano que los relays tienen que poder leer. - No vinculable: cada mensaje se firma con una clave nueva de un solo uso, así que los mensajes de un mismo remitente no se ven obviamente relacionados entre sí.
- Sin secreto hacia adelante: NIP-44 deriva su clave de conversación a
partir de dos claves estáticas, de modo que un atacante que más adelante
consiga tu
nsecpodrá desencriptar todos los mensajes que haya guardado. Las claves de un solo uso ocultan quién envió un mensaje; no protegen los mensajes pasados. Borra las conversaciones antiguas si eso te importa.
Entrega: La Lista de Relays para DMs (Kind 10050)
El seal y el gift wrap describen cómo se empaqueta un mensaje. Hay una tercera pieza, el evento kind 10050, que describe dónde se entrega. Es una pequeña lista pública de los relays que aceptan tus mensajes privados.
La especificación es estricta en esto: los remitentes DEBEN publicar los gift wraps únicamente en los relays de la lista kind 10050 del destinatario. Si nunca has publicado una, la especificación te considera “no listo para recibir mensajes” y los clientes ni siquiera deberían intentarlo. Así que los DMs dirigidos a ti simplemente nunca se entregan, en silencio. No hay ningún error en ninguno de los dos lados.
Dos reglas prácticas:
- Publica una antes de esperar cualquier DM NIP-17 (ve el Paso 3 de la guía de migración más abajo)
- Mantenla pequeña. La especificación recomienda 1-3 relays, y cada relay que listes podrá ver quién te está enviando mensajes
Guía de Migración: Cambiando de NIP-04 a NIP-17
Migrar a NIP-17 es sencillo con clientes Nostr modernos. Aquí te explicamos cómo hacer el cambio.
Paso 1: Verifica el Soporte de Tu Cliente
NIP-17 solo sirve si el cliente de los dos extremos de la conversación lo habla. Estos cuatro lo dicen en su propia documentación o en su propio código:
| Cliente | NIP-17 | Dónde funciona |
|---|---|---|
| Amethyst | Sí | Android |
| 0xchat | Sí | Android, iOS |
| Coracle | Sí | Web |
| Snort | Sí | Web |
Damus merece un aviso aparte. A fecha de septiembre de 2026, la lista de especificaciones que publica Damus sigue sin incluir NIP-17, solo el viejo NIP-04. Dos consecuencias, y las dos importan. Un mensaje envuelto en gift wrap que tú envíes no le aparecerá en absoluto a alguien que use Damus. Y lo que esa persona te mande sale como un evento kind 4 en claro, con las dos claves públicas por fuera, la tuya y la suya, donde cualquier relay que lo guarde puede leerlas. Si una conversación es delicada, llévala a alguno de los clientes de arriba.
Primal, Iris y Nos se quedan en una zona sin resolver. Primal no dice nada en público, ni a favor ni en contra, así que trátalo como desconocido. Iris encripta sus chats privados con un esquema propio de doble ratchet en lugar de NIP-17 a secas, lo cual está bien dentro de Iris y no garantiza nada fuera. Nos no lista ni NIP-17 ni las dos especificaciones sobre las que se apoya, y el proyecto lleva callado desde principios de 2025.
Las listas de funciones de los clientes se mueven más rápido que las guías. Si el tuyo no aparece aquí, la prueba del Paso 5 lo aclara antes que leer changelogs.
Paso 2: Normalmente No Hay Nada Que Activar
Este paso es más corto de lo que esperarías. Ninguno de los clientes de arriba documenta un interruptor de “activar NIP-17”, porque no lo hay. Usan gift wraps automáticamente en cuanto la persona del otro lado puede recibirlos.
Así que salta al Paso 3, que es la parte que sí te necesita. Tus conversaciones NIP-04 existentes se quedan donde están y siguen siendo legibles; nada las convierte.
Paso 3: Publica Tu Lista de Relays para DMs (Kind 10050)
Los remitentes NIP-17 entregan solo en los relays que listas en tu evento kind 10050. Sin uno, los mensajes dirigidos a ti se descartan en silencio (ve Entrega: La Lista de Relays para DMs más arriba).
- En tu cliente, busca el ajuste de DMs, mensajes privados o relays de mensajería
- Agrega de uno a tres relays que acepten gift wraps (kind 1059), porque algunos los rechazan
- Guarda. Tu cliente publica la lista kind 10050 por ti
Algunos clientes publican esta lista por ti la primera vez que abres un chat privado. No des por hecho que el tuyo lo hizo: verifica la entrega en el Paso 5 antes de confiar en ello.
Paso 4: Comunícate con Tus Contactos
NIP-17 solo funciona si ambas partes tienen soporte NIP-17. Envía una nota a contactos frecuentes:
"¡Hey! Estoy actualizando a NIP-17 para mejor privacidad en nuestros DMs.
Por favor actualiza tu cliente Nostr si aún no lo has hecho.
¡Nuestros mensajes futuros serán más seguros!"
Paso 5: Comprueba Que Funciona de Verdad
La comprobación que importa no requiere ninguna habilidad técnica. Pídele a alguien que use uno de los clientes del Paso 1 que te escriba, y respóndele. Si llegan los dos sentidos, tu lista kind 10050 está publicada y los gift wraps te están llegando. Si tu mensaje se esfuma y ninguno de los dos ve un error, ese es el síntoma clásico de la lista de relays que falta, y toca volver al Paso 3.
La misma prueba la puedes hacer a solas: entra en tu cuenta desde un segundo cliente, o escríbete a ti mismo si tu cliente lo permite.
Si te pica la curiosidad por lo que se envía en realidad, un visor de eventos de Nostr como njump.me te enseña los eventos en bruto. Un gift wrap que funciona tiene más o menos esta pinta:
// Ejemplo de evento NIP-17 (simplificado)
{
"kind": 1059, // Evento gift wrap
"pubkey": "<random_ephemeral_key>", // ¡No el remitente real!
"tags": [["p", "<recipient_pubkey>"]],
"content": "<encrypted_seal_content>"
}
Ahí hay dos cosas que leer. El pubkey es una clave de un solo uso que no vas a reconocer, y ese es justamente el remitente quedando oculto, que es lo que quieres. El tag p sí muestra la clave real del destinatario. Eso no es un fallo de tu configuración; el relay la necesita para saber adónde va el mensaje.
Mejores Prácticas de Seguridad
Maximiza tu privacidad al usar NIP-17:
1. Verifica Soporte de Cliente Antes de Comunicación Sensible
Confirma siempre que tu contacto usa un cliente con capacidad NIP-17 antes de compartir nada delicado. Un gift wrap enviado a alguien cuyo cliente solo habla NIP-04 no llega convertido en galimatías. No llega, sin más: su cliente nunca va a buscar eventos kind 1059, y ninguno de los dos recibe un error.
2. Volver a NIP-04 Es una Decisión de Verdad
Algunos clientes te dejan mantener viva una conversación antigua de NIP-04. A veces es lo práctico, pero conviene saber lo que cuesta: un mensaje NIP-04 deja las dos claves públicas, la tuya y la de la otra persona, en claro, en un evento que todos los relays guardan. Resérvalo para charla que no te importaría que quedara ligada públicamente a ti, y empieza cualquier cosa delicada como una conversación NIP-17 nueva.
3. Usa Claves Frescas para Conversaciones de Alta Seguridad
Para máxima seguridad:
- Crea un par de claves dedicado para comunicación sensible
- Comparte la clave pública a través de un canal seguro fuera de banda
- Rota las claves periódicamente
4. Sé Consciente de Metadatos en Otros Tipos de Evento
NIP-17 solo protege mensajes directos. Otros tipos de evento (notas, reacciones, seguidos) aún exponen datos de grafo social. Usa múltiples identidades para compartimentalización.
5. Elige Relays Enfocados en Privacidad
Incluso con NIP-17, tus patrones de tráfico son visibles para los relays. Usa:
- Tor o VPN para privacidad adicional a nivel de red
- Relays que no registren o retengan metadatos de mensajes
- Múltiples relays para distribuir tu tráfico
6. Entiende las Limitaciones
NIP-17 es una mejora real, y no es una capa de invisibilidad:
- Los relays siguen viendo tu dirección IP (usa una VPN o Tor)
- El análisis de tiempos sigue pudiendo revelar patrones de comunicación
- La clave del destinatario va en el sobre en texto plano, por diseño
- Un teléfono o un cliente comprometido lo filtra todo, haga lo que haga el protocolo
Solución de Problemas Comunes
”Mis mensajes nunca llegan”: revisa primero tu lista de relays para DMs
Este es el fallo más común de NIP-17, y casi nunca es un problema de encriptación.
Quien te escribe con NIP-17 no entrega el mensaje a tus relays habituales. Su cliente busca un evento kind 10050, la lista que publicas de los relays que aceptan tus mensajes directos, y envía el gift wrap solo ahí. Si nunca has publicado una, el cliente del remitente no tiene dónde entregarlo y el mensaje se descarta en silencio. No aparece nada en ninguna de las dos interfaces.
Solución: en un cliente compatible con NIP-17, busca el ajuste de relays para mensajes directos o privados y guarda al menos un relay. Eso publica tu lista kind 10050. Elige un relay que realmente acepte gift wraps: algunos rechazan de plano los eventos kind 1059. (Esto es el Paso 3 de la guía de migración; si lo saltaste, empieza por ahí.)
Mantén la lista corta. Cada relay que incluyas es un relay que podrá ver quién te está enviando mensajes.
”Hay un contacto concreto al que nunca le llega nada de lo que envío”
Si todos los demás te oyen y una persona no, el problema está en su extremo, no en tu encriptación. Casi seguro que su cliente no tiene soporte NIP-17, así que nunca se suscribe a los gift wraps y nunca ve tu mensaje. No aparece nada como galimatías, porque no aparece nada en absoluto.
Solución: pídele que se pase a alguno de los clientes del Paso 1. Si no puede, y la única forma de hablaros que queda son los mensajes NIP-04 antiguos, lee antes el aviso de Mejores Prácticas de Seguridad: NIP-04 entrega las dos claves públicas, en claro, a todos los relays.
”No puedo ver si alguien leyó mi mensaje NIP-17”
Causa: Los recibos de lectura aún no están estandarizados para NIP-17 Solución: Este es el comportamiento esperado. NIP-17 prioriza la privacidad sobre la confirmación de entrega.
”Los mensajes aparecen desordenados”
Causa: Desviación de reloj entre dispositivos Solución: Asegúrate de que el tiempo de tu dispositivo esté sincronizado (habilita sincronización automática de tiempo)
“El relay rechaza eventos NIP-17”
Causa: el relay corre software antiguo, o simplemente se niega a guardar eventos kind 1059 Solución: cámbialo por otro en tu lista de relays para DMs. Algunos clientes enseñan lo que soporta un relay en su pantalla de relays; si el tuyo no, probar con otro relay y ver si empiezan a llegar los mensajes es más rápido que investigar. Avisar al operador también vale el minuto que cuesta.
”Mi cliente me ofrece elegir el tipo de mensaje”
Comportamiento esperado: algunos clientes todavía leen y escriben los dos formatos mientras la red termina de mudarse, y te dejan elegir por conversación. Elige NIP-17 siempre que esté disponible.
El Futuro de la Mensajería Privada en Nostr
NIP-17 es el estándar actual para la mensajería privada uno a uno en Nostr, y es lo que deberías estar usando hoy. No es el final del camino, eso sí, y sus dos huecos reales son en los que se está trabajando: no hay secreto hacia adelante y no hay chat de grupo en condiciones.
La respuesta más seria hasta ahora es el protocolo Marmot, que monta MLS (el estándar de mensajería de grupo que hay detrás del chat grupal estilo Signal) encima de Nostr, conservando las claves de Nostr como identidad. El repositorio del propio Marmot da la especificación por adoptada, y White Noise es la app de chat construida sobre ella. Ese enfoque sí da secreto hacia adelante y sí resuelve los grupos, que es justo lo que NIP-17 deja fuera.
Una aclaración, porque los números invitan a confundirse. NIP-44 no compite con NIP-17 ni lo va a reemplazar. NIP-44 es la encriptación que NIP-17 ya usa en sus dos capas. Son piezas de la misma cosa.
Conclusión
NIP-17 es una mejora real sobre NIP-04, y es lo que deberías usar. Ten claro, eso sí, qué es lo que te llevas. Tus palabras van encriptadas y el relay no puede saber quién envió un mensaje. Sí puede ver a qué cuenta va dirigido, y quien vigile los dos extremos puede deducir bastante de los tiempos. Tómalo como correo privado, no como algo imposible de rastrear.
Pasarte es sobre todo cuestión de elegir bien el cliente y publicar una lista pequeña. El soporte es real pero desigual, y Damus, uno de los clientes más usados en iPhone, sigue sin tenerlo, así que comprobar el otro extremo de una conversación no es un paso opcional.
Tareas de acción:
- ✅ Usa un cliente que soporte NIP-17 (Amethyst, 0xchat, Coracle, Snort)
- ✅ Publica tu lista de relays para DMs (kind 10050). Sin ella no llega nada
- ✅ Manda un mensaje de prueba en los dos sentidos con un contacto, para saber que la entrega funciona
- ✅ Antes de nada delicado, comprueba en qué cliente está la otra persona
Recuerda que la privacidad se practica. NIP-17 te da las herramientas; usarlas bien sigue dependiendo de ti.
Pon a Prueba Tu Conocimiento de NIP-17
¿Listo para revisar tu comprensión de la mensajería segura?
Para qué sirve NIP-17
0/5 respondidas
Última actualización: 2 de septiembre de 2026
¿Tienes preguntas? Únete a la discusión en Nostr o abre un issue en este repositorio de documentación.