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

ChaCha20

Revisado porCybersecurity entrepreneur & security researcher

O que é ChaCha20?

ChaCha20Cifra de fluxo moderna desenhada por Daniel J. Bernstein, com chave de 256 bits e nonce de 96 bits, largamente implementada com o Poly1305 no AEAD ChaCha20-Poly1305.


O ChaCha20 é uma cifra de fluxo de 20 rondas desenhada por Daniel J. Bernstein em 2008 como um refinamento do seu design Salsa20. Produz um fluxo de chave a partir de uma chave de 256 bits, um nonce de 96 bits e um contador de bloco de 32 bits, usando apenas operações de soma-rotação-XOR (ARX) sobre palavras de 32 bits — uma "quarter-round" que mistura quatro palavras do estado de cada vez. Como não precisa de tabelas de consulta, é rápido e naturalmente em tempo constante em CPUs sem hardware AES, razão pela qual a Google o implementou pela primeira vez em 2014 para proteger o tráfego do Android e do Chrome. Combinado com o MAC Poly1305, o esquema AEAD ChaCha20-Poly1305 está normalizado no RFC 8439 (que tornou obsoleto o RFC 7539) e é uma das duas suítes de cifra obrigatórias no TLS 1.3, a par do AES-GCM. Também sustenta o QUIC, o WireGuard, o OpenSSH, o Protocolo Signal e o gerador de números aleatórios do kernel Linux.

A armadilha operacional crítica é a reutilização de nonce: cifrar duas mensagens com a mesma chave e o mesmo nonce expõe o XOR dos respetivos textos em claro e revela a chave Poly1305 de uso único, quebrando tanto a confidencialidade como a autenticidade. O nonce de 96 bits é confortável para um contador por ligação, mas arriscado para geração aleatória em grande escala, pelo que o XChaCha20 (draft-irtf-cfrg-xchacha) estende o nonce para 192 bits através de uma derivação de subchave HChaCha20, tornando seguros os nonces aleatórios. Após mais de uma década de criptanálise, nenhum ataque quebra a cifra completa de 20 rondas.

flowchart LR
  K[Chave de 256 bits] --> S[Inicializar estado: constantes, chave, contador, nonce]
  N[Nonce de 96 bits] --> S
  CTR[Contador de bloco] --> S
  S --> R[20 rondas de quarter-rounds ARX]
  R --> KS[Bloco do fluxo de chave]
  PT[Texto em claro] --> X((XOR))
  KS --> X
  X --> CT[Texto cifrado]
  CT --> P[MAC Poly1305]
  P --> TAG[Etiqueta de autenticacao]

Exemplos

  1. 01

    O TLS 1.3 e o QUIC utilizam TLS_CHACHA20_POLY1305_SHA256 em dispositivos móveis.

  2. 02

    O WireGuard cifra todos os pacotes de dados com ChaCha20-Poly1305.

Perguntas frequentes

O que é ChaCha20?

Cifra de fluxo moderna desenhada por Daniel J. Bernstein, com chave de 256 bits e nonce de 96 bits, largamente implementada com o Poly1305 no AEAD ChaCha20-Poly1305. Pertence à categoria Criptografia da cibersegurança.

O que significa ChaCha20?

Cifra de fluxo moderna desenhada por Daniel J. Bernstein, com chave de 256 bits e nonce de 96 bits, largamente implementada com o Poly1305 no AEAD ChaCha20-Poly1305.

Como se defender contra ChaCha20?

As defesas contra ChaCha20 costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.

Termos relacionados

Ver também