Cifras em servidores web: da confusão conceitual com ransomware ao hardening real de SSL/TLS
Voltar para blog

Cifras em servidores web: da confusão conceitual com ransomware ao hardening real de SSL/TLS

28/09/2026 · 5 min · Servidores

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:

┌─────────────────────────────────────────────────────────────────────────────┐
│                            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)}$$

  1. *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).
  2. Autenticação: Como o servidor comprova sua identidade perante o cliente por meio do certificado digital (ex.: RSA ou ECDSA).
  3. *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).
  4. *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:

  1. 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.
  2. Avaliação e Escolha: O servidor cruza a lista do cliente com as suítes permitidas em seu arquivo de configuração (nginx.conf ou ssl.conf) e seleciona a opção mais segura em comum.
  3. 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.
  4. 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:


5. Configuração segura na prática (hardening)#

Para proteger seu servidor web e garantir nota máxima em auditorias (como SSL Labs):

  1. Desative protocolos legados: Mantenha apenas TLS 1.2 e TLS 1.3 ativos (remova SSLv2, SSLv3, TLS 1.0 e 1.1).
  2. 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.
  3. 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:

  1. 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.
  2. 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:

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários