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 - Capa de encriptación interna protegiendo el contenido del mensaje
- 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ística | NIP-04 | NIP-17 |
|---|---|---|
| Encriptación | Una capa AES-256-CBC | Doble capa (seal + gift wrap) |
| Metadatos Remitente | Visible para relays | Oculto de todos excepto destinatario |
| Metadatos Destinatario | Visible para relays | Oculto de todos excepto destinatario |
| Contenido Mensaje | Encriptado | Encriptado |
| Protección Replay | Ninguna | Timestamps integrados |
| Secreto Hacia Adelante | No | Mejor (claves por mensaje) |
| Estado Seguridad | Deprecado | Recomendado |
| Interoperabilidad | Ampliamente soportado | Soporte 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
- Privacidad de Metadatos: Nadie excepto el destinatario puede determinar quién envió el mensaje o a quién fue enviado
- No Vinculable: Múltiples mensajes entre las mismas partes aparecen como eventos no relacionados para observadores
- 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:
| Cliente | Soporte NIP-17 | Estado |
|---|---|---|
| Damus | Sí | Por defecto para nuevos DMs |
| Amethyst | Sí | Por defecto para nuevos DMs |
| Primal | Sí | Soportado |
| Coracle | Sí | Soportado |
| Iris | Sí | Soportado |
| Snort | Sí | Soportado |
| Nos | Sí | Soportado |
Paso 2: Habilita NIP-17 en Tu Cliente
Damus (iOS/macOS)
- Abre Ajustes → Privacidad y Seguridad
- Desplázate a “Encriptación de Mensajes”
- Activa “Usar NIP-17 para nuevos mensajes” a ON
- 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)
- Ve a Ajustes → Mensajes
- Habilita “Usar NIP-17 para DMs”
- Reinicia la app para efecto completo
Primal (iOS/Android/Web)
- Navega a Ajustes → Privacidad
- Bajo “Mensajes Directos,” selecciona “NIP-17 (Recomendado)”
- 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:
- Envía un mensaje de prueba a ti mismo o a un amigo
- Revisa el tipo de evento (debería ser
1059para gift wraps) - Busca el
kind: 1059en los detalles del mensaje - El tag
pdeberí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:
- Actualiza a la última versión de Damus desde App Store
- NIP-17 se habilita automáticamente para nuevas conversaciones
- 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:
- Ajustes → Avanzado → Ajustes de Protocolo
- Habilita “NIP-17 gift wrap para DMs”
- 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:
- Ajustes → Seguridad y Privacidad
- Bajo “Protocolo de Mensajería” selecciona “NIP-17 (Privado)”
- 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:
- Revisa los NIPs soportados del relay
- Agrega relays modernos que soporten NIP-17
- 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:
- ✅ Actualiza tu cliente Nostr a la última versión
- ✅ Habilita NIP-17 en los ajustes
- ✅ Verifica con contactos que soportan NIP-17
- ✅ 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
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.