05 - Criptografia de Dados
video: https://youtu.be/... no frontmatter da nota.Criptografia de Dados na Camada de Apresentação
1. Criptografia como Função de Apresentação
A criptografia, conceitualmente, é uma transformação de sintaxe: dado em texto claro (plaintext) é convertido para texto cifrado (ciphertext) e vice-versa. Por isso, no modelo OSI, a criptografia pertence naturalmente à camada de Apresentação (6). Historicamente, o SSL/TLS nasceu como uma implementação concreta dessa ideia.
Os objetivos clássicos da criptografia de rede, resumidos na tríade CIA:
- Confidencialidade: apenas o destinatário legítimo pode ler.
- Integridade: o dado não pode ser alterado sem detecção.
- Autenticidade: a origem é verificável.
2. Criptografia Simétrica
Usa a mesma chave para cifrar e decifrar. Rápida (gigabytes por segundo em hardware moderno) e adequada para grandes volumes de dados.
Algoritmos Modernos
| Algoritmo | Tamanho de bloco | Tamanho de chave | Modo | Status |
|---|---|---|---|---|
| AES-128 | 128 bits | 128 bits | GCM, CBC, CTR | Padrão NIST FIPS 197 |
| AES-256 | 128 bits | 256 bits | GCM, CBC, CTR | Recomendado para quantum-resist |
| ChaCha20 | stream | 256 bits | Poly1305 (AEAD) | RFC 8439, alternativa ao AES em mobile |
| 3DES | 64 bits | 168 bits (efetivos 112) | CBC | Obsoleto (RFC 7523) |
| Blowfish | 64 bits | 32-448 bits | CBC | Histórico, evitado hoje |
| Camellia | 128 bits | 128, 192, 256 | GCM, CBC | Padrão japonês/UE |
Modos de Operação
- ECB (Electronic Codebook): NUNCA usar — revela padrões. (Imagem "ECB penguin" clássica).
- CBC (Cipher Block Chaining): cada bloco XOR com o anterior. Vulnerável a padding oracle se mal implementado.
- CTR (Counter): cifra um contador e XOR com plaintext. Paralelizável.
- GCM (Galois/Counter Mode): AEAD — cifragem + autenticação simultânea. Padrão moderno para TLS 1.3.
- CCM (Counter with CBC-MAC): usado em wireless 802.11i (WPA2).
AEAD (Authenticated Encryption with Associated Data)
Combina confidencialidade (cifra) + integridade (MAC) em uma única operação. O "associated data" (headers, etc.) é autenticado mas não cifrado. AES-GCM e ChaCha20-Poly1305 são os AEADs dominantes.
3. Criptografia Assimétrica
Usa um par de chaves: uma pública (para cifrar/verificar) e uma privada (para decifrar/assinar). Resolve o problema de distribuição de chaves que aflige a criptografia simétrica.
RSA (Rivest-Shamir-Adleman, 1977)
- Base matemática: fatorização de primos grandes é difícil.
- Tamanho típico: 2048 bits (mínimo aceitável), 4096 bits (recomendado).
- Lento: ~10.000x mais lento que AES para mesma quantidade de dados.
- Uso real: cifrar chaves simétricas de sessão + assinaturas digitais.
- Em TLS 1.3, RSA foi removido para key exchange (mantido apenas para assinaturas).
ECC (Elliptic Curve Cryptography)
- Base matemática: logaritmo discreto em curvas elípticas sobre corpo finito.
- Mesma segurança com chaves muito menores: 256 bits ECC ≈ 3072 bits RSA.
- Algoritmos: ECDH (key agreement), ECDSA (assinaturas), Ed25519 (EdDSA).
- Mais rápido que RSA, ideal para dispositivos móveis e IoT.
- Curvas padronizadas: P-256, P-384, P-521 (NIST), Curve25519 (Daniel Bernstein), secp256k1 (Bitcoin).
DH e ECDH (Diffie-Hellman)
Permite que duas partes estabeleçam uma chave secreta compartilhada em um canal inseguro, sem nunca transmitir a chave. Base do "Perfect Forward Secrecy" em TLS 1.3.
DSA e ECDSA
Algoritmos de assinatura digital (não cifragem). Usados em certificados X.509.
4. Funções de Hash Criptográficas
| Algoritmo | Tamanho (bits) | Status |
|---|---|---|
| MD5 | 128 | Quebrado — não usar (RFC 6151) |
| SHA-1 | 160 | Depreciado (SHAttered 2017) |
| SHA-256 | 256 | Padrão atual |
| SHA-384 | 384 | SHA-2 family |
| SHA-512 | 512 | SHA-2 family |
| SHA-3 (Keccak) | variável | Padrão NIST 2015 |
| BLAKE2/3 | variável | Moderno, muito rápido |
Hashes são a base dos MACs (Message Authentication Codes) e da integridade. HMAC-SHA256 (RFC 2104) é o MAC mais usado hoje.
5. TLS — O Caso Prático
Camadas do TLS
+-------------------------------------------+
| Handshake Protocol (negociação) | }
| Change Cipher Spec (ativa cifragem) | } TLS Content Layer
| Alert Protocol (erros/warnings) | }
| Application Data (payload cifrado) | }
+-------------------------------------------+
| TLS Record Protocol (framing + MAC) | TLS Record Layer
+-------------------------------------------+
| TCP (camada 4) |
+-------------------------------------------+
Handshake TLS 1.2 (resumido)
Cliente Servidor
| ClientHello |
| - Versão TLS, Random, Cipher suites |
| ---------------------------------------->|
| |
| ServerHello |
| - Versão escolhida, Random, Cipher |
| Certificate (X.509) |
| ServerKeyExchange (DH/ECDH params) |
| ServerHelloDone |
|<---------------------------------------- |
| |
| ClientKeyExchange (DH/ECDH) |
| ChangeCipherSpec |
| Finished (criptografado) |
| ---------------------------------------->|
| |
| ChangeCipherSpec |
| Finished (criptografado) |
|<---------------------------------------- |
| |
| <== Dados da aplicação cifrados ====> |
TLS 1.3
- Handshake em 1 RTT (ou 0-RTT com
early data). - Apenas AEAD: AES-GCM, ChaCha20-Poly1305.
- Apenas ECDHE/PSK para key exchange (sem RSA key transport).
- Removidos: CBC, RC4, SHA-1, MD5, RSA key transport, compressão.
6. Certificados X.509
Certificados digitais são estruturas ASN.1 codificadas em DER (logo, objeto clássico de camada 6). Contêm:
- Chave pública do titular.
- Identidade (Common Name, SAN, organização).
- Período de validade.
- Assinatura da CA (Certificate Authority).
- Algoritmos usados.
A cadeia de confiança: o navegador confia em CAs raiz (Mozilla CA Store, ~150 entradas), que assinam CAs intermediárias, que assinam certificados finais.
7. SSL Histórico
SSL 2.0 (1995)
Primeiro release público da Netscape. Vulnerabilidades severas: MAC fraco (MD5), sem proteção contra rollback, cifragem de chave privada com RSA-PKCS#1 v1.5.
SSL 3.0 (1996)
Redesenho com MAC HMAC. Ainda inseguro hoje — em 2014, POODLE (Padding Oracle On Downgraded Legacy Encryption) permitia decriptar sessões.
Por que SSL virou TLS
Em 1999, o IETF assumiu o desenvolvimento e renomeou para TLS para evitar questões comerciais da marca Netscape. RFC 2246 = TLS 1.0, equivalente a "SSL 3.1".
8. Outras Aplicações de Criptografia em Camada 6
- PGP/GPG: e-mail assinado e cifrado (RFC 4880).
- S/MIME: e-mail corporativo com certificados X.509 (RFC 5751).
- SSH: protocolo de acesso remoto, com cifragem pós-handshake (RFC 4253).
- IPsec ESP: embora seja camada 3, o IKE (key exchange) usa princípios similares.
9. Boas Práticas Modernas
- TLS 1.3 sempre que possível.
- Ciphers AEAD apenas (AES-GCM, ChaCha20-Poly1305).
- ECDHE para Perfect Forward Secrecy.
- Certificados ECDSA P-256 em vez de RSA (menor footprint).
- HSTS (HTTP Strict Transport Security) para evitar downgrade.
- Certificate Transparency (RFC 6962) para auditoria de CAs.
- Rotação de chaves periódica para limitar exposição.
10. Conclusão
A criptografia de dados na camada de Apresentação evoluiu do SSL experimental de 1995 para o TLS 1.3 moderno, mas o conceito permanece: cifrar e autenticar dados no ponto de transição entre aplicação e transporte. Os algoritmos mudam (RC4 → AES → ChaCha20), os tamanhos de chave aumentam (RSA 1024 → 4096, ECC P-256 → P-384), mas a função da camada 6 — transformar sintaxe para garantir segurança — é a mesma. Hoje, com 90% do tráfego web sendo HTTPS, a camada de apresentação criptográfica é onipresente e silenciosa.