ChaCha20
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
- 01
O TLS 1.3 e o QUIC utilizam TLS_CHACHA20_POLY1305_SHA256 em dispositivos móveis.
- 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.