NIP-44: Payloads Cifrados
NIP-44 define un estándar de cifrado versionado para payloads de Nostr, reemplazando el esquema de cifrado defectuoso de NIP-04 con primitivas criptográficas modernas.
Cómo Funciona
NIP-44 versión 2 utiliza un proceso de cifrado de múltiples pasos:
- Acuerdo de Claves: ECDH (secp256k1) entre las claves públicas del remitente y destinatario produce un secreto compartido
- Derivación de Claves: HKDF-extract con SHA256 y salt
nip44-v2crea una clave de conversación - Claves Por Mensaje: HKDF-expand deriva la clave ChaCha, nonce y clave HMAC de un nonce aleatorio
- Relleno: El contenido se rellena para ocultar la longitud del mensaje
- Cifrado: ChaCha20 cifra el contenido rellenado
- Autenticación: HMAC-SHA256 proporciona integridad del mensaje
La salida es un payload base64 versionado que va dentro de un evento Nostr firmado normal. La especificación requiere que los clientes validen la firma del evento NIP-01 externo antes de descifrar el payload NIP-44 interno.
Elecciones Criptográficas
- ChaCha20 sobre AES: Más rápido, mejor resistencia a ataques multi-clave
- HMAC-SHA256 sobre Poly1305: Los MACs polinomiales son más fáciles de falsificar
- SHA256: Consistente con las primitivas existentes de Nostr
- Formato Versionado: Permite futuras actualizaciones de algoritmos
Propiedades de Seguridad
- Cifrado Autenticado: Los mensajes no pueden ser manipulados
- Ocultación de Longitud: El relleno oscurece el tamaño del mensaje
- Claves de Conversación: La misma clave para conversaciones continuas reduce la computación
- Auditado: La auditoría de seguridad de Cure53 no encontró vulnerabilidades explotables
Notas de Implementación
NIP-44 no es un reemplazo directo para payloads NIP-04. Define un formato de cifrado, no un tipo de evento de mensaje directo. Protocolos como NIP-17 y NIP-59 definen cómo se usan los payloads cifrados en flujos de mensajes reales.
La entrada de texto plano es texto UTF-8 con una longitud de 1 a 65535 bytes. Esa es una restricción real para implementadores: si tu aplicación necesita cifrar blobs binarios arbitrarios, necesitas una codificación adicional o un formato de contenedor diferente.
Limitaciones
NIP-44 no proporciona:
- Forward Secrecy: Las claves comprometidas exponen mensajes pasados
- Post-Compromise Security: Recuperación después del compromiso de claves
- Negabilidad: Los mensajes están demostrablemente firmados por claves específicas
- Ocultación de Metadatos: La arquitectura de relays limita la privacidad
Para necesidades de alta seguridad, NIP-104 (double ratchet) o protocolos basados en MLS como Marmot ofrecen garantías más fuertes.
Historia
NIP-44 revisión 3 se fusionó en diciembre de 2023 tras una auditoría de seguridad independiente de Cure53. Forma la base criptográfica para los DMs privados de NIP-17 y el gift wrapping de NIP-59.
Fuentes primarias:
Mencionado en:
- Newsletter #4: Análisis Profundo de NIP
- Newsletter #3: Diciembre 2023
- Newsletter #3: Diciembre 2024
- Newsletter #12: Marmot
Ver también: