CoderTools

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.

ChaCha20: Cifrado de flujo de 256 bits con nonce de 96 bits. Rápido y seguro, sin autenticación.

Valor inicial del contador (predeterminado: 0)

Opciones de formato
🔒 100% Procesamiento localSus archivos se procesan completamente en su navegador. No se envían datos a ningún servidor.

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

Preguntas frecuentes

¿Cuál es la diferencia entre ChaCha20 y AES?

Ambos son cifrados simétricos seguros. ChaCha20 es 3× más rápido en software sin aceleración de hardware y resistente a ataques de temporización. AES es más rápido con soporte de hardware (AES-NI). ChaCha20 es preferido para dispositivos móviles y embebidos.

¿Por qué usar XChaCha20 en lugar de ChaCha20?

El nonce de 192 bits de XChaCha20 permite generación segura de nonce aleatorio. Con un nonce de 96 bits, necesitarías gestión cuidadosa para evitar colisiones. XChaCha20 se recomienda cuando no puedes garantizar nonces secuenciales únicos.

¿Para qué es el parámetro contador?

El contador permite cifrar mensajes de más de 64 bytes incrementando para cada bloque. Para modos AEAD, comienza en 1 (el bloque 0 genera la clave Poly1305). Normalmente, puedes dejarlo en el valor predeterminado (0).

¿Puedo cifrar archivos con esta herramienta?

Esta herramienta funciona completamente en tu navegador y es adecuada para cifrar texto y datos pequeños. Para archivos grandes, considera usar herramientas nativas como openssl o aplicaciones basadas en libsodium.

¿Es esta herramienta segura para uso en producción?

Esta herramienta es para propósitos educativos y de desarrollo. Aunque la implementación sigue las especificaciones estándar, los sistemas de producción deberían usar bibliotecas criptográficas bien auditadas como libsodium, OpenSSL o APIs de la plataforma.