No dia a dia lidando com servidores e aplicações na web, um mesmo termo técnico pode carregar significados completamente distintos dependendo do contexto. Um exemplo clássico disso é a palavra cifra.
Quando surge uma discussão sobre "ataques de cifra a sites e servidores", é muito comum haver uma confusão imediata entre dois universos: o sequestro de dados por ransomware e as cifras de transporte em conexões seguras (SSL/TLS).
Muitos encaram a cifra apenas como "um detalhe da configuração do certificado SSL". Na prática, ela é o motor matemático que viabiliza ou compromete toda a segurança dos dados em trânsito.
Abaixo, desmistifico essa diferença conceitual, explico a anatomia de um cipher suite, o fluxo do handshake, os grandes ataques históricos (Heartbleed, POODLE, FREAK) e os desafios reais de compatibilidade ao aplicar o hardening no Nginx e no Apache.
1. O que é cifra e onde nasce a confusão?#
Criptografia é a ciência de transformar dados legíveis (plaintext) em um formato codificado (ciphertext) e vice-versa. Esse processo se divide em dois modelos matemáticos:
- Cifras Simétricas (chave secreta única): Usam a mesma chave para cifrar e decifrar (como AES, ChaCha20, 3DES e Blowfish). Operam como cifras de bloco (blocos fixos de 128 ou 256 bits) ou de fluxo (byte a byte).
- Cifras Assimétricas (par de chaves): Utilizam uma chave pública para codificar e uma chave privada correspondente para decodificar (como RSA e Curvas Elípticas / ECDSA).
┌─────────────────────────────────────────────────────────────────────────────┐
│ O TERMO "CIFRA" NA PRÁTICA │
├──────────────────────────────────────┬──────────────────────────────────────┤
│ No Contexto de Extorsão (Ransomware) │ No Contexto de Servidores Web (TLS) │
├──────────────────────────────────────┼──────────────────────────────────────┤
│ • Ação destrutiva no disco rígido │ • Escudo da conexão em trânsito │
│ • Cifra bancos de dados e backups │ • Negociada no aperto de mão (HTTPS) │
│ • O atacante exige resgate financeiro│ • Protege senhas e dados de cookies │
└──────────────────────────────────────┴──────────────────────────────────────┘
Em servidores web (Nginx, Apache), servidores de e-mail (Exim, Postfix, Dovecot) ou transferência segura (FTPS), cifra refere-se ao Cipher Suite (conjunto de cifras) negociado dinamicamente no handshake. Aqui, a cifra é o escudo que protege o canal de tráfego.
2. Anatomia de um cipher suite em SSL/TLS#
Quando um cliente abre uma conexão segura, o navegador e o servidor realizam o aperto de mão TLS para combinar as regras criptográficas da sessão.
Um cipher suite moderno é composto por quatro elementos fundamentais:
$$\text{Cipher Suite} = \text{Troca de Chaves} + \text{Autenticação} + \text{Cifra de Massa} + \text{Integridade (MAC/Hash)}$$
- *Troca de Chaves (Key Exchange):* Como cliente e servidor estabelecem um segredo temporário compartilhado sem transmiti-lo abertamente pela rede (ex.: ECDHE ou DHE).
- Autenticação: Como o servidor comprova sua identidade perante o cliente por meio do certificado digital (ex.: RSA ou ECDSA).
- *Cifra em Massa (Bulk Encryption):* O algoritmo simétrico que criptografa o fluxo real de dados da aplicação em alta velocidade (ex.: AES-128-GCM, AES-256-GCM ou ChaCha20-Poly1305).
- *Integridade (MAC / Hash):* Mecanismo que valida matematicamente que nenhum pacote foi alterado no trânsito (ex.: SHA-256 ou integrado via AEAD).
3. Como o handshake negocia a cifra no fio#
Ao receber uma requisição HTTPS ou conexão segura de e-mail, o fluxo segue etapas bem definidas:
- ClientHello: O cliente inicia o contato informando a versão máxima de TLS suportada e enviando a lista de cipher suites aceitos, por ordem de preferência.
- Avaliação e Escolha: O servidor cruza a lista do cliente com as suítes permitidas em seu arquivo de configuração (
nginx.confoussl.conf) e seleciona a opção mais segura em comum. - Troca de Chaves Efêmera: Utilizando algoritmos como ECDHE (curva elíptica), ambas as pontas geram a chave de sessão em memória sem que ela trafegue no cabo.
- Encapsulamento: A partir desse instante, todas as requisições HTTP, payloads e cookies viajam blindados pela cifra simétrica escolhida.
4. Radiografia dos ataques históricos a cifras#
Ao longo dos anos, brechas em bibliotecas e protocolos obsoletos forçaram a descontinuação de padrões antigos:
- Heartbleed (2014 – CVE-2014-0160): Bug de validação de memória (buffer over-read) na extensão Heartbeat do OpenSSL. Permitía que atacantes lessem a memória RAM do servidor, vazando chaves privadas, senhas e tokens de sessão.
- POODLE (2014): Ataque MitM explorando o preenchimento (padding) no modo CBC do antigo SSL 3.0. Forçava o downgrade de conexões para extrair cookies byte a byte.
- FREAK e LOGJAM (2015): Resquícios de legislações da década de 1990 que limitavam cifras de exportação a 512 bits. Máquinas modernas conseguem fatorar essas chaves em poucas horas para decifrar a sessão.
- DROWN (2016): Ataque entre protocolos onde servidores modernos com TLS 1.2 que mantinham SSLv2 ativo em portas secundárias (como IMAP/SMTP no mesmo IP) permitiam quebrar conexões TLS reutilizando a mesma chave RSA.
- BREACH (2013): Ataque lateral explorando a compressão HTTP (gzip) para extrair tokens CSRF medindo sutis variações de tamanho nas respostas.
5. Configuração segura na prática (hardening)#
Para proteger seu servidor web e garantir nota máxima em auditorias (como SSL Labs):
- Desative protocolos legados: Mantenha apenas TLS 1.2 e TLS 1.3 ativos (remova SSLv2, SSLv3, TLS 1.0 e 1.1).
- Priorize Forward Secrecy (PFS): Use apenas ECDHE ou DHE forte; assim, o vazamento futuro da chave privada não permite decifrar o histórico de tráfego.
- Descarte cifras fracas: Remova RC4, 3DES, suites CBC sem mitigação e chaves de exportação.
Configuração para Nginx (nginx.conf ou bloco de site)#
server {
listen 443 ssl http2;
server_name seusite.com.br;
# Certificados SSL
ssl_certificate /etc/ssl/certs/seusite.com.br.crt;
ssl_certificate_key /etc/ssl/private/seusite.com.br.key;
# 1. Protocolos estritamente seguros
ssl_protocols TLSv1.2 TLSv1.3;
# 2. Suites de Cifras Fortes para TLS 1.2 (TLS 1.3 gerencia suas proprias cifras automaticamente)
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# 3. Parametros Diffie-Hellman customizados (2048+ bits)
# Gerar via: openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# 4. Sessoes e Hardening
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# 5. Desativar compressao para mitigar ataques de oraculo
gzip off;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
Configuração para Apache (ssl.conf ou virtualhost)#
<VirtualHost *:443>
ServerName seusite.com.br
DocumentRoot /var/www/html
SSLEngine on
# Certificados
SSLCertificateFile /etc/ssl/certs/seusite.com.br.crt
SSLCertificateKeyFile /etc/ssl/private/seusite.com.br.key
# 1. Apenas TLS 1.2 e TLS 1.3
SSLProtocol -all +TLSv1.2 +TLSv1.3
# 2. Lista restrita de cifras modernas
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder off
# 3. Desativar compressao SSL (combate CRIME/BREACH)
SSLCompression off
</VirtualHost>
O desafio operacional: segurança máxima vs. compatibilidade#
Ao aplicar configurações rígidas de segurança, é comum se deparar com impactos no mundo real:
- Sistemas e Scripts Legados: Aplicações legadas em linguagens antigas ou integrações ERP desatualizadas que não suportam TLS 1.2/1.3 perdem a capacidade de completar o handshake.
- Clientes de E-mail Desatualizados: Dispositivos antigos que tentam se comunicar via IMAP/POP3/SMTP com cifras obsoletas (como 3DES ou RC4) começam a apresentar erros de conexão.
A segurança dos servidores modernos não pode ser comprometida para acomodar softwares obsoletos. A abordagem recomendada é manter bibliotecas do servidor (OpenSSL) atualizadas, adotar cifras autenticadas (GCM / Poly1305) com Forward Secrecy e orientar a atualização dos clientes na ponta.
Este artigo foi útil?
Deixe uma reação rápida para apoiar o conteúdo:
Este post está licenciado sob CC BY-NC.



Comentários
Participe da discussão abaixo.
0 comentários