Criptografia ChaCha20
Cifra de fluxo moderna com autenticação opcional
Segurança do lado do cliente
Todas as operações de criptografia/descriptografia são realizadas localmente no seu navegador. Nenhum dado é enviado para qualquer servidor.
Valor inicial do contador (padrão: 0)
Sobre o ChaCha20
ChaCha20 é uma cifra de fluxo moderna projetada por Daniel J. Bernstein em 2008, derivada da cifra Salsa20. Usa uma chave de 256 bits e opera em blocos de 512 bits, gerando um fluxo de chaves que é XORado com o texto plano para criptografia. A cifra é conhecida por sua velocidade, segurança e resistência a ataques de temporização.
Esta cifra é conhecida por sua velocidade, segurança e resistência a ataques de temporização, tornando-a uma excelente escolha para implementações de software.
Comparação de Algoritmos
| Algoritmo | Autenticação | Comprimento da chave | Tamanho do Nonce | Caso de Uso |
|---|---|---|---|---|
| ChaCha20 | Cifra de fluxo | 256 bits | 96 bits (12 bytes) | Criptografia bruta, protocolos personalizados |
| ChaCha20-Poly1305 | AEAD | 256 bits | 96 bits (12 bytes) | TLS 1.3, QUIC, mensagens seguras |
| XChaCha20 | Cifra de fluxo | 256 bits | 192 bits (24 bytes) | Cenários de nonce aleatório |
| XChaCha20-Poly1305 | AEAD | 256 bits | 192 bits (24 bytes) | Maioria das aplicações (recomendado) |
Como o ChaCha20 Funciona
ChaCha20 opera em 20 rodadas, aplicando funções de quarto de rodada a uma matriz 4×4 de palavras de 32 bits. O estado inicial consiste em:
Cada rodada permuta o estado usando adições, XORs e rotações, fornecendo excelente difusão enquanto permanece rápido em software.
AEAD: Criptografia Autenticada
ChaCha20-Poly1305 é uma construção AEAD padronizada na RFC 8439. Combina ChaCha20 para criptografia com o MAC Poly1305 para autenticação. Isso garante confidencialidade e integridade - qualquer adulteração no texto cifrado ou AAD será detectada durante a descriptografia. A tag de autenticação de 128 bits é anexada ao texto cifrado.
Isso garante tanto confidencialidade quanto integridade - qualquer adulteração do texto cifrado ou AAD será detectada durante a descriptografia. O tag de autenticação de 128 bits é calculado sobre o texto cifrado e AAD.
Características Principais
- Alto Desempenho: Otimizado para implementações de software, 3× mais rápido que AES sem aceleração de hardware
- Tempo Constante: Resistente a ataques de temporização de cache, diferente de implementações AES baseadas em tabelas
- Design Simples: Usa apenas operações ARX (adição, rotação, XOR), fácil de implementar corretamente
- Ampla Adoção: Usado em TLS 1.3, OpenSSH, WireGuard, Signal Protocol e mais
- Nonce Estendido: Variante XChaCha20 permite geração segura de nonce aleatório sem risco de colisão
Considerações de Segurança
- Nunca reutilize um nonce com a mesma chave - isso compromete completamente a segurança
- Use variantes AEAD (Poly1305) para a maioria das aplicações para detectar adulteração
- Para nonces aleatórios, use XChaCha20 (192 bits) para minimizar a probabilidade de colisão
- Use um KDF apropriado (HKDF, Argon2) para derivar chaves de senhas
Uso no Mundo Real
- TLS 1.3: Suite de cifra padrão (TLS_CHACHA20_POLY1305_SHA256)
- WireGuard VPN: Protocolo de criptografia principal
- Signal Protocol: Mensagens criptografadas de ponta a ponta
- Cloudflare: Preferido sobre AES-GCM para clientes móveis
- Kernel Linux: CSPRNG (/dev/urandom)
Referências
Ferramentas Relacionadas
Criptografia/Descriptografia AES
Criptografe e descriptografe texto com segurança usando o algoritmo AES
Família RC (RC4/RC5/RC6)
Cifras de fluxo e bloco da família RC incluindo RC4, RC4-Drop, RC5 e RC6 (finalista AES)
Criptografia/Descriptografia Blowfish
Cifra de bloco simétrica rápida projetada por Bruce Schneier, com comprimento de chave variável (32-448 bits)