0Pricing
Cryptology Academy · Lección

ChaCha20-Poly1305 AEAD en TLS 1.3

Descubra cómo se implementa ChaCha20 como cifrador AEAD en TLS moderno.

ChaCha20-Poly1305 AEAD en TLS 1.3 es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 4 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-Poly1305 combina el cifrador de flujo ChaCha20 con el MAC Poly1305 para crear una suite de cifrado AEAD segura, utilizada en TLS 1.3, WireGuard y aplicaciones móviles.

Descripción general de Poly1305 MAC

Poly1305 es un MAC de un solo uso diseñado por Bernstein. Autentica un mensaje mediante la evaluación de polinomios sobre el primo 2^130-5. De un solo uso: cada utilización requiere una clave nueva de 32 bytes.

Seguridad de Poly1305

Poly1305 proporciona una seguridad de 128 bits si la clave nunca se reutiliza. La clave del MAC se deriva de forma nueva para cada mensaje a partir del flujo de claves de ChaCha20. La combinación es segura de forma demostrable.

Construcción de ChaCha20-Poly1305

1. Genere un flujo de claves de 64 bytes a partir del bloque 0 de ChaCha20 2. Los primeros 32 bytes = clave de Poly1305 3. Descarte los 32 bytes restantes 4. Cifre el texto plano con los bloques 1, 2, 3,... de ChaCha20 5. Calcule el MAC Poly1305 sobre AAD + texto cifrado

Estructura de RFC 8439

Formato de salida: texto cifrado || etiqueta (16 bytes) Entrada del MAC: AAD || relleno1 || texto cifrado || relleno2 || longitud(AAD) || longitud(texto cifrado) Relleno: complete con ceros hasta una alineación de 16 bytes. Codifique las longitudes como enteros de 64 bits en orden little-endian.

Suites de cifrado de TLS 1.3

Suites de cifrado obligatorias de TLS 1.3: - TLS_AES_256_GCM_SHA384 - TLS_AES_128_GCM_SHA256 - TLS_CHACHA20_POLY1305_SHA256 CHACHA20_POLY1305 es la opción preferida para clientes sin aceleración de hardware para AES.

WireGuard utiliza ChaCha20-Poly1305

WireGuard utiliza exclusivamente ChaCha20Poly1305 para cifrar todos los túneles. No hay negociación de cifrado: se utiliza un único algoritmo ampliamente analizado. Esta simplicidad reduce drásticamente la superficie de ataque.

secretbox de libsodium

crypto_secretbox_easy() de libsodium utiliza XSalsa20-Poly1305 (variante con nonce extendido): ciphertext = crypto_secretbox_easy(message, nonce, key) API de alto nivel: funciona correctamente sin que tenga que elegir parámetros.

Rendimiento en dispositivos móviles

Los dispositivos Android e iOS a menudo no incluyen AES-NI. El análisis de Google de 2014 mostró que ChaCha20-Poly1305 era 3 veces más rápido que AES-GCM en ARM. Por eso Google lo hizo obligatorio en Android y Chrome.

Implementación en Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) aad = b'header_data' cipher = ChaCha20Poly1305(key) ct = cipher.encrypt(nonce, b'plaintext', aad) pt = cipher.decrypt(nonce, ct, aad)

Comparación: AES-GCM frente a ChaCha20-Poly1305

AES-GCM: más rápido con AES-NI, nonce de 96 bits, falsificación de la etiqueta GCM si se reutiliza el nonce. ChaCha20-Poly1305: más rápido sin hardware especializado, nonce de 96 bits, la clave de Poly1305 es nueva para cada mensaje. Ambos son excelentes. Utilice AES-GCM en servidores y ChaCha20-Poly1305 en dispositivos móviles.

Comprobación rápida

En ChaCha20-Poly1305, ¿cómo se genera la clave de Poly1305?

Recapitulación

ChaCha20-Poly1305 es la opción AEAD optimizada para dispositivos móviles. A continuación, estudiaremos el intercambio de claves Diffie-Hellman: cómo dos partes establecen un secreto compartido a través de un canal inseguro.

Preguntas frecuentes

¿La lección «ChaCha20-Poly1305 AEAD en TLS 1.3» es gratis?

Sí — el texto completo de «ChaCha20-Poly1305 AEAD en TLS 1.3» 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 «ChaCha20-Poly1305 AEAD en TLS 1.3»?

Descubra cómo se implementa ChaCha20 como cifrador AEAD en TLS moderno. 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 4 de 4.

¿Cuánto tiempo toma la lección «ChaCha20-Poly1305 AEAD en TLS 1.3»?

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