Saltar al contenido

Análisis profundo de criptografía

Cómo Nudge protege tus mensajes (y por qué importa)

Nudge está construido para comunicación de alto riesgo: mensajería y llamadas cifradas de extremo a extremo, diseñadas para permanecer seguras incluso cuando los adversarios y las capacidades evolucionan. Esta página explica la criptografía a un nivel técnico detallado—incluyendo todas las primitivas criptográficas, paquetes Swift y cómo funcionan juntos.

Cifrado de extremo a extremo

El contenido del mensaje se cifra en tu dispositivo y solo se descifra por los destinatarios previstos. Los servidores pueden retransmitir datos, pero no pueden leerlos.

Secreto hacia adelante

Si una clave de dispositivo se compromete en el futuro, los mensajes pasados permanecen protegidos porque las claves de mensaje evolucionan continuamente.

Seguridad post-compromiso

Después de un compromiso, el protocolo puede "curarse" a medida que se introducen nuevos secretos—limitando cuánto tiempo un atacante puede seguir leyendo el tráfico.

Paquetes Swift y arquitectura

La pila criptográfica de Nudge está construida a partir de varios paquetes Swift de código abierto, cada uno con un papel específico en proporcionar mensajería post-cuántica segura.

📦

PostQuantumSolace

github.com/needletails/post-quantum-solace

El SDK de gestión de sesión de alto nivel que orquesta todas las operaciones criptográficas. PostQuantumSolace proporciona la API PQSSession para crear sesiones, enviar mensajes, gestionar dispositivos y manejar la rotación de claves. Combina la ejecución del protocolo Double Ratchet con el intercambio de claves post-cuántico para proporcionar mensajería cifrada de extremo a extremo con secreto hacia adelante y seguridad post-compromiso.

Dependencias: DoubleRatchetKit, NeedleTailLogger, NeedleTailAlgorithms

🧷

DoubleRatchetKit

github.com/needletails/double-ratchet-kit

Implementa el algoritmo Double Ratchet con integración Post-Quantum X3DH (PQXDH). Este paquete proporciona el protocolo central para secreto hacia adelante y seguridad post-compromiso. Maneja el intercambio de claves híbrido (Curve25519 + MLKEM1024), derivación de claves de mensaje, cifrado de encabezados y gestión de estado para sesiones de mensajería seguras. El actor DoubleRatchetStateManager gestiona el estado del ratchet y proporciona operaciones de cifrado/descifrado thread-safe.

Dependencias: NeedleTailCrypto, NeedleTailLogger, BinaryCodable

🔐

NeedleTailCrypto

github.com/needletails/needletail-crypto

Un wrapper criptográfico completo alrededor de Swift Crypto (swift-crypto) y CryptoKit. NeedleTailCrypto proporciona APIs de alto nivel para generación de claves (Curve25519, P256, P384, P521, MLKEM1024), cifrado/descifrado simétrico (AES-GCM), acuerdo de claves (ECDH), derivación de claves (HKDF) y almacenamiento seguro de claves vía Keychain y Secure Enclave en plataformas Apple. Este paquete abstrae las operaciones criptográficas de bajo nivel y proporciona una interfaz consistente y lista para producción.

Dependencias: swift-crypto (Apple), swift-collections

⚙️

NeedleTailAlgorithms

github.com/needletails/needletail-algorithms

Proporciona implementaciones de algoritmos utilizadas en toda la pila criptográfica, incluyendo estructuras de datos y utilidades para operaciones criptográficas. Este paquete contiene componentes algorítmicos compartidos utilizados por PostQuantumSolace y otros paquetes NeedleTails.

📝

NeedleTailLogger

github.com/needletails/needletail-logger

Un framework de registro utilizado en toda la pila criptográfica para depuración, monitoreo y pistas de auditoría. Proporciona registro estructurado con niveles de registro configurables y operaciones de registro thread-safe.

🔢

BinaryCodable

github.com/needletails/binary-codable

Proporciona codificación y decodificación binaria eficiente para estructuras de datos criptográficas. Utilizado para serializar claves, mensajes y estado del protocolo en un formato compacto e independiente de la plataforma.

🍎

swift-crypto

github.com/apple/swift-crypto

La biblioteca criptográfica multiplataforma de Apple que proporciona las primitivas criptográficas fundamentales. Este paquete implementa MLKEM1024 (Kyber), Curve25519, AES-GCM, SHA-256, SHA-512, HKDF, HMAC y otros algoritmos estándar. Es el motor criptográfico de bajo nivel que impulsa NeedleTailCrypto y toda la pila.

Primitivas criptográficas

Nudge utiliza un conjunto cuidadosamente seleccionado de primitivas criptográficas, cada una elegida por propiedades de seguridad específicas, características de rendimiento y resistencia tanto a ataques clásicos como cuánticos.

MLKEM-1024 (Kyber-1024)

Qué es: MLKEM-1024 es el mecanismo de encapsulación de claves post-cuántico (KEM) estandarizado por NIST basado en el algoritmo Kyber. Está diseñado para resistir ataques de computadoras clásicas y cuánticas.

Qué hace: MLKEM-1024 permite a dos partes establecer una clave secreta compartida sobre un canal no seguro. Una parte genera un par de claves pública/privada, y la otra parte usa la clave pública para encapsular un secreto compartido. El titular de la clave privada puede entonces desencapsular el secreto. Esto proporciona seguridad incluso contra adversarios con computadoras cuánticas.

Por qué importa: Los algoritmos de intercambio de claves clásicos (como RSA, ECC) serán rotos por computadoras cuánticas a gran escala. MLKEM-1024 proporciona protección "cosechar ahora, descifrar más tarde"—incluso si un atacante graba tráfico cifrado hoy, no puede descifrarlo en el futuro usando computadoras cuánticas.

Implementación: Proporcionado por swift-crypto (Apple), utilizado en el handshake PQXDH

Curve25519

Qué es: Curve25519 es una curva elíptica de alto rendimiento diseñada para el acuerdo de claves Elliptic Curve Diffie-Hellman (ECDH). Proporciona 128 bits de seguridad y está ampliamente desplegada en sistemas criptográficos modernos.

Qué hace: Permite a dos partes establecer un secreto compartido intercambiando claves públicas. Cada parte combina su clave privada con la clave pública de la otra para derivar el mismo secreto compartido. Curve25519 se usa tanto para acuerdo de claves (ECDH) como para firmas digitales (Ed25519) en Nudge.

Por qué importa: Aunque no es resistente a cuánticos, Curve25519 proporciona seguridad inmediata contra atacantes clásicos y es extremadamente rápido. En el diseño PQXDH híbrido de Nudge, Curve25519 proporciona seguridad hoy mientras que MLKEM-1024 proporciona seguridad contra amenazas cuánticas futuras. Ambos deben ser rotos para que un atacante comprometa la sesión.

Implementación: Proporcionado por swift-crypto (Apple), utilizado en el handshake PQXDH y la firma de claves de dispositivo

HKDF (Función de derivación de claves basada en HMAC)

Qué es: HKDF es una función de derivación de claves que deriva de forma segura múltiples claves de un solo secreto compartido o entrada de alta entropía. Usa HMAC (Código de autenticación de mensaje basado en hash) como primitiva subyacente.

Qué hace: Toma un secreto compartido (del intercambio de claves) y deriva claves específicas para cifrado, autenticación y otros usos. HKDF usa una sal (para separación de dominio) e información de contexto opcional para asegurar que se derivan claves diferentes para diferentes propósitos. Nudge usa HKDF con SHA-512 para derivar claves de sesión de secretos compartidos PQXDH.

Por qué importa: La derivación de claves previene la reutilización de claves en diferentes contextos, lo cual es crítico para la seguridad. Cada clave derivada es criptográficamente independiente, por lo que comprometer una clave no afecta a otras. HKDF también se usa en el protocolo Double Ratchet para derivar claves de mensaje de claves de cadena.

Implementación: HKDF<SHA512> y HKDF<SHA256> de swift-crypto, utilizado en todo el protocolo

AES-GCM (Advanced Encryption Standard - Modo Galois/Contador)

Qué es: AES-GCM es un algoritmo de cifrado autenticado que proporciona tanto confidencialidad (cifrado) como integridad (autenticación) en una sola operación. Usa el cifrado por bloques AES en modo Galois/Contador.

Qué hace: Cifra el contenido del mensaje y genera una etiqueta de autenticación que prueba que el mensaje no ha sido alterado. AES-GCM se usa para cifrar todas las cargas útiles de mensajes en Nudge, asegurando que los mensajes no puedan ser leídos o modificados por atacantes.

Por qué importa: El cifrado autenticado previene tanto la interceptación como la manipulación. Si un atacante modifica un mensaje cifrado, la etiqueta de autenticación será inválida y el descifrado fallará. Nudge usa AES-256-GCM, proporcionando 256 bits de seguridad.

Implementación: Proporcionado por swift-crypto (Apple), utilizado para todo el cifrado de mensajes vía NeedleTailCrypto

SHA-256 y SHA-512 (Algoritmos de hash seguros)

Qué es: SHA-256 y SHA-512 son funciones hash criptográficas que producen salidas de tamaño fijo (256 y 512 bits respectivamente) de entradas arbitrarias. Son funciones unidireccionales—fáciles de calcular pero computacionalmente imposibles de revertir.

Qué hace: Utilizados en toda la pila criptográfica para varios propósitos: SHA-256 se usa en HMAC para derivación de claves de cadena en el Double Ratchet, SHA-512 se usa en HKDF para derivación de claves de sesión de secretos compartidos PQXDH, y ambos se usan para verificación de integridad y derivación de claves.

Por qué importa: Las funciones hash son elementos fundamentales. Aseguran que las claves se derivan de forma determinista, que la integridad de datos puede ser verificada y que las operaciones criptográficas producen resultados consistentes. SHA-512 proporciona un margen de seguridad adicional para operaciones de derivación de claves.

Implementación: Proporcionado por swift-crypto (Apple), utilizado en HKDF, HMAC y derivación de claves

HMAC (Código de autenticación de mensaje basado en hash)

Qué es: HMAC es un código de autenticación de mensaje que usa una función hash criptográfica (como SHA-256) combinada con una clave secreta para producir una etiqueta que verifica tanto la autenticidad como la integridad de un mensaje.

Qué hace: En Nudge, HMAC-SHA256 se usa en el protocolo Double Ratchet para derivar claves de cadena y claves de mensaje. Cada paso del ratchet usa HMAC para avanzar la cadena de claves, asegurando que las claves evolucionen de forma determinista y segura.

Por qué importa: HMAC asegura que la derivación de claves es segura y determinista. Se usa extensivamente en el Double Ratchet para proporcionar secreto hacia adelante—cada mensaje usa una clave única derivada de la clave anterior, por lo que comprometer una clave no revela claves pasadas o futuras.

Implementación: HMAC<SHA256> de swift-crypto, utilizado en derivación de claves Double Ratchet

Cómo funciona todo junto

1) Handshake post-cuántico (PQXDH)

Cuando dos usuarios comienzan una conversación, Nudge realiza un intercambio de claves híbrido:

  1. Curve25519 ECDH: Ambas partes intercambian claves públicas Curve25519 y derivan un secreto compartido usando Diffie-Hellman de curva elíptica
  2. Encapsulación MLKEM-1024: Una parte usa la clave pública MLKEM-1024 de la otra para encapsular un secreto compartido
  3. Combinación de secretos: El secreto compartido Curve25519 y el secreto compartido MLKEM-1024 se concatenan
  4. Derivación HKDF: HKDF-SHA512 deriva la clave raíz y las claves de cadena iniciales de los secretos combinados

Este enfoque híbrido asegura seguridad contra atacantes clásicos (Curve25519) y cuánticos (MLKEM-1024). Ambos deben ser rotos para comprometer la sesión.

2) Evolución continua de claves (Double Ratchet)

Después del handshake, el protocolo Double Ratchet proporciona secreto hacia adelante:

  1. Ratchet simétrico: Cada mensaje avanza una clave de cadena usando HMAC-SHA256, derivando una clave de mensaje única
  2. Cifrado de mensaje: La clave de mensaje se usa con AES-256-GCM para cifrar la carga útil del mensaje
  3. Ratchet DH: Periódicamente, nuevos intercambios de claves Diffie-Hellman actualizan la clave raíz y crean nuevas claves de cadena
  4. Rotación de claves: Las claves antiguas se descartan, asegurando secreto hacia adelante—comprometer claves actuales no revela mensajes pasados

El Double Ratchet asegura que cada mensaje use una clave de cifrado única y que las claves evolucionen continuamente para proporcionar seguridad post-compromiso.

Qué está cifrado (y qué no)

La criptografía fuerte protege el contenido de los mensajes. Como todos los sistemas de mensajería, algunas metadatos a nivel de red (por ejemplo, enrutamiento IP) aún pueden existir. La pila de Nudge también admite técnicas de protección de metadatos como cifrado de encabezados para reducir señales de análisis de tráfico.

  • Cifrado: contenido de mensajes, secretos de sesión, metadatos sensibles (cuando se admite)
  • Exposición reducida: contadores/identificadores de claves vía cifrado de encabezados (cuando sea aplicable)
  • Todavía posible: observaciones a nivel de transporte (tiempo, puntos finales) dependiendo de las condiciones de red

Propiedades de seguridad

El diseño criptográfico de Nudge proporciona múltiples capas de seguridad:

  • Seguridad post-cuántica: MLKEM-1024 protege contra ataques cuánticos futuros
  • Secreto hacia adelante: Los mensajes pasados permanecen seguros incluso si las claves actuales se comprometen
  • Seguridad post-compromiso: Las sesiones pueden recuperarse de un compromiso de claves
  • Cifrado autenticado: AES-GCM previene tanto la interceptación como la manipulación
  • Protección de metadatos: El cifrado de encabezados reduce el análisis de tráfico

¿Quieres una comunidad Nudge privada?

NeedleTails ofrece servicios pagos de implementación de servidores para organizaciones que necesitan despliegue privado, controles de gobernanza y responsabilidad operativa.

Donar