Este guia completo explora conceitos avançados de criptografia, algoritmos e protocolos usados em sistemas modernos de comunicação segura. Ideal para desenvolvedores e profissionais de segurança.
Algoritmos de Criptografia Simétrica
AES (Advanced Encryption Standard)
O padrão ouro para criptografia simétrica, adotado pelo governo dos EUA em 2001.
Características Principais
- Tamanhos de chave: 128, 192 ou 256 bits
- Tamanho do bloco: 128 bits
- Rodadas: 10, 12 ou 14 dependendo do tamanho da chave
- Performance: Altamente otimizado, aceleração por hardware disponível
Modos Comuns
- GCM (Galois/Counter Mode): Criptografia autenticada, recomendado para a maioria dos casos de uso
- CBC (Cipher Block Chaining): Modo tradicional, requer MAC separado
- CTR (Counter): Paralelizável, usado em alguns protocolos
ChaCha20
Cifra de fluxo moderna projetada por Daniel J. Bernstein, cada vez mais popular como alternativa ao AES.
Vantagens
- Mais rápido que AES em dispositivos sem aceleração por hardware
- Implementação em tempo constante (resistente a ataques de temporização)
- Design simples, mais fácil de implementar com segurança
- Usado com Poly1305 para criptografia autenticada
Criptografia Assimétrica
RSA (Rivest-Shamir-Adleman)
Amplamente usado para troca de chaves e assinaturas digitais.
Considerações Importantes
- Tamanho mínimo da chave: 2048 bits (4096 bits recomendado para segurança de longo prazo)
- Performance: Computacionalmente caro comparado à criptografia simétrica
- Esquemas de padding: Use OAEP para criptografia, PSS para assinaturas
- Ameaça quântica: Vulnerável a computadores quânticos (algoritmo de Shor)
Elliptic Curve Cryptography (ECC)
Alternativa mais eficiente ao RSA com segurança equivalente em tamanhos de chave menores.
Curvas Populares
- Curve25519: Projetada para troca de chaves ECDH, amplamente adotada
- Ed25519: Para assinaturas digitais, usada em SSH, GPG
- P-256 (secp256r1): Padrão NIST, amplamente suportado
- P-384, P-521: Níveis de segurança mais altos
Vantagens Sobre o RSA
- ECC de 256 bits ≈ segurança RSA de 3072 bits
- Computação mais rápida
- Chaves e assinaturas menores
- Menores requisitos de largura de banda e armazenamento
Protocolos de Troca de Chaves
Diffie-Hellman (DH)
Permite que duas partes estabeleçam um segredo compartilhado em um canal inseguro.
Variantes
- DH Clássico: Implementação original
- ECDH: Versão de Curva Elíptica (mais eficiente)
- X25519: ECDH moderno usando Curve25519
Perfect Forward Secrecy (PFS)
Garante que comunicações passadas permaneçam seguras mesmo se as chaves de longo prazo forem comprometidas.
Implementação
- Gerar pares de chaves efêmeras para cada sessão
- Destruir chaves de sessão após o uso
- Usado em TLS 1.3, Signal Protocol, etc.
Funções Hash
Família SHA-2
- SHA-256: Saída de 256 bits, amplamente usado
- SHA-384, SHA-512: Níveis de segurança mais altos
- Aplicações: Assinaturas digitais, validação de certificados, hash de senhas (com técnicas adequadas)
SHA-3 (Keccak)
- Construção diferente do SHA-2 (função esponja)
- Resistente a ataques de extensão de comprimento
- Adequado para aplicações que requerem altas margens de segurança
BLAKE2/BLAKE3
- Mais rápido que SHA-2 e SHA-3
- Criptograficamente seguro
- BLAKE3: Altamente paralelizável, excelente para grandes volumes de dados
Key Derivation Functions (KDFs)
PBKDF2 (Password-Based Key Derivation Function 2)
- Propósito: Derivar chaves criptográficas de senhas
- Iterações: Mínimo de 100.000 (recomendação OWASP)
- Caso de uso: Armazenamento de senhas, derivação de chaves
Argon2
Vencedor da Password Hashing Competition (2015), recomendado para novas aplicações.
Variantes
- Argon2id: Híbrido (recomendado para a maioria dos casos de uso)
- Argon2i: Otimizado contra ataques de canal lateral
- Argon2d: Máxima resistência a ataques de GPU
scrypt
- Função com uso intensivo de memória (resistente a ataques de hardware)
- Usado por Litecoin, Tarsnap
- Bom equilíbrio entre segurança e compatibilidade
Message Authentication Codes (MACs)
HMAC (Hash-based MAC)
- Combina função hash com chave secreta
- Fornece autenticação e integridade
- Comum: HMAC-SHA256, HMAC-SHA512
Poly1305
- Autenticador de uso único
- Usado com ChaCha20 para criptografia autenticada
- Rápido e em tempo constante
Criptografia Autenticada
Por Que É Importante
A criptografia sozinha não garante integridade. Um atacante pode modificar o texto cifrado sem detecção. A criptografia autenticada resolve isso.
AEAD (Authenticated Encryption with Associated Data)
- AES-GCM: Mais amplamente suportado
- ChaCha20-Poly1305: Melhor em dispositivos móveis
- AES-CCM: Usado em alguns protocolos sem fio
Assinaturas Digitais
Assinaturas RSA
- Padding: Use PSS (Probabilistic Signature Scheme)
- Função hash: SHA-256 ou superior
- Tamanho da chave: Mínimo de 2048 bits
ECDSA (Elliptic Curve Digital Signature Algorithm)
- Assinaturas menores que RSA
- Requer geração cuidadosa de nonce (RNG fraco = chave comprometida)
- Variante determinística (RFC 6979) recomendada
Ed25519
- Determinístico (não requer RNG)
- Geração e verificação rápida de assinatura
- Assinaturas pequenas (64 bytes)
- Resistente a ataques de canal lateral
Protocolos Modernos
Signal Protocol
Protocolo de criptografia ponta a ponta de última geração usado pelo Signal, WhatsApp, Facebook Messenger.
Características Principais
- Double Ratchet: Atualiza continuamente as chaves
- Perfect Forward Secrecy: Mensagens passadas permanecem seguras
- Post-Compromise Security: Recupera-se de comprometimento de chave
- Assíncrono: Funciona mesmo quando o destinatário está offline
TLS 1.3
Versão mais recente do protocolo Transport Layer Security.
Melhorias
- Removidos algoritmos fracos e conjuntos de cifras
- Sempre fornece sigilo futuro
- Handshake mais rápido (1-RTT, opção 0-RTT)
- Server Hello criptografado
Noise Protocol Framework
Framework de protocolo criptográfico moderno para construir sistemas de comunicação seguros.
Aplicações
- WireGuard VPN
- Lightning Network
- Mensagens I2P
Criptografia Pós-Quântica
A Ameaça
Computadores quânticos podem quebrar RSA e ECC usando o algoritmo de Shor. Algoritmos simétricos são menos afetados, mas requerem chaves maiores.
Candidatos Pós-Quânticos do NIST
- Kyber: Encapsulamento de chave baseado em reticulado
- Dilithium: Assinaturas digitais baseadas em reticulado
- SPHINCS+: Assinaturas baseadas em hash
Estratégia de Transição
- Abordagem híbrida: Combinar algoritmos clássicos e pós-quânticos
- Aumentar tamanhos de chave simétrica para 256 bits
- Monitorar processo de padronização do NIST
- Planejar agilidade de algoritmo
Melhores Práticas de Implementação
Não Crie Sua Própria Criptografia
Use bibliotecas estabelecidas e revisadas por pares:
- libsodium: Alto nível, fácil de usar
- OpenSSL: Abrangente, amplamente suportado
- BoringSSL: Fork do OpenSSL do Google
- Ring: Biblioteca de criptografia Rust
Gerenciamento de Chaves
- Use módulos de segurança de hardware (HSMs) para chaves críticas
- Implemente políticas de rotação de chaves
- Nunca codifique chaves diretamente no código-fonte
- Use derivação de chaves para múltiplos propósitos
- Exclua chaves da memória com segurança após o uso
Geração Segura de Números Aleatórios
- Use RNG criptograficamente seguro (CSPRNG)
- Nunca use funções rand() padrão
- RNGs do sistema operacional: /dev/urandom (Linux), CryptGenRandom (Windows)
- Específicos da linguagem: crypto.randomBytes (Node.js), módulo secrets (Python)
Prevenção de Ataques de Temporização
- Use comparação em tempo constante para segredos
- Evite ramificação baseada em dados secretos
- Esteja ciente de ataques de temporização de cache
- Use bibliotecas projetadas com resistência a ataques de temporização
Testes e Validação
Auditorias de Segurança
- Testes de penetração regulares
- Revisões de código por especialistas em segurança
- Auditorias de segurança de terceiros
- Programas de recompensa por bugs
Conformidade
- FIPS 140-2/3: Padrão do governo dos EUA
- Common Criteria: Certificação de segurança internacional
- PCI DSS: Requisitos da indústria de cartões de pagamento
Recursos para Aprendizado Adicional
Livros
- "Cryptography Engineering" de Ferguson, Schneier e Kohno
- "Serious Cryptography" de Jean-Philippe Aumasson
- "Applied Cryptography" de Bruce Schneier
Recursos Online
- Cryptopals Crypto Challenges
- Cursos de Criptografia de Stanford (Coursera)
- IACR ePrint Archive
- Crypto Stack Exchange