Cifrado ChaCha20
Cifrado de flujo moderno con autenticación opcional
Seguridad del lado del cliente
Todas las operaciones de cifrado/descifrado se realizan localmente en su navegador. No se envían datos a ningún servidor.
Valor inicial del contador (predeterminado: 0)
Acerca de ChaCha20
ChaCha20 es un cifrado de flujo moderno diseñado por Daniel J. Bernstein en 2008, derivado del cifrado Salsa20. Usa una clave de 256 bits y opera en bloques de 512 bits, generando un flujo de claves que se XORea con el texto plano para cifrar. Este cifrado es conocido por su velocidad, seguridad y resistencia a ataques de tiempo.
Este cifrado es conocido por su velocidad, seguridad y resistencia a ataques de tiempo, lo que lo convierte en una excelente opción para implementaciones de software.
Comparación de algoritmos
| Algoritmo | Autenticación | Longitud de clave | Tamaño del nonce | Caso de uso |
|---|---|---|---|---|
| ChaCha20 | Cifrado de flujo | 256 bits | 96 bits (12 bytes) | Cifrado sin procesar, protocolos personalizados |
| ChaCha20-Poly1305 | AEAD | 256 bits | 96 bits (12 bytes) | TLS 1.3, QUIC, mensajería segura |
| XChaCha20 | Cifrado de flujo | 256 bits | 192 bits (24 bytes) | Escenarios de nonce aleatorio |
| XChaCha20-Poly1305 | AEAD | 256 bits | 192 bits (24 bytes) | La mayoría de aplicaciones (recomendado) |
Cómo funciona ChaCha20
ChaCha20 opera en 20 rondas, aplicando funciones de cuarto de ronda a una matriz 4×4 de palabras de 32 bits. El estado inicial consiste en:
Cada ronda permuta el estado usando sumas, XORs y rotaciones, proporcionando excelente difusión mientras permanece rápido en software.
AEAD: Cifrado autenticado
ChaCha20-Poly1305 es una construcción AEAD estandarizada en RFC 8439. Combina ChaCha20 para cifrado con el MAC Poly1305 para autenticación. Esto asegura confidencialidad e integridad - cualquier manipulación del texto cifrado o AAD será detectada durante el descifrado. La etiqueta de autenticación de 128 bits se añade al texto cifrado.
Esto garantiza tanto la confidencialidad como la integridad: cualquier manipulación del texto cifrado o AAD se detectará durante el descifrado. La etiqueta de autenticación de 128 bits se calcula sobre el texto cifrado y AAD.
Características principales
- Alto rendimiento: Optimizado para implementaciones de software, 3× más rápido que AES sin aceleración de hardware
- Tiempo constante: Resistente a ataques de temporización de caché, a diferencia de implementaciones AES basadas en tablas
- Diseño simple: Solo usa operaciones ARX (suma, rotación, XOR), fácil de implementar correctamente
- Amplia adopción: Usado en TLS 1.3, OpenSSH, WireGuard, Signal Protocol y más
- Nonce extendido: La variante XChaCha20 permite generación segura de nonce aleatorio sin riesgo de colisión
Consideraciones de seguridad
- Nunca reutilizar un nonce con la misma clave - esto compromete completamente la seguridad
- Usar variantes AEAD (Poly1305) para la mayoría de aplicaciones para detectar manipulaciones
- Para nonces aleatorios, usar XChaCha20 (192 bits) para minimizar probabilidad de colisión
- Usar un KDF apropiado (HKDF, Argon2) para derivar claves de contraseñas
Uso en el mundo real
- TLS 1.3: Suite de cifrado predeterminada (TLS_CHACHA20_POLY1305_SHA256)
- WireGuard VPN: Protocolo de cifrado principal
- Signal Protocol: Mensajería cifrada de extremo a extremo
- Cloudflare: Preferido sobre AES-GCM para clientes móviles
- Kernel de Linux: CSPRNG (/dev/urandom)
Referencias
Herramientas Relacionadas
Cifrado/Descifrado AES
Cifrar y descifrar texto de forma segura usando el algoritmo AES
Familia RC (RC4/RC5/RC6)
Cifrados de flujo y bloque de la familia RC incluyendo RC4, RC4-Drop, RC5 y RC6 (finalista AES)
Cifrado/Descifrado Blowfish
Cifrado de bloques simétrico rápido diseñado por Bruce Schneier, con longitud de clave variable (32-448 bits)