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
- RFC 7539 - ChaCha20 e Poly1305 para Protocolos IETF
- RFC 8439 - ChaCha20 e Poly1305 para Protocolos IETF (atualizado)
- Wikipédia - ChaCha20-Poly1305
- Artigo original do ChaCha por D.J. Bernstein
FAQ
Qual é a diferença entre ChaCha20 e AES?
Ambos são cifras simétricas seguras. ChaCha20 é 3× mais rápido em software sem aceleração de hardware e resistente a ataques de temporização. AES é mais rápido com suporte de hardware (AES-NI). ChaCha20 é preferido para dispositivos móveis e embarcados.
Por que usar XChaCha20 em vez de ChaCha20?
O nonce de 192 bits do XChaCha20 permite geração segura de nonce aleatório. Com um nonce de 96 bits, você precisaria de gerenciamento cuidadoso para evitar colisões. XChaCha20 é recomendado quando você não pode garantir nonces sequenciais únicos.
Para que serve o parâmetro contador?
O contador permite criptografar mensagens maiores que 64 bytes incrementando para cada bloco. Para modos AEAD, começa em 1 (bloco 0 gera a chave Poly1305). Normalmente, você pode deixar no valor padrão (0).
Posso criptografar arquivos com esta ferramenta?
Esta ferramenta funciona inteiramente no seu navegador e é adequada para criptografar texto e pequenos dados. Para arquivos grandes, considere usar ferramentas nativas como openssl ou aplicações baseadas em libsodium.
Esta ferramenta é segura para uso em produção?
Esta ferramenta é para fins educacionais e de desenvolvimento. Embora a implementação siga as especificações padrão, sistemas de produção devem usar bibliotecas criptográficas bem auditadas como libsodium, OpenSSL ou APIs da plataforma.
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)