CoderTools

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.

ChaCha20: Cifra de fluxo de 256 bits com nonce de 96 bits. Rápido e seguro, sem autenticação.

Valor inicial do contador (padrão: 0)

Opções de formato
🔒 100% Processamento localSeus arquivos são processados inteiramente no seu navegador. Nenhum dado é enviado para qualquer servidor.

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

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.