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

05 - Criptografia de Dados

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione 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.