Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

01 - Criptografia Simétrica (AES, 3DES, ChaCha20, Blowfish)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Criptografia Simétrica (AES, 3DES, ChaCha20, Blowfish)

A criptografia simétrica é o método mais difundido para garantir confidencialidade em volume de dados. Ela emprega uma única chave secreta compartilhada entre emissor e receptor, tanto para cifrar quanto para decifrar. Por essa razão também é chamada de secret-key cryptography ou single-key cryptography. Comparada à criptografia assimétrica, é ordens de magnitude mais rápida (100-1000x), tornando-se a escolha universal para cifragem de tráfego em tempo real.

Abaixo, detalham-se os principais algoritmos simétricos, seus modos de operação e acelerações em hardware.

1. Características Gerais

Atributo Valor
Número de chaves 1 (compartilhada)
Velocidade Muito alta
Custo computacional Baixo
Tipos Block Cipher / Stream Cipher
Tamanho típico de chave 128/192/256 bits
Aplicações VPNs (IPSec/TLS/WireGuard), Wi-Fi (WPA2/3), disco (LUKS/BitLocker), bancos
RFC de referência RFC 3566 (AES-CMAC), RFC 5116 (AEAD), RFC 7539 (ChaCha20-Poly1305)

2. AES (Advanced Encryption Standard)

O AES é o algoritmo simétrico padrão mundial, selecionado pelo NIST em 2001 (FIPS 197) após concurso público vencido por Joan Daemen e Vincent Rijmen com o algoritmo Rijndael. Substituiu o DES, que se tornara inseguro pelo tamanho de chave de 56 bits.

Características do AES

  • Tipo: Block Cipher (blocos de 128 bits).
  • Tamanhos de chave: 128, 192 ou 256 bits (10, 12 ou 14 rodadas respectivamente).
  • Estrutura: rede de substituição-permutação (Substitution-Permutation Network, SPN).
  • RFC 3268: uso de AES no TLS (historicamente).
  • Status: padrão atual, sem vulnerabilidade criptográfica prática conhecida quando usado em modo seguro (GCM ou CCM).

Operações Internas por Rodada

  1. SubBytes: substituição por S-Box não-linear.
  2. ShiftRows: permutação de bytes dentro do bloco.
  3. MixColumns: mistura por transformação no corpo de Galois GF(28).
  4. AddRoundKey: XOR com chave de rodada derivada via key schedule.

Aceleração em Hardware: AES-NI

Os processadores modernos (Intel desde Westmere 2010, AMD desde Bulldozer 2011, ARMv8 Crypto Extensions) implementam o conjunto de instruções AES-NI (AESENC, AESDEC, AESKEYGENASSIST), executando uma rodada AES em 1-2 ciclos de CPU. Isso permite throughput de múltiplos Gbps com baixo consumo, viabilizando HTTPS em massa e VPNs de alto desempenho.

3. 3DES (Triple DES)

O 3DES aplica o algoritmo DES (Data Encryption Standard, FIPS 46-3, 1977) três vezes consecutivas, com chaves distintas, para mitigar o curto tamanho de chave do DES original.

Características do 3DES

  • Tamanho de chave efetivo: 168 bits (3 × 56 bits) ou 112 bits no modo 2TDEA (K1=K3).
  • Operação: Cifra(Decifra(Cifra)) com 3 chaves (EDE — Encrypt-Decrypt-Encrypt).
  • Bloco: 64 bits (herdado do DES).
  • Status: obsoleto — NIST SP 800-131A revogou o uso de 3DES para cifragem nova a partir de 2023, devido a ataques Sweet32 (aniversário em bloco de 64 bits) e baixo desempenho.

Tabela Comparativa AES vs 3DES

Característica AES 3DES
Tamanho de bloco 128 bits 64 bits
Tamanho de chave 128/192/256 bits 168 bits
Rodadas 10/12/14 48 (3×16)
Velocidade relativa 1x (referência) 0,05-0,1x
Aceleração em HW AES-NI Não
Status Padrão atual Obsoleto (2023)

4. ChaCha20

O ChaCha20 é um stream cipher moderno, criado por Daniel J. Bernstein em 2008, como evolução do Salsa20. Foi padronizado pela RFC 7539 (posteriormente RFC 8439) como algoritmo base do conjunto ChaCha20-Poly1305 adotado pelo Google no TLS (2014) e pelo IETF como alternativa ao AES em software puro.

Características do ChaCha20

  • Tipo: Stream Cipher.
  • Tamanho de chave: 256 bits.
  • Nonce: 96 bits (versão IETF) ou 64 bits (versão original).
  • Estrutura: ARX (Add-Rotate-XOR), 20 rodadas (10 duplas).
  • Vantagem: performance equivalente ao AES-NI em software puro, sem necessidade de hardware especial — ideal para dispositivos móveis (ARM Cortex-A57 em diante).

Combinado com Poly1305 (AEAD)

O modo ChaCha20-Poly1305 combina o stream cipher com o MAC Poly1305 (também de Bernstein) formando um esquema AEAD (Authenticated Encryption with Associated Data), que garante simultaneamente confidencialidade e integridade. É o algoritmo preferido em TLS 1.3 (RFC 8446), WireGuard, SSH e Signal.

5. Blowfish

O Blowfish é um block cipher criado por Bruce Schneier em 1993, como alternativa livre de patentes ao DES. Apesar de robusto para a época, hoje é considerado legacy por ter bloco de 64 bits (vulnerável a ataques de aniversário em volumes grandes) e ser mais lento que o AES.

Características do Blowfish

  • Tipo: Block Cipher (Feistel network).
  • Tamanho de chave: variável, 32 a 448 bits.
  • Bloco: 64 bits.
  • Rodadas: 16.
  • Sucessor: Twofish (finalista do AES), também de Schneier.
  • Uso moderno: deprecated — substituído por AES ou ChaCha20.

6. Modos de Operação de Block Ciphers

O modo de operação define como o algoritmo cifra múltiplos blocos consecutivos. Alguns modos providenciam apenas confidencialidade; outros são AEAD (confidencialidade + integridade).

Modo RFC Confidencialidade Integridade Paralelizável Observação
ECB — Sim Não Sim Inseguro — padrão visível em imagens
CBC RFC 3602 Sim Não Cifragem: não / Decifragem: sim Requer IV aleatório
CTR RFC 3686 Sim Não Sim Converte block em stream
CFB RFC 2040 Sim Não Não Stream-like
OFB RFC 2040 Sim Não Não Stream-like
GCM RFC 5288 Sim Sim (GMAC) Sim AEAD — padrão moderno
CCM RFC 3610 Sim Sim Parcial Usado em Wi-Fi WPA2/3
XTS IEEE 1619 Sim Não Sim Usado em disco (LUKS, BitLocker)

Por que evitar ECB?

No modo ECB (Electronic Code Book), blocos idênticos de plaintext geram blocos idênticos de ciphertext, permitindo reconhecer padrões. O famoso experimento "ECB Penguin" demonstra isso cifrando uma imagem do Tux e ainda reconhecendo o contorno.

7. AEAD (Authenticated Encryption with Associated Data)

Modos AEAD cifram o payload e autenticam tanto o ciphertext quanto metadados (cabeçalhos associados), garantindo integridade e origem. São o padrão moderno em TLS 1.3, IPSec, WireGuard e QUIC.

Algoritmo AEAD Composição RFC Uso Típico
AES-GCM AES-CTR + GMAC RFC 5288 / 5116 TLS 1.3, IPSec, Wi-Fi WPA3
AES-CCM AES-CBC + CBC-MAC RFC 3610 Wi-Fi WPA2/WPA3, Zigbee
ChaCha20-Poly1305 ChaCha20 + Poly1305 RFC 8439 TLS 1.3, WireGuard, SSH
AES-GCM-SIV AES-GCM + SIV RFC 8452 Anti-reuse nonce

8. Comparativo de Performance

Em servidores x86 modernos (Intel Xeon com AES-NI, OpenSSL 3.x):

Algoritmo Throughput (1 thread)
AES-128-GCM (AES-NI) ~5-7 Gbps
AES-256-GCM (AES-NI) ~4-6 Gbps
ChaCha20-Poly1305 (software) ~2-3 Gbps
3DES ~50-100 Mbps
Blowfish ~200-400 Mbps

9. Boas Práticas

  • Nunca usar ECB para dados com padrão (imagens, JSON estruturado).
  • Sempre usar IV/nonce aleatório (CBC, CTR, GCM) — jamais reutilizar nonce em GCM ou CTR.
  • Priorizar AEAD (AES-GCM ou ChaCha20-Poly1305) — confidencialidade + integridade.
  • Evitar 3DES e Blowfish em designs novos (NIST obsoleto desde 2023).
  • Habilitar AES-NI em kernel/driver — em Linux, verificar com lscpu | grep aes ou /proc/cpuinfo.
  • Rotação periódica de chaves (TLS 1.3 key update RFC 8446 §7.5).
  • Gerar chaves via KDF segura (HKDF RFC 5869 ou PBKDF2 RFC 2898).

10. Conclusão

A criptografia simétrica é o workhorse da confidencialidade em redes e sistemas modernos. Entre os algoritmos discutidos, AES domina o cenário corporativo (com AES-NI acelerando em hardware), ChaCha20-Poly1305 ganha espaço em software sem aceleração dedicada (mobile, IoT), enquanto 3DES e Blowfish estão obsoletos e devem ser migrados. A escolha do modo de operação é tão importante quanto o algoritmo em si: modos AEAD (GCM, ChaCha20-Poly1305) são obrigatórios em designs novos, pois garantem simultaneamente confidencialidade e integridade — algo que CBC + HMAC isolados já não são considerados melhores práticas em 2024.