CoderTools

Criptografia Salsa20

Cifra de fluxo de alta velocidade com variante de nonce estendido

Segurança do Lado do Cliente

Salsa20 é uma cifra ARX sem tabelas de pesquisa — intrinsecamente de tempo constante. Reutilização de nonce é catastrófica. Use XSalsa20 (nonce 192 bits) para geração aleatória segura.

Salsa20/20: 256 bits chave, nonce 64 bits, 20 rodadas; eSTREAM Profile 1; 2⁷² bytes máx; sem ataques de rodada completa.

Valor inicial do contador de bloco (geralmente 0 para criptografia, mesmo valor para descriptografia)

Opções de Formato
🔒 100% Processamento localOs dados inseridos são processados inteiramente em seu navegador. Nenhum dado é enviado para qualquer servidor.

Sobre o Salsa20

Salsa20 é uma cifra de fluxo ARX projetada por Daniel J. Bernstein (2005). Opera sobre uma matriz 4×4 de palavras de 32 bits (estado 512 bits) com adição (mod 2³²), rotação e XOR apenas — sem S-boxes ou tabelas. O contador de fluxo de 64 bits permite acesso aleatório a qualquer posição do fluxo de chave.

Salsa20 foi selecionado para eSTREAM Profile 1 (software, 2008). XSalsa20 (Bernstein 2011) usa HSalsa20 para derivar uma subchave de 256 bits, habilitando geração aleatória de nonce sem risco de aniversário. Base do secretbox NaCl (XSalsa20-Poly1305).

Comparação de Algoritmos

Algoritmo Rodadas Comprimento do Nonce Velocidade Melhor Uso
Salsa20/20 20 64 bits (8 bytes) Padrão Criptografia de sessão com nonces sequenciais; alto desempenho; implantações certificadas eSTREAM
Salsa20/12 12 64 bits (8 bytes) Rápido Alto desempenho com margem suficiente; recomendação Bernstein
Salsa20/8 8 64 bits (8 bytes) Mais rápido Apenas benchmarking e pesquisa
XSalsa20 20 192 bits (24 bytes) Padrão Aplicações com geração aleatória de nonce; compatibilidade NaCl/libsodium secretbox

Como o Salsa20 Funciona

Salsa20 inicializa uma matriz 4×4: 4 constantes (“expand 32-byte k”), 8×32 bits da chave 256 bits, 2×32 bits contador de fluxo, 2×32 bits nonce.

Quarto de rodada em (a,b,c,d): b⊕=(a+d)‹‹7; c⊕=(b+a)‹‹9; d⊕=(c+b)‹‹13; a⊕=(d+c)‹‹18. Rodada dupla = coluna + diagonal. Salsa20/20 = 10 rodadas duplas. Saída = XOR do estado transformado com o inicial.

Contador 64 bits: 2⁶⁴ blocos × 64 bytes = 2⁷² bytes por (chave, nonce). Acesso aleatório via contador. Paralelização em blocos independentes de 64 bytes.

Variantes de Rodadas

  • Salsa20/20 (20 rodadas): margem de segurança máxima, eSTREAM nominado, sem ataques de rodada completa. Recomendado para todas as aplicações críticas.
  • Salsa20/12 (12 rodadas): ~35% mais rápido que /20, sem ataques conhecidos a 12 rodadas, recomendação de desempenho Bernstein.
  • Salsa20/8 (8 rodadas): mais rápido, ataques reduzidos conhecidos (Aumasson 2008). Não recomendado para uso seguro. Apenas benchmarking.

Características Principais

  • Projeto ARX: sem S-box nem tabelas. Tempo de execução independente de dados. Imunidade intrínseca a ataques de canal lateral de cache.
  • Grande fluxo de chave: 2⁷² bytes por (chave, nonce) via contador 64 bits. Acesso aleatório sem reprocessamento.
  • Nonce 64 bits: gerenciamento estrito de unicidade necessário. Após 2³² mensagens mesma chave, probabilidade de colisão não desprezível. Usar XSalsa20 (192 bits) para chaves de longa duração.
  • XSalsa20 (nonce 192 bits, 2011): HSalsa20 deriva subchave para geração aleatória segura. Padrão secretbox NaCl.
  • eSTREAM Profile 1 (software, 2008): avaliação pública 4 anos. Sem ataques em 12 ou 20 rodadas.

Considerações de Segurança

  • Reutilização de nonce catastrófica: revela XOR dos plaintexts. Nonces únicos obrigatórios. XSalsa20 nonce 192 bits aleatório elimina risco de aniversário.
  • Limite de aniversário nonce curto: nonce 64 bits → ~2³² mensagens antes de colisão ~50%. Usar XSalsa20 (192 bits).
  • Ataques de rodadas reduzidas: nenhum sobre /20 ou /12. Salsa20/8: distinguidores conhecidos. Apenas /20 para usos críticos.
  • Sem autenticação: usar XSalsa20-Poly1305 ou ChaCha20-Poly1305 para AEAD.

Uso no Mundo Real

  • NaCl secretbox (XSalsa20-Poly1305): primitiva AEAD original do NaCl; nonce 192 bits + Poly1305; amplamente implantada via libsodium.
  • eSTREAM Profile 1 (2008): Salsa20/12 selecionado na competição ECRYPT 2004-2008.
  • Influência no ChaCha20: Bernstein projetou ChaCha20 (2008) como variante do Salsa20 com difusão melhorada por rodada.
  • Sistemas legacy: ferramentas VPN, criptografia de arquivos, mensageiros libsodium usavam XSalsa20-Poly1305 antes de RFC 7539/8439.

Referências

Menu Rápido

Nenhuma ferramenta recente