0Pricing
Cryptology Academy · Lección

Diseño de Salsa20 y ChaCha20

Recorra el quarter-round de ChaCha20 y conozca su velocidad en hardware móvil.

Diseño de Salsa20 y ChaCha20 es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Bienvenida

ChaCha20 es el cifrado de flujo dominante en los sistemas modernos: se utiliza en TLS 1.3, WireGuard, Signal y muchos otros. Analicemos su elegante diseño.

Orígenes de ChaCha20

Daniel J. Bernstein diseñó Salsa20 en 2005 y posteriormente lo mejoró hasta convertirlo en ChaCha20 en 2008. El prefijo «Cha» indica 8 mejoras adicionales de difusión. Se estandarizó en RFC 7539 (2015) y RFC 8439 (2018).

Estado de ChaCha20

ChaCha20 opera sobre una matriz de 4×4 palabras de 32 bits (512 bits en total): - Palabras 0-3: constantes ('expa', 'nd 3', '2-by', 'te k') - Palabras 4-11: clave de 256 bits (8 palabras) - Palabra 12: contador de bloques de 32 bits - Palabras 13-15: nonce de 96 bits

La ronda de cuarto de bloque

La operación central de ChaCha20: la ronda de cuarto de bloque sobre (a,b,c,d): a+=b; d^=a; d<<<= 16 c+=d; b^=c; b<<<= 12 a+=b; d^=a; d<<<= 8 c+=d; b^=c; b<<<= 7 Suma-Rotación-XOR (ARX). No se necesitan cajas S; es rápido en cualquier hardware.

20 rondas

ChaCha20 aplica 20 rondas: rondas alternas por columnas y por diagonales, con 4 rondas de cuarto de bloque cada una. 8 rondas = ChaCha8 (rápido), 12 rondas = ChaCha12 (equilibrado). ChaCha20 es la opción segura predeterminada.

Generación del flujo de claves

1. Inicialice el estado a partir de la clave + el nonce + el contador 2. Aplique 20 rondas de rondas de cuarto de bloque 3. Sume el estado inicial al estado rotado (evita la inversión) 4. Genere un bloque de flujo de claves de 64 bytes 5. Incremente el contador para el siguiente bloque

Ventajas de seguridad de ARX

Los cifrados ARX (suma, rotación y XOR) funcionan de forma naturalmente constante en tiempo en la mayoría de las CPU. Al no realizar búsquedas en tablas, no presentan canales laterales de temporización de caché. Esto es fundamental para las implementaciones seguras.

Rendimiento de ChaCha20

Sin AES-NI: ChaCha20 es aproximadamente 3 veces más rápido que AES-CBC. En teléfonos (ARM Cortex-A), ChaCha20 es la opción más rápida. Con AES-NI (x86 moderno), AES-GCM es más rápido. TLS 1.3 incluye ambos.

Salsa20 frente a ChaCha20

ChaCha20 mejora Salsa20 con una difusión superior en las primeras rondas, lo que ofrece mayor resistencia al criptoanálisis diferencial. La inicialización del estado es diferente. Ambos son seguros; ChaCha20 es el estándar actual.

ChaCha20 en Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) ct = ChaCha20Poly1305(key).encrypt(nonce, b'hello', None)

XChaCha20: nonce extendido

ChaCha20 utiliza un nonce de 96 bits. XChaCha20 lo amplía a 192 bits mediante la función HChaCha20. Los nonces más grandes permiten generarlos aleatoriamente sin preocuparse por las colisiones. libsodium utiliza XChaCha20-Poly1305.

Comprobación rápida

¿Por qué el diseño ARX de ChaCha20 elimina los canales laterales basados en el tiempo de acceso a la caché?

Recapitulación

ChaCha20 es elegante y seguro. A continuación, veremos cómo se implementa en TLS 1.3 como AEAD ChaCha20-Poly1305.

Preguntas frecuentes

¿La lección «Diseño de Salsa20 y ChaCha20» es gratis?

Sí — el texto completo de «Diseño de Salsa20 y ChaCha20» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Diseño de Salsa20 y ChaCha20»?

Recorra el quarter-round de ChaCha20 y conozca su velocidad en hardware móvil. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Diseño de Salsa20 y ChaCha20»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos de los cifradores de flujo y PRNG
  2. RC4: diseño, debilidades y ataques contra WEP
  3. Diseño de Salsa20 y ChaCha20
  4. ChaCha20-Poly1305 AEAD en TLS 1.3
← Volver a Cryptology Academy