01 - Criptografia Simétrica (AES, 3DES, ChaCha20, Blowfish)
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
- SubBytes: substituição por S-Box não-linear.
- ShiftRows: permutação de bytes dentro do bloco.
- MixColumns: mistura por transformação no corpo de Galois GF(28).
- 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 aesou/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.