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
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)