Criptografia Salsa20
Cifra de fluxo de alta velocidade com variante de nonce estendido
Segurança do Lado do Cliente
Todas as operações de criptografia e descriptografia são realizadas localmente no seu navegador. Nenhum dado é enviado para qualquer servidor.
Valor inicial do contador de bloco (geralmente 0 para criptografia, mesmo valor para descriptografia)
Sobre o Salsa20
Salsa20 é uma cifra de fluxo projetada por Daniel J. Bernstein em 2005. Usa uma chave de 256 bits e nonce de 64 bits para gerar um fluxo de chaves que é XORado com o texto plano para produzir o texto cifrado. A cifra é projetada para alto desempenho em implementações de software.
Salsa20 foi submetido ao projeto eSTREAM e selecionado como finalista no perfil de software. Forma a base da família de cifras ChaCha.
Comparação de Algoritmos
| Algoritmo | Rodadas | Comprimento do Nonce | Velocidade | Melhor Uso |
|---|---|---|---|---|
| Salsa20/20 | 20 | 64 bits (8 bytes) | Padrão | Criptografia geral, alta segurança |
| Salsa20/12 | 12 | 64 bits (8 bytes) | Rápido | Aplicações críticas de desempenho |
| Salsa20/8 | 8 | 64 bits (8 bytes) | Mais rápido | Cenários de velocidade máxima |
| XSalsa20 | 20 | 192 bits (24 bytes) | Padrão | Nonce aleatório, NaCl/libsodium |
Como o Salsa20 Funciona
Salsa20 opera em uma matriz 4×4 de palavras de 32 bits (512 bits no total). O estado inicial consiste na chave (256 bits), nonce (64 bits), contador (64 bits) e quatro palavras constantes formando a string 'expand 32-byte k'.
A função principal aplica 20 rodadas da operação quarterround, que usa apenas operações de adição-rotação-XOR (ARX). Isso torna o Salsa20 eficiente em software e resistente a ataques de temporização.
XSalsa20 estende o nonce para 192 bits usando HSalsa20, uma variante que deriva uma subchave dos primeiros 128 bits do nonce, deixando 64 bits para o nonce real. Isso permite geração segura de nonce aleatório.
Variantes de Rodadas
- Salsa20/20 (20 rodadas) - A variante padrão fornecendo margem de segurança completa. Recomendado para a maioria das aplicações.
- Salsa20/12 (12 rodadas) - Seleção do portfólio eSTREAM. Fornece bom equilíbrio entre velocidade e segurança.
- Salsa20/8 (8 rodadas) - Variante mais rápida. Sem ataques práticos conhecidos, mas margem de segurança reduzida.
Características Principais
- Alto Desempenho: Otimizado para software, alcançando 3-4 ciclos por byte em CPUs modernos
- Design Simples: Usa apenas operações ARX, fácil de implementar sem tabelas de pesquisa
- Tempo Constante: Resistente a ataques de canal lateral de temporização de cache
- Contador Grande: Contador de 64 bits permite criptografar até 2^70 bytes por par chave-nonce
- Nonce Estendido: O nonce de 192 bits do XSalsa20 permite geração de nonce aleatório
Considerações de Segurança
- Nunca reutilize um nonce com a mesma chave - isso quebra completamente a segurança
- Salsa20 fornece apenas criptografia, não autenticação - combine com Poly1305 para AEAD
- Para nonces aleatórios, use XSalsa20 para minimizar a probabilidade de colisão
- Use KDF apropriado (HKDF, Argon2) para derivar chaves de senhas
Uso no Mundo Real
- NaCl/libsodium: XSalsa20-Poly1305 é a construção AEAD padrão
- Ferramentas de criptografia: Muitos utilitários de criptografia de arquivos usam variantes do Salsa20
- Gerenciadores de senhas: Alguns usam Salsa20 para criptografar credenciais armazenadas
- Engines de jogos: Usado para criptografia rápida em jogos em rede
Referências
- D.J. Bernstein - Especificação do Salsa20
- Projeto eSTREAM - Portfólio de Cifras de Fluxo
- Wikipédia - Salsa20
- NaCl - Biblioteca de Rede e Criptografia
Perguntas Frequentes
Qual é a diferença entre Salsa20 e ChaCha20?
ChaCha20 é uma modificação do Salsa20 com difusão melhorada por rodada. ChaCha20 alcança melhor segurança por rodada, por isso se tornou o padrão IETF. Para novos projetos, ChaCha20 é geralmente preferido.
Qual variante de rodadas devo usar?
Use Salsa20/20 para segurança máxima. Salsa20/12 é um bom equilíbrio entre velocidade e segurança. Use Salsa20/8 apenas quando o desempenho é absolutamente crítico e seu modelo de ameaça permite margem de segurança reduzida.
Quando devo usar XSalsa20?
Use XSalsa20 quando precisar gerar nonces aleatórios. Seu espaço de nonce de 192 bits torna colisões virtualmente impossíveis com geração aleatória. O nonce de 64 bits do Salsa20 padrão requer gerenciamento cuidadoso do contador.
Salsa20 é seguro sem autenticação?
Salsa20 sozinho fornece apenas confidencialidade, não integridade. Um atacante pode modificar o texto cifrado sem detecção. Sempre combine com Poly1305 ou outro MAC para criptografia autenticada.
Posso usar esta ferramenta em produção?
Esta ferramenta é para fins educacionais e de desenvolvimento. Embora a implementação siga a especificação, sistemas de produção devem usar bibliotecas criptográficas bem auditadas como libsodium, OpenSSL ou APIs fornecidas pela plataforma.
Ferramentas Relacionadas
Criptografia ChaCha20
Cifra de fluxo moderna com ChaCha20, ChaCha20-Poly1305 AEAD e variantes XChaCha20
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)