Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 182

ChaCha20-Poly1305

Revisado porCybersecurity entrepreneur & security researcher

¿Qué es ChaCha20-Poly1305?

ChaCha20-Poly1305Construccion AEAD que combina el cifrador en flujo ChaCha20 con el autenticador de un solo uso Poly1305, estandarizada en RFC 8439 para TLS 1.3 y WireGuard.


ChaCha20-Poly1305 es el cifrador AEAD especificado en RFC 8439 (que dejo obsoleto a RFC 7539). ChaCha20 es un cifrador en flujo de tipo ARX con clave de 256 bits disenado por Daniel J. Bernstein, con nonce de 96 bits y contador de 32 bits que produce un bloque de keystream de 512 bits por invocacion; Poly1305 es un MAC de un solo uso de 128 bits sobre el texto cifrado y los datos asociados, con clave derivada del primer bloque del keystream. Al ser de tiempo constante y muy rapido en software puro sin AES-NI, Google lo desplego en Chrome y Android en 2014 (impulsado por Adam Langley) para proteger a los clientes moviles sin hardware AES, donde evita las fugas por temporizacion de cache del AES basado en tablas.

Hoy esta en todas partes: suites de TLS 1.2 (RFC 7905), una suite obligatoria de TLS 1.3 (RFC 8446), QUIC (RFC 9001), chacha20-poly1305@openssh.com en OpenSSH desde 6.5, OpenVPN y cada trama de datos de WireGuard. La variante de nonce extendido XChaCha20-Poly1305 (nonce de 192 bits, popularizada por libsodium) permite elegir nonces de forma aleatoria sin preocuparse por el limite del cumpleanos.

Como AES-GCM, falla catastroficamente al reutilizar el nonce: repetir un nonce con la misma clave filtra el XOR de dos textos en claro y expone la clave de Poly1305, permitiendo falsificar mensajes. Por eso las implementaciones usan contadores deterministas y renuevan la clave antes de que el contador se desborde.

flowchart LR
  K[Clave de 256 bits] --> CC[ChaCha20]
  N[Nonce de 96 bits] --> CC
  CC -->|bloque 0| PK[Clave unica Poly1305]
  CC -->|bloques 1..n| KS[Keystream]
  P[Texto en claro] --> X((XOR))
  KS --> X
  X --> CT[Texto cifrado]
  AD[Datos asociados] --> PM[MAC Poly1305]
  CT --> PM
  PK --> PM
  PM --> TAG[Etiqueta de 128 bits]
  CT --> OUT[Texto cifrado + etiqueta]
  TAG --> OUT

Ejemplos

  1. 01

    Suite TLS 1.3 TLS_CHACHA20_POLY1305_SHA256.

  2. 02

    Las tramas de datos de WireGuard se cifran con ChaCha20-Poly1305.

Preguntas frecuentes

¿Qué es ChaCha20-Poly1305?

Construccion AEAD que combina el cifrador en flujo ChaCha20 con el autenticador de un solo uso Poly1305, estandarizada en RFC 8439 para TLS 1.3 y WireGuard. Pertenece a la categoría de Criptografía en ciberseguridad.

¿Qué significa ChaCha20-Poly1305?

Construccion AEAD que combina el cifrador en flujo ChaCha20 con el autenticador de un solo uso Poly1305, estandarizada en RFC 8439 para TLS 1.3 y WireGuard.

¿Cómo defenderse de ChaCha20-Poly1305?

Las defensas contra ChaCha20-Poly1305 combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.

¿Cuáles son otros nombres para ChaCha20-Poly1305?

Nombres alternativos comunes: ChaCha20/Poly1305, RFC 8439, ChaPoly.

Términos relacionados