ChaCha20-Poly1305 Cifrar y Descifrar
Herramienta gratuita de ChaCha20-Poly1305 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 ChaCha20-Poly1305
ChaCha20-Poly1305 es un cifrado de cifrado autenticado con datos asociados (AEAD) que combina el cifrado de flujo ChaCha20 con el código de autenticación de mensajes Poly1305. Diseñado por Daniel J. Bernstein, está estandarizado en RFC 8439 y adoptado en TLS 1.3, SSH y WireGuard como suite de cifrado principal. Proporciona tanto confidencialidad (cifrado) como integridad (autenticación) en una sola operación, previniendo tanto la interceptación como la manipulación del texto cifrado. ChaCha20-Poly1305 fue desarrollado como una alternativa amigable con el software a AES-GCM para plataformas sin aceleración de hardware AES.
Pasos de uso
Esta herramienta admite tanto cifrado como descifrado. La clave es obligatoria; el nonce se genera automáticamente si se deja vacío:
Formato de clave y nonce
ChaCha20-Poly1305 utiliza parámetros de tamaño fijo:
ChaCha20-Poly1305 vs AES-GCM
Ambos son cifrados AEAD en TLS 1.3. Aquí se indica cuándo elegir cada uno:
FAQ
Q: ¿Por qué la salida es más larga que la entrada?
A: La salida cifrada está codificada en base64 e incluye: 12 bytes de nonce + longitud del texto plano + 16 bytes de etiqueta de autenticación Poly1305. Por lo tanto, el overhead binario es de 28 bytes (12 nonce + 16 etiqueta), y la codificación base64 añade aproximadamente un 33% de longitud adicional.
Q: ¿Qué ocurre si manipulo el texto cifrado?
A: ChaCha20-Poly1305 se negará a descifrar el texto cifrado manipulado. La etiqueta Poly1305 es un código de autenticación de mensajes calculado sobre todo el texto cifrado. Cualquier modificación — incluso un solo bit — hace que la verificación de la etiqueta falle, y la función de descifrado devuelve un error en lugar de producir texto plano corrupto.
Q: ¿En qué se diferencia ChaCha20-Poly1305 del ChaCha20 simple?
A: ChaCha20 simple proporciona solo confidencialidad — cifra datos pero no detecta manipulaciones. ChaCha20-Poly1305 combina el cifrado ChaCha20 con una etiqueta de autenticación Poly1305, proporcionando tanto confidencialidad como integridad. Siempre prefiera ChaCha20-Poly1305 sobre ChaCha20 básico para cualquier uso práctico.
Q: ¿Puedo usar la misma clave para múltiples mensajes?
A: Sí, pero cada mensaje debe usar un nonce único. El par (clave, nonce) nunca debe reutilizarse. Con nonces de 12 bytes, la generación aleatoria de nonces da una probabilidad de colisión de cumpleaños de aproximadamente 1 en 296 — seguro para miles de millones de mensajes.
Q: ¿Es ChaCha20-Poly1305 resistente a los ordenadores cuánticos?
A: Como todos los cifrados simétricos, ChaCha20-Poly1305 se ve afectado por el algoritmo de Grover, reduciendo la seguridad de 256 bits a un equivalente de 128 bits. La seguridad post-cuántica de 128 bits se considera suficiente para la mayoría de las aplicaciones. Por lo tanto, ChaCha20-Poly1305 con su clave de 256 bits se considera resistente a los ataques cuánticos al nivel de seguridad de 128 bits, igual que AES-256-GCM.
Q: ¿Por qué falla el descifrado con 'clave, nonce o texto cifrado no válidos'?
A: Este error significa que falló la verificación de la etiqueta de autenticación. Causas comunes:
Clave incorrecta: La clave no coincide con la utilizada para el cifrado.
Texto cifrado corrupto: La cadena base64 fue modificada, truncada o pegada incorrectamente.
Descifrar datos no ChaCha20-Poly1305: La entrada fue cifrada con un algoritmo o herramienta diferente.
Use Cases
Recomendado: Cifrado simétrico de archivos y mensajes
ChaCha20-Poly1305 es una excelente opción de cifrado simétrico de propósito general. Se usa en WireGuard VPN para todo el tráfico de túnel y es una de las dos suites de cifrado principales en TLS 1.3. Siempre genere un nuevo nonce aleatorio por mensaje (esta herramienta lo antepone automáticamente).
- ✅ ChaCha20-Poly1305 (recomendado para móvil, multiplataforma, solo software)
- ✅ AES-256-GCM (recomendado cuando el hardware AES-NI está disponible)
- ✅ XChaCha20-Poly1305 (nonce extendido de 24 bytes, para mensajería de gran volumen)
- ❌ No use cifrados no autenticados (AES-CBC, ChaCha20 simple) para nuevos proyectos
Recomendado: Cifrado móvil e IoT
En plataformas sin aceleración de hardware AES, ChaCha20-Poly1305 supera a AES-GCM. Dado que ChaCha20 es amigable con el software, se ejecuta en tiempo constante en todas las plataformas sin riesgos de canales laterales de temporización. Google eligió ChaCha20-Poly1305 como el cifrado preferido para el tráfico TLS de Android.
- ✅ ChaCha20-Poly1305 (mejor rendimiento sin hardware AES)
- ✅ AES-256-GCM (aceptable en dispositivos con hardware AES)
- 💡 TLS 1.3 negocia automáticamente — ambas suites de cifrado son obligatorias
- ❌ No use AES-CBC en dispositivos con recursos limitados (sin autenticación, más lento)
Aceptable: Almacenamiento local cifrado
ChaCha20-Poly1305 puede proteger datos sensibles almacenados localmente. Derive la clave de una contraseña de usuario usando Argon2id en lugar de usar la contraseña directamente.
- ✅ ChaCha20-Poly1305 + derivación de clave Argon2id (cifrado basado en contraseña)
- ✅ AES-256-GCM + PBKDF2 (entornos compatibles con FIPS)
- 💡 Almacenar: parámetros Argon2id + salt + nonce ChaCha20 + texto cifrado
- ❌ No use modo ECB ni cifrados no autenticados para almacenamiento local
No recomendado: Cifrado de archivos grandes
El ChaCha20-Poly1305 estándar almacena en búfer todo el texto cifrado antes de autenticar, lo que es intensivo en memoria para archivos grandes. Para archivos de más de unos pocos megabytes, use una herramienta o biblioteca dedicada que gestione el cifrado fragmentado (p.ej., libsodium secretstream, age).
- 💡 Use AEAD fragmentado para archivos mayores de unos pocos MB
- ✅ libsodium secretstream (ChaCha20-Poly1305 en streaming)
- ✅ herramienta de cifrado age (orientada a archivos, usa ChaCha20-Poly1305 internamente)
- ✅ AES-256-GCM en modo streaming (para entornos con aceleración de hardware)
No recomendado: Intercambio de claves o autenticación
ChaCha20-Poly1305 es un cifrado simétrico — ambas partes ya deben compartir la misma clave secreta. No resuelve el problema de distribución de claves. Para el intercambio seguro de claves, use un protocolo asimétrico o un protocolo completo como TLS 1.3. Para autenticación sin secretos compartidos, use firmas digitales RSA o ECDSA.
- ❌ ChaCha20-Poly1305 no resuelve la distribución de claves
- ✅ TLS 1.3 (gestiona intercambio de claves + cifrado de datos ChaCha20-Poly1305)
- ✅ X25519 + ChaCha20-Poly1305 (patrón de protocolo Noise)
- ✅ RSA / ECDSA para firmas digitales y verificación de identidad
No recomendado: Hashing de contraseñas
Resumen de mejores prácticas
- Use ChaCha20-Poly1305 para cifrado simétrico donde la aceleración de hardware AES no está disponible — móvil, IoT y software multiplataforma.
- Use siempre un nonce aleatorio único para cada cifrado. La herramienta genera uno automáticamente si deja el campo nonce vacío.
- La salida del texto cifrado incorpora el nonce de 12 bytes y la etiqueta de autenticación de 16 bytes — solo necesita almacenar la única cadena base64 para el descifrado.
- Nunca reutilice un par (clave, nonce). La reutilización del nonce rompe completamente la seguridad de ChaCha20-Poly1305.
- Para cifrado basado en contraseña, derive la clave con Argon2id primero — nunca use una contraseña directamente como clave ChaCha20-Poly1305.