X25519 Cifrar y Descifrar
Herramienta gratuita de X25519 Cifrar y Descifrar en línea. Procesamiento 100% local — tus datos nunca salen de tu dispositivo.
El resultado se mostrará aquí...
Entrada → Cifrar
Usage Guide
Acerca de X25519 (Curve25519 ECDH)
X25519 es la función de intercambio de claves Diffie-Hellman basada en Curve25519, estandarizada en RFC 7748. Es el algoritmo de intercambio de claves de curva elíptica más ampliamente desplegado del mundo — utilizado como intercambio de claves predeterminado en TLS 1.3, WireGuard VPN, Signal Protocol y el Noise Protocol Framework. X25519 proporciona ~128 bits de seguridad con claves de 32 bytes, fue diseñado para resistir ataques de canal lateral y fue creado por Daniel J. Bernstein.
Pasos de uso
Esta herramienta calcula el secreto compartido Diffie-Hellman X25519 a partir de su clave privada y la clave pública de su interlocutor:
Formato de claves
Las claves X25519 en esta herramienta usan un formato hexadecimal compacto:
X25519 vs. EdDSA (Ed25519)
X25519 y Ed25519 están ambos basados en Curve25519 pero sirven propósitos criptográficos completamente diferentes:
FAQ
Q: ¿Cuál es la diferencia entre X25519 y ECDH?
A: X25519 es ECDH — específicamente, Diffie-Hellman de curva elíptica instanciado sobre Curve25519, definido en RFC 7748. Comparado con ECDH sobre curvas NIST (P-256, P-384), X25519 es más rápido, tiene una implementación más simple y segura (sin problemas de cofactor, sin requisitos de validación de puntos para entradas típicas), y fue diseñado desde cero para resistir ataques de implementación. Cuando la gente dice "ECDH con Curve25519" se refiere a X25519.
Q: ¿Pueden usarse las claves X25519 y Ed25519 de forma intercambiable?
A: No. Aunque X25519 y Ed25519 están basados en Curve25519, usan representaciones matemáticas diferentes (forma de Montgomery vs. forma de Edwards retorcida) y codificaciones de clave diferentes. Una clave privada X25519 es un escalar bruto de 32 bytes; una clave privada Ed25519 es una semilla de 32 bytes que se hashea (SHA-512) antes de su uso. Aunque existen fórmulas de conversión entre los dos tipos de clave, usarlas de forma intercambiable sin conversión explícita es criptográficamente incorrecto y puede filtrar información o producir resultados inválidos. Genere siempre pares de claves separados para cada propósito.
Q: ¿Cómo cifro datos con el secreto compartido?
A: El secreto compartido X25519 de 32 bytes debe pasarse a través de una Función de Derivación de Claves (KDF) antes de usarse como clave de cifrado. En la práctica, HKDF-SHA256 es la elección más común (usada en TLS 1.3, Signal). Pase el secreto compartido bruto como material de clave de entrada, incluya un salt e info específicos del protocolo, y derive 32 bytes para AES-256-GCM o ChaCha20-Poly1305. Para casos de uso simples puede usar el secreto compartido directamente como clave AES-256 de 32 bytes, pero HKDF es muy recomendable en producción.
Q: ¿X25519 proporciona secreto hacia adelante (forward secrecy)?
A: Sí — cuando se usa con pares de claves efímeros. El secreto hacia adelante (también llamado Perfect Forward Secrecy, PFS) significa que comprometer una clave de largo plazo no expone las claves de sesión pasadas. En TLS 1.3, ambas partes generan pares de claves X25519 frescos para cada handshake (DH efímero). Incluso si un atacante obtiene posteriormente la clave privada de largo plazo de un servidor, no puede descifrar el tráfico grabado anteriormente porque las claves X25519 efímeras se descartaron tras el handshake. Las claves X25519 estáticas (reutilizadas) no proporcionan secreto hacia adelante.
Q: ¿Es X25519 resistente a ataques cuánticos?
A: No — no frente a una computadora cuántica suficientemente potente. Una computadora cuántica ejecutando el algoritmo de Shor podría romper X25519 resolviendo el problema del logaritmo discreto de curva elíptica en tiempo polinomial. Esto aplica igualmente a todos los esquemas Diffie-Hellman de curva elíptica y campo finito. Sin embargo, la computadora cuántica requerida (miles de qubits lógicos con corrección de errores) aún no existe. Para intercambio de claves post-cuántico, NIST ha estandarizado ML-KEM (antes CRYSTALS-Kyber). TLS 1.3 en Chrome y Firefox ya despliega intercambio de claves híbrido X25519+ML-KEM.
Use Cases
Recomendado: Intercambio de claves TLS 1.3
X25519 es el algoritmo de intercambio de claves preferido en TLS 1.3 (RFC 8446) y está soportado por todos los principales navegadores y servidores. En TLS 1.3, el cliente y el servidor generan pares de claves X25519 efímeros, intercambian claves públicas en ClientHello/ServerHello y derivan las claves de handshake usando HKDF. Esto proporciona secreto hacia adelante y se completa en un único viaje de ida y vuelta. X25519 reemplazó el intercambio de claves RSA y variantes ECDH anteriores en la suite de cifrado obligatoria de TLS 1.3.
- ✅ Habilitar TLS 1.3 en todos los servidores — X25519 se incluye automáticamente
- ✅ X25519 proporciona secreto hacia adelante en cada handshake TLS 1.3
- ✅ Soportado nativamente en OpenSSL, BoringSSL, NSS y todas las principales bibliotecas TLS
- ❌ No usar intercambio de claves RSA con TLS 1.2 — carece de secreto hacia adelante
Recomendado: WireGuard VPN
WireGuard usa X25519 como único mecanismo de intercambio de claves. Cada par de WireGuard tiene un par de claves X25519 estático (para autenticación) y genera pares de claves X25519 efímeros para cada handshake (para secreto hacia adelante). El protocolo también usa X25519 para mezcla de claves precompartidas y emplea el Noise Protocol Framework. El diseño minimalista de WireGuard — un algoritmo de intercambio de claves, un cifrado simétrico (ChaCha20-Poly1305), un hash (BLAKE2s) — lo hace auditable y rápido.
- ✅ X25519 es el único intercambio de claves en WireGuard — nada que configurar
- ✅ Generar par de claves estático: wg genkey | tee private.key | wg pubkey > public.key
- ✅ WireGuard proporciona secreto hacia adelante automático mediante pares de claves efímeros
- 💡 WireGuard combina: X25519 (intercambio de claves) + ChaCha20-Poly1305 (cifrado) + BLAKE2s (hash)
Recomendado: Mensajería cifrada de extremo a extremo (Signal, WhatsApp)
El Signal Protocol (usado por Signal, WhatsApp y muchos otros) usa X25519 extensivamente en su algoritmo Double Ratchet y acuerdo de claves X3DH (Extended Triple Diffie-Hellman). X3DH usa múltiples operaciones DH X25519 para establecer claves compartidas iniciales entre partes que pueden estar desconectadas. El Double Ratchet deriva continuamente nuevas claves del trinquete X25519, proporcionando tanto secreto hacia adelante como recuperación tras intrusión. Esto se considera el estándar de oro para mensajería segura.
- ✅ X25519 es la base del acuerdo de claves del Signal Protocol
- ✅ X3DH permite establecimiento de claves asíncrono (una parte puede estar desconectada)
- ✅ Double Ratchet + X25519 proporciona secreto hacia adelante y seguridad post-compromiso
- 💡 WhatsApp, Wire, Facebook Messenger chats secretos usan Signal Protocol
Recomendado: Cifrado híbrido (encapsulación de claves)
El cifrado híbrido usa X25519 para establecer un secreto compartido y luego cifra los datos reales con un cifrado simétrico. Este patrón (llamado ECIES o HPKE — Hybrid Public Key Encryption, RFC 9180) permite a cualquiera con la clave pública X25519 del destinatario enviar datos cifrados sin secretos precompartidos. El remitente genera un par de claves X25519 efímero, calcula un secreto compartido con la clave pública del destinatario, deriva una clave simétrica vía HKDF, cifra datos con ChaCha20-Poly1305 y envía la clave pública efímera junto con el texto cifrado.
- ✅ Usar HPKE (RFC 9180) para cifrado híbrido estandarizado con X25519
- ✅ Par de claves efímero del remitente garantiza secreto hacia adelante para cada mensaje
- ✅ Combinar: X25519 (intercambio de claves) + HKDF (derivación de clave) + AES-256-GCM (cifrado)
- 💡 Este patrón es usado por age (herramienta de cifrado de archivos) y la biblioteca Tink
No recomendado: Usar X25519 solo para confidencialidad
X25519 solo produce un secreto compartido — no cifra ningún dato. El secreto compartido en sí no es texto cifrado; cualquier parte que realice el mismo cálculo DH (con las claves correctas) lo obtiene. Sin un cifrado simétrico aplicado encima, sus datos permanecen en texto plano. Esto es un uso fundamental incorrecto del algoritmo. Combine siempre X25519 con AES-256-GCM o ChaCha20-Poly1305 para proteger datos realmente.
- ❌ No tratar el secreto compartido X25519 como texto cifrado — es una clave, no datos cifrados
- ❌ No omitir la derivación de clave — procesar el secreto con HKDF antes de usarlo como clave de cifrado
- ✅ X25519 + HKDF + AES-256-GCM es el patrón correcto de cifrado híbrido
- 💡 X25519 resuelve el problema de distribución de claves; el cifrado simétrico resuelve la confidencialidad de datos
Resumen de mejores prácticas
- X25519 es un algoritmo de intercambio de claves — produce un secreto compartido, no texto cifrado. Siempre combínelo con AES-256-GCM o ChaCha20-Poly1305 para cifrar datos reales.
- Procese el secreto compartido X25519 a través de HKDF-SHA256 antes de usarlo como clave de cifrado simétrico en sistemas de producción.
- Use pares de claves X25519 efímeros (genere un par fresco por sesión) para lograr secreto hacia adelante.
- No use claves X25519 como claves de firma Ed25519 ni viceversa — aunque ambas son de 32 bytes, las representaciones internas difieren.
- X25519 es el estándar para TLS 1.3, WireGuard y Signal Protocol — prefiéralo sobre ECDH antiguo con curvas NIST para nuevas implementaciones.