ChaCha20-Poly1305
¿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
- 01
Suite TLS 1.3 TLS_CHACHA20_POLY1305_SHA256.
- 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.