Criptografia e descriptografia ChaCha20
Criptografe e descriptografe textos com ChaCha20-Poly1305 ou ChaCha20 puro.
Você vai precisar dela de novo para descriptografar. Nada do que você digita sai desta página.
O padrão do OpenSSL é 10.000. Qualquer número funciona: mais iterações deixam a senha mais lenta de adivinhar; para descriptografar, é preciso o mesmo número.
Autenticado: uma senha ou chave errada, ou qualquer mudança no texto, é detectada.
O comando enc do OpenSSL não lê ChaCha20-Poly1305. Descriptografe aqui ou por código, com uma biblioteca de criptografia: a tag de 16 bytes vem depois do texto cifrado.
O ChaCha20-Poly1305 (RFC 8439) é a cifra autenticada usada no TLS 1.3 e no WireGuard: ele criptografa o texto e também detecta qualquer alteração nele, ou uma senha errada. Criptografe textos aqui com uma senha ou com sua própria chave de 256 bits e nonce de 12 bytes, ou cole um texto cifrado em Base64 ou hex para descriptografá-lo. Com senha, a chave e o nonce vêm do PBKDF2-HMAC-SHA256 com um sal aleatório, como no openssl enc -pbkdf2, e a saída é Salted__, o sal, o texto cifrado e a tag Poly1305 de 16 bytes. O ChaCha20 puro, sem a tag, também está aqui, no formato do chacha20 do OpenSSL. Seu texto, suas senhas e suas chaves nunca saem do seu dispositivo: tudo roda no navegador, grátis e sem cadastro.
Como criptografar textos com ChaCha20-Poly1305
- Escolha Criptografar ou Descriptografar. Digite o texto a criptografar ou cole o texto em Base64 ou hex a descriptografar — o formato é detectado automaticamente.
- Digite uma senha (Gerar cria uma senha forte) ou mude para Chave e IV (hex) e digite ou gere uma chave de 64 dígitos e um nonce de 24 dígitos (um IV de 32 dígitos no ChaCha20 puro).
- Mantenha ChaCha20-Poly1305 ou escolha ChaCha20 para combinar com o openssl enc -chacha20. Para descriptografar, use o mesmo modo, a mesma senha e o mesmo número de iterações da criptografia.
- Copie ou baixe o resultado, ou clique em Trocar para levá-lo à entrada e descriptografá-lo de novo, como teste.
Recursos
- ChaCha20-Poly1305 conforme a RFC 8439: chave de 256 bits, nonce de 12 bytes, tag de 16 bytes
- ChaCha20 puro no formato do OpenSSL: IV de 16 bytes formado por um contador little-endian de 4 bytes e o nonce de 12 bytes
- Modo senha: chave e nonce via PBKDF2-HMAC-SHA256 com sal aleatório, após o cabeçalho Salted__ do openssl enc -pbkdf2
- Modo Chave e IV: sua própria chave e nonce em hex, ou aleatórios com Gerar
- Com o Poly1305, uma senha ou chave errada, ou um único caractere alterado, faz a descriptografia falhar em vez de devolver lixo
- Sem padding: o texto cifrado tem o tamanho do texto, mais a tag de 16 bytes com o Poly1305
- O comando openssl enc -chacha20 para o ChaCha20 puro
É privado?
Sim. O ChaCha20 roda em WebAssembly dentro do seu navegador, e a senha é transformada em chave pelo Web Crypto do navegador. Nada do que você digita — texto, senha, chave ou nonce — é enviado ou salvo.
Perguntas frequentes
ChaCha20-Poly1305 ou ChaCha20 puro?
ChaCha20-Poly1305, o padrão, para qualquer coisa nova: a tag Poly1305 faz a descriptografia falhar se um caractere foi alterado ou se a senha está errada. O ChaCha20 puro só criptografa — uma chave errada gera bytes ilegíveis em vez de um erro —, então use-o apenas para combinar com um sistema que já o utiliza, como o openssl enc -chacha20.
O OpenSSL consegue descriptografar?
O ChaCha20 puro, sim: echo 'U2FsdGVkX1…' | openssl enc -d -chacha20 -pbkdf2 -iter 10000 -a -A no modo senha, ou -K <chave em hex> -iv <IV em hex> no lugar de -pbkdf2 -iter no modo Chave e IV. O ChaCha20-Poly1305, não: o openssl enc recusa cifras AEAD. Leia-o aqui ou por código: no modo Chave e IV, a saída é o texto cifrado seguido da tag de 16 bytes, sem cabeçalho.
O que acontece se um nonce for reutilizado?
Duas mensagens com a mesma chave e o mesmo nonce revelam o XOR dos seus textos e permitem que um atacante falsifique tags Poly1305. No modo senha não há como cometer esse erro: cada criptografia escolhe um novo sal aleatório, então a chave, o nonce e a saída são novos a cada vez. No modo Chave e IV, clique em Gerar para ter um novo nonce antes de cada mensagem.
O ChaCha20 é tão seguro quanto o AES?
Sim. O ChaCha20-Poly1305 e o AES-GCM são cifras padrão do TLS 1.3 sem ataque prático, e o ChaCha20 costuma ser mais rápido em celulares sem aceleração de AES por hardware. O ponto fraco é a senha: use uma longa e aleatória, e a opção de 600.000 iterações quando controlar os dois lados.
Ele suporta XChaCha20-Poly1305?
Não. O XChaCha20, a variante com nonce de 24 bytes encontrada na libsodium, é uma construção diferente, então o texto cifrado dele não pode ser descriptografado aqui. Esta página usa o nonce de 12 bytes da RFC 8439 e o IV de 16 bytes do chacha20 do OpenSSL. Para criptografar um arquivo em vez de texto, a Criptografia de arquivos usa ChaCha20-Poly1305 no formato age.