Skip to main content

Cifras de Bloco vs. Cifras de Fluxo

Chegamos a uma bifurcação clássica no mundo da criptografia simétrica: Cifras de Bloco e Cifras de Fluxo.

Ambas prometem confidencialidade, ambas usam chaves secretas,porém cada uma delas resolve um problema diferente. E é exatamente por isso que você precisa conhecer como funcionam, onde vivem e por que quebram.

1. Cifras de Bloco — Criptografia em pedaços, força bruta em estrutura

Imagine que você tem um arquivo de 1MB e quer cifrar. A cifra de bloco diz o seguinte:

“Ok, me dá esse arquivo, vou cortar em pedaços de 128 bits e cifrar bloco por bloco.”

Aí entra o AES (Advanced Encryption Standard), que é a cifra de bloco moderna mais usada hoje, ele opera sobre blocos de 128 bits, com chaves de 128, 192 ou 256 bits.

O que ele faz com cada bloco?

Aplica uma sequência de substituições, permutações e misturas não lineares, rodadas após rodadas.

Resultado? Um bloco cifrado que não se parece em nada com o original. Se bem usado.

2. Cifras de Fluxo — Byte por byte, no ritmo da transmissão

Agora pense diferente:

Você quer cifrar uma transmissão de áudio ao vivo, ou um canal que nunca termina, então não dá pra ficar esperando juntar 128 bits.

A cifra de fluxo vem para solucionar esse problema:

“Vou gerar um fluxo contínuo de bits pseudoaleatórios (keystream) e aplicar XOR com seu dado. Um byte entra, um byte sai.”

Parece o one-time pad, só que com um gerador pseudoaleatório no lugar da fita infinita de bits verdadeiramente aleatórios.

Exemplo clássico:

Durante anos, o RC4 foi o mais utilizado em WEP, WPA...(basicamente proteção ao Wi-fi)

Depois de um tempo eles quebraram. A geração de keystream(fluxo de aleatório ou pseudoaleatório de caracteres que são combinados com um texto simples mensagem para produzir uma mensagem encriptada) era previsível, e a reutilização de IVs explodia tudo.

Atualmente são usados algotimos como o Chacha20

  • Usa operações de adição, rotação e XOR (ARX)

  • Rápido até em processadores sem AES-NI

  • Seguro contra ataques de canal lateral(vamos aprofundar mais a frente)

  • Usado com Poly1305 para formar ChaCha20-Poly1305 (AEAD)

ChaCha20 é o que você usa quando precisa de cifra de fluxo com autenticação embutida.

OBS: Poly1305 é um código de autenticação de mensagem (MAC) projetado para garantir a integridade e autenticidade de dados

3. Bloco vs. Fluxo

CaracterísticaCifras de BlocoCifras de Fluxo
Unidades processadasBlocos fixos (ex: 128 bits)Bits ou bytes individuais
ExemplosAES, DES, BlowfishChaCha20, RC4, Salsa20
Estrutura de operaçãoPrecisa de modo (ECB, CBC, etc.)Keystream pseudoaleatório + XOR
LatênciaMaior (processamento em blocos)Baixa (processamento contínuo)
Aplicações comunsArquivos, discos, VPNs, TLSStreaming, VoIP, sistemas embarcados
Segurança contra reutilização de IVControlável via modo de operaçãoAltamente sensível à reutilização de nonce
Suporte a autenticaçãoDepende do modo (ex: GCM)Combinado com MAC (ex: Poly1305)
Vídeos Complementares



Cuidados práticos

  • Nunca reuse o mesmo keystream com cifras de fluxo. É um desastre. Isso aconteceu com o WEP: IVs curtos, colisão fácil, segurança quebrada.

  • Nunca use ECB com cifras de bloco. Você só está cifrando pedaços, mas revelando a estrutura.

  • Para arquivos grandes ou paralelismo? CTR ou GCM.

  • Para streaming em dispositivos móveis? ChaCha20-Poly1305.

4. Conclusão

A diferença entre uma cifra segura e um desastre criptográfico não está apenas na cifra — está no modo como ela é usada.

  • Cifras de bloco são blocadas. Organizadas. Fortes. Mas exigem cuidado nos modos de operação.

  • Cifras de fluxo são leves, flexíveis e eficientes, Mas frágeis se mal configuradas.

Criptografia simétrica não é uma escolha binária. É um jogo de encaixe: contexto, desempenho, segurança, hardware, tudo importa para o sucesso da criptografia