X25519 Cifrar y Descifrar

Herramienta gratuita de X25519 Cifrar y Descifrar en línea. Procesamiento 100% local — tus datos nunca salen de tu dispositivo.

National Standards
Other
Salida

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.

Intercambio de claves — no cifrado: X25519 realiza únicamente acuerdo de claves. Produce un secreto compartido que ambas partes pueden calcular de forma independiente — no cifra ni descifra datos por sí mismo. Debe usar el secreto compartido resultante como clave para un cifrado simétrico como ChaCha20-Poly1305 o AES-256-GCM para lograr confidencialidad.

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:

1. Generar par de clavesHaga clic en 'Generar par de claves' para crear un nuevo par de claves X25519. La clave privada (64 caracteres hexadecimales) se rellena en el campo 'Mi clave privada'. La clave pública correspondiente se almacena internamente — cópiela y compártala con su interlocutor por un canal externo.
2. Intercambiar claves públicasEnvíe su clave pública (64 caracteres hexadecimales) a su interlocutor. Reciba la suya y péguela en el campo 'Clave pública del interlocutor (Hex)'. Este intercambio puede realizarse por cualquier canal — la clave pública no es secreta.
3. Calcular secreto compartidoHaga clic en 'Cifrar'. La herramienta realiza DH(su_clave_privada, clave_pública_interlocutor) y muestra un secreto compartido en hexadecimal de 64 caracteres (32 bytes). Su interlocutor realiza la misma operación en sentido inverso y obtiene el secreto compartido idéntico.
4. Usar el secreto compartido para cifrarIntroduzca el secreto compartido (o una clave derivada de KDF) en un cifrado simétrico como AES-256-GCM o ChaCha20-Poly1305. En sistemas de producción, el secreto compartido no debe usarse directamente como clave de cifrado sin derivación de clave (p. ej., HKDF).
Solo en el navegador: Todas las operaciones de generación de claves y cálculo DH se ejecutan completamente en su navegador usando la WebCrypto API. Ninguna clave se transmite a un servidor.

Formato de claves

Las claves X25519 en esta herramienta usan un formato hexadecimal compacto:

Clave privada64 caracteres hexadecimales = 32 bytes. Un valor escalar aleatorio. Manténgala en secreto. Ejemplo: a3f1e2d4c5b6a7f8e9d0c1b2a3f4e5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2
Clave pública64 caracteres hexadecimales = 32 bytes. El resultado de multiplicar el punto base en Curve25519 por el escalar privado. Puede compartirse públicamente. Ejemplo: 5b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8
Secreto compartido64 caracteres hexadecimales = 32 bytes. Calculado como DH(mi_privada, pública_interlocutor) = DH(privada_interlocutor, mi_pública). Esta igualdad es el fundamento matemático del intercambio de claves Diffie-Hellman.
Claves no intercambiablesLas claves X25519 y Ed25519 parecen idénticas (64 caracteres hex, 32 bytes) pero usan representaciones internas diferentes y NO son intercambiables. Nunca use una clave privada Ed25519 como clave privada X25519 ni viceversa.

X25519 vs. EdDSA (Ed25519)

X25519 y Ed25519 están ambos basados en Curve25519 pero sirven propósitos criptográficos completamente diferentes:

PropósitoX25519: intercambio de claves (Diffie-Hellman). Ed25519: firmas digitales (autenticación). No pueden sustituirse mutuamente.
Forma matemáticaX25519 usa la forma de Montgomery de Curve25519 para multiplicación escalar eficiente. Ed25519 usa la forma de Edwards retorcida. Aunque birracionalmente equivalentes, las codificaciones de clave difieren.
Claves no intercambiablesLas claves NO son intercambiables a pesar de la misma longitud en bytes. Usar un par de claves Ed25519 para X25519 DH es un uso criptográfico indebido que puede comprometer la seguridad.
Uso combinadoEn la práctica, protocolos como Signal usan ambos juntos: X25519 para acuerdo de claves (establecer clave de sesión) y Ed25519 para autenticación (firmar el intercambio de claves para prevenir ataques MITM).
Herramientas relacionadas: Para firmas digitales, use la herramienta EdDSA (Ed25519). Para cifrado simétrico con el secreto compartido, use ChaCha20-Poly1305 o AES-256-GCM.

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: — 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.

Recommended Configuration:
  • ✅ 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.

Recommended Configuration:
  • ✅ 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.

Recommended Configuration:
  • ✅ 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.

Recommended Configuration:
  • ✅ 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.

Recommended Configuration:
  • ❌ 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.

Discusión y Comentarios

0 comentarios
Yo