ChaCha20
¿Qué es ChaCha20?
ChaCha20Cifrado de flujo moderno diseñado por Daniel J. Bernstein, con clave de 256 bits y nonce de 96 bits; ampliamente desplegado junto a Poly1305 en el AEAD ChaCha20-Poly1305.
ChaCha20 es un cifrado de flujo de 20 rondas diseñado por Daniel J. Bernstein en 2008 como una evolución de su diseño Salsa20. Genera un flujo de clave a partir de una clave de 256 bits, un nonce de 96 bits y un contador de bloque de 32 bits usando únicamente operaciones de suma, rotación y XOR (ARX) sobre palabras de 32 bits: una "cuarto de ronda" que mezcla cuatro palabras de estado a la vez. Como no necesita tablas de consulta, es rápido y de tiempo constante por naturaleza en CPU sin hardware AES, razón por la cual Google lo desplegó por primera vez en 2014 para proteger el tráfico de Android y Chrome. Combinado con el MAC Poly1305, el esquema AEAD ChaCha20-Poly1305 está estandarizado en RFC 8439 (que dejó obsoleto a RFC 7539) y es una de las dos suites de cifrado obligatorias en TLS 1.3, junto a AES-GCM. También sustenta QUIC, WireGuard, OpenSSH, el protocolo Signal y el RNG del kernel de Linux.
El escollo operativo crítico es la reutilización del nonce: cifrar dos mensajes con la misma clave y el mismo nonce expone el XOR de sus textos planos y revela la clave de un solo uso de Poly1305, rompiendo tanto la confidencialidad como la autenticidad. El nonce de 96 bits es holgado para un contador por conexión, pero arriesgado para la generación aleatoria a gran escala, por lo que XChaCha20 (draft-irtf-cfrg-xchacha) extiende el nonce a 192 bits mediante una derivación de subclave HChaCha20, lo que hace seguros los nonces aleatorios. Tras más de una década de criptoanálisis, ningún ataque rompe el cifrado completo de 20 rondas.
flowchart LR K[Clave de 256 bits] --> S[Inicializar estado: constantes, clave, contador, nonce] N[Nonce de 96 bits] --> S CTR[Contador de bloque] --> S S --> R[20 rondas de cuartos de ronda ARX] R --> KS[Bloque de flujo de clave] PT[Texto plano] --> X((XOR)) KS --> X X --> CT[Texto cifrado] CT --> P[MAC Poly1305] P --> TAG[Etiqueta de autenticacion]
● Ejemplos
- 01
TLS 1.3 y QUIC utilizan TLS_CHACHA20_POLY1305_SHA256 en dispositivos móviles.
- 02
WireGuard cifra todos sus paquetes de datos con ChaCha20-Poly1305.
● Preguntas frecuentes
¿Qué es ChaCha20?
Cifrado de flujo moderno diseñado por Daniel J. Bernstein, con clave de 256 bits y nonce de 96 bits; ampliamente desplegado junto a Poly1305 en el AEAD ChaCha20-Poly1305. Pertenece a la categoría de Criptografía en ciberseguridad.
¿Qué significa ChaCha20?
Cifrado de flujo moderno diseñado por Daniel J. Bernstein, con clave de 256 bits y nonce de 96 bits; ampliamente desplegado junto a Poly1305 en el AEAD ChaCha20-Poly1305.
¿Cómo defenderse de ChaCha20?
Las defensas contra ChaCha20 combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.