Skip to content

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

advanced

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:

  1. Seal - Capa de encriptación interna protegiendo el contenido del mensaje
  2. Gift Wrap - Capa de encriptación externa que oculta los metadatos del remitente y destinatario

Este enfoque de doble capa asegura que:

  • El contenido del mensaje permanece privado
  • Incluso los operadores de relays no pueden ver quién habla con quién
  • Los patrones de mensaje y metadatos están protegidos de observadores de la red

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ísticaNIP-04NIP-17
EncriptaciónUna capa AES-256-CBCDoble capa (seal + gift wrap)
Metadatos RemitenteVisible para relaysOculto de todos excepto destinatario
Metadatos DestinatarioVisible para relaysOculto de todos excepto destinatario
Contenido MensajeEncriptadoEncriptado
Protección ReplayNingunaTimestamps integrados
Secreto Hacia AdelanteNoMejor (claves por mensaje)
Estado SeguridadDeprecadoRecomendado
InteroperabilidadAmpliamente soportadoSoporte creciente

El Problema Central con NIP-04

Los mensajes NIP-04 exponen quién habla con quién en la blockchain. 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 soluciona esto envolviendo toda la estructura del mensaje en una capa de encriptación adicional, haciendo imposible ver el remitente o destinatario sin la clave de desencriptación.

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 exterior que oculta todos los metadatos. Está encriptado a una “gift wrap key” especial derivada de la clave pública del destinatario. Esta capa contiene:

  • Una clave pública aleatoria (no vinculada al remitente real)
  • La clave pública del destinatario
  • Un timestamp
  • El mensaje interno sealed

La Capa Seal (Interior)

Dentro del gift wrap se encuentra el seal, que contiene el mensaje actual. Esta capa:

  • Está encriptada usando un par de claves efímeras fresco
  • Contiene la clave pública real del remitente
  • Incluye el contenido del mensaje
  • Tiene su propio timestamp para protección replay
Representación Visual:
┌─────────────────────────────────────┐
│ Gift Wrap (Capa Exterior)           │
│ ┌─────────────────────────────────┐ │
│ │ Seal (Capa Interior)            │ │
│ │ ┌─────────────────────────────┐ │ │
│ │ │ Contenido Real del Mensaje  │ │ │
│ │ │ Remitente: real_pubkey      │ │ │
│ │ │ Timestamp: 1234567890         │ │ │
│ │ └─────────────────────────────┘ │ │
│ │ Encriptado con clave efímera      │ │
│ └─────────────────────────────────┘ │
│ Pubkey aleatorio, hint destinatario   │
└─────────────────────────────────────┘

Beneficios Clave

  1. Privacidad de Metadatos: Nadie excepto el destinatario puede determinar quién envió el mensaje o a quién fue enviado
  2. No Vinculable: Múltiples mensajes entre las mismas partes aparecen como eventos no relacionados para observadores
  3. Mejor Secreto Hacia Adelante: Cada mensaje usa claves efímeras únicas

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

Antes de migrar, verifica que tu cliente soporte NIP-17:

ClienteSoporte NIP-17Estado
DamusPor defecto para nuevos DMs
AmethystPor defecto para nuevos DMs
PrimalSoportado
CoracleSoportado
IrisSoportado
SnortSoportado
NosSoportado

Paso 2: Habilita NIP-17 en Tu Cliente

Damus (iOS/macOS)

  1. Abre Ajustes → Privacidad y Seguridad
  2. Desplázate a “Encriptación de Mensajes”
  3. Activa “Usar NIP-17 para nuevos mensajes” a ON
  4. Tus nuevos DMs usarán NIP-17 automáticamente

Nota: Los mensajes NIP-04 más antiguos permanecen legibles pero los nuevos mensajes usan NIP-17.

Amethyst (Android)

  1. Ve a Ajustes → Mensajes
  2. Habilita “Usar NIP-17 para DMs”
  3. Reinicia la app para efecto completo

Primal (iOS/Android/Web)

  1. Navega a Ajustes → Privacidad
  2. Bajo “Mensajes Directos,” selecciona “NIP-17 (Recomendado)”
  3. Los cambios aplican inmediatamente a nuevas conversaciones

Paso 3: Comunícate con Tus Contactos

NIP-17 solo funciona si ambas partes tienen soporte NIP-17. Envía una nota a contactos frecuentes:

nostr:note1... # Plantilla de mensaje de migración

"¡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 4: Verifica el Éxito de la Migración

Para confirmar que NIP-17 está funcionando:

  1. Envía un mensaje de prueba a ti mismo o a un amigo
  2. Revisa el tipo de evento (debería ser 1059 para gift wraps)
  3. Busca el kind: 1059 en los detalles del mensaje
  4. El tag p debería apuntar a una clave efímera aleatoria, no a la clave real de tu amigo
// 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>"
}

Guías de Configuración Específicas por Cliente

Damus

Damus hizo NIP-17 el predeterminado para nuevos mensajes directos en versiones recientes. Si estás en una versión más antigua:

  1. Actualiza a la última versión de Damus desde App Store
  2. NIP-17 se habilita automáticamente para nuevas conversaciones
  3. Revisa los detalles del mensaje (mantén presionado) para ver el badge “NIP-17”

Pro tip: Damus muestra un icono de candado con el texto “NIP-17” en mensajes seguros.

Amethyst

Amethyst soporta NIP-17 pero puede requerir habilitación explícita:

  1. Ajustes → Avanzado → Ajustes de Protocolo
  2. Habilita “NIP-17 gift wrap para DMs”
  3. El cliente negociará automáticamente NIP-17 con contactos soportados

Nota: Amethyst recae elegantemente a NIP-04 si el destinatario no soporta NIP-17.

Primal

Primal tiene excelente soporte NIP-17:

  1. Ajustes → Seguridad y Privacidad
  2. Bajo “Protocolo de Mensajería” selecciona “NIP-17 (Privado)”
  3. Opcional: Habilita “Actualizar automáticamente conversaciones NIP-04” para convertir chats existentes

Mejores Prácticas de Seguridad

Maximiza tu privacidad al usar NIP-17:

1. Verifica Soporte de Cliente Antes de Comunicación Sensible

Siempre confirma que tu contacto usa un cliente con capacidad NIP-17 antes de compartir información sensible. Enviar NIP-17 a un cliente solo NIP-04 resultará en mensajes ilegibles.

2. No Mezcles Protocolos en la Misma Conversación

Evita confusión usando un protocolo por conversación. Si empiezas con NIP-04, termina con NIP-04, o indica claramente cuándo cambias.

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 proporciona excelente privacidad pero no es perfecto:

  • Los relays aún pueden ver direcciones IP (usa VPN/Tor)
  • El análisis de timing puede revelar patrones de comunicación
  • Clientes comprometidos pueden filtrar información
  • El destinatario siempre ve la identidad del remitente

Solución de Problemas Comunes

”Los mensajes aparecen como ilegibles o sin sentido”

Causa: El destinatario no soporta NIP-17 Solución: Pide al destinatario que actualice su cliente, o cambia temporalmente a NIP-04

”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: Software de relay antiguo Solución:

  1. Revisa los NIPs soportados del relay
  2. Agrega relays modernos que soporten NIP-17
  3. Reporta al operador del relay

”El cliente muestra ambas opciones NIP-04 y NIP-17”

Comportamiento esperado: Muchos clientes soportan ambos durante el período de transición. Siempre elige NIP-17 cuando esté disponible.

El Futuro de la Mensajería Privada en Nostr

NIP-17 es el estándar de oro actual para mensajería privada en Nostr, pero el desarrollo continúa:

  • NIP-44: Un esquema de encriptación mejorado que puede suplantar a NIP-17
  • Encriptación de grupo: Se están desarrollando protocolos de mensajería de grupo privada
  • Integración de pagos: Mensajes privados con pagos Lightning

Mantente actualizado siguiendo:

  • nostr:npub1… # Desarrollo del protocolo Nostr
  • nostr:npub1… # Mejores prácticas de seguridad

Conclusión

NIP-17 representa un gran paso adelante para la privacidad en Nostr. Al abordar los problemas de filtración de metadatos de NIP-04, permite mensajería directa verdaderamente privada que protege tanto el contenido como los patrones de comunicación.

El proceso de migración es sencillo: actualiza tu cliente, verifica que tus contactos soporten NIP-17, y disfruta de privacidad mejorada. Con soporte de clientes generalizado ya disponible, no hay razón para seguir usando el protocolo NIP-04 deprecado.

Tareas de acción:

  1. ✅ Actualiza tu cliente Nostr a la última versión
  2. ✅ Habilita NIP-17 en los ajustes
  3. ✅ Verifica con contactos que soportan NIP-17
  4. ✅ Empieza a usar NIP-17 para todas las conversaciones privadas nuevas

Recuerda: La privacidad es una práctica, no un producto. NIP-17 te da las herramientas—úsalas sabiamente.


Pon a Prueba Tu Conocimiento de NIP-17

¿Listo para revisar tu comprensión de la mensajería segura?

NIP-17 Private Messages Quiz

NIP-17 Purpose

Question 1 of 5

0/5 answered
What is NIP-17?
P0 Critical

Ultima actualización: 11 de febrero de 2025

¿Tienes preguntas? Únete a la discusión en Nostr o abre un issue en este repositorio de documentación.