Criptografia em servidores web

A tecnologia por trás do SSL/TLS é provavelmente o caso de uso de criptografia em larga escala mais bem-sucedido até hoje. A razão para tal só pode ser sua praticidade: o usuário não precisa executar nenhuma ação da sua parte para que tudo simplesmente funcione.

No entanto, este é um dos assuntos dos quais eu sempre me surpreendo ao perceber que muitos profissionais, principalmente desenvolvedores, frequentemente ignoram, desconhecendo até mesmo os princípios básicos de como as coisas funcionam.

Além disso, para que seu uso seja efetivo, administradores de sistemas e desenvolvedores precisam dispender um certo esforço na instalação e configuração dos certificados e serviços.

A falta de documentação sobre o assunto certamente contribui para esse cenário e por isso mesmo, decidi escrever algumas dicas rápidas de como se assegurar de que seu servidor web está realmente seguro.

Use chaves de pelo menos 2048 bits

Chaves RSA de 1024 bits já estão obsoletas há alguns anos. Se você ainda tem alguma chave de 1024 bits em produção, troque-as o quanto antes por chaves RSA de 2048 bits ou ECDSA de 256 bits. Elas devem continuar seguras por um bom tempo ainda. Se achar que isso é pouco, prefira chaves do tipo ECDSA. O problema desta última é que há um pequeno número de clientes que não são compatíveis, forçando a instalação de chaves dos dois tipos para poder garantir a retrocompatibilidade.

Use protocolos seguros

Hoje, há cinco protocolos disponíveis para uso no SSL/TLS: SSLv2, SSLv3, TLSv1.0, TLSv1.1 e TLSv1.2. Contudo:

  • SSLv2 é inseguro e não deve ser utilizado;
  • SSLv3 também está obsoleto não deve ser usado, o que confunde muitas pessoas;
  • TLSv1.0 é quase totalmente seguro quando usado em outros protocolos, mas exige uma cuidadosa configuração para atingir o mesmo nível de usabilidade no HTTP;
  • TLSv1.1 e TLSv1.2 não possuem problemas conhecidos até agora.

Desta forma, o TLS 1.2 deve ser seu protocolo padrão, pois oferecer alguns recursos que estão disponíveis apenas nesta versão. Se você precisa suportar clientes antigos, utilize apenas as versões 1.0 e 1.1 do TLS, e desconsidere totalmente o SSL. Atente às configurações necessárias para que o uso dessas versões sejam seguras o suficiente para proteger seus sites.

Use cifras criptográficas seguras

No SSL/TLS as cifras criptográficas são usadas para definir o quão segura será a comunicação entre cliente/servidor, sendo que as cifras modernas são capazes de alterar a comunicação de tempos em tempos, dificultando a escuta de alguém não autorizado no meio do caminho. Utilize apenas cifras que fornecem autenticação e criptografia de 128 ou mais bits. Qualquer coisa abaixo disso deve ser evitado.

Controle a seleção das cifras

Normalmente, o servidor envia uma lista com as cifras suportadas e o cliente responde com a primeira alternativa compatível que ele encontrar. Por esta razão, é importante que a sua lista esteja ordenada por ordem decrescente de eficácia.

Conclusão

Criptografia é um assunto extenso e, ao menos para a maioria dos mortais, sempre há mais o que aprender. Para ajudar, o site https://cipherli.st oferece parâmetros seguros de configuração para diversos softwares como Apache Web Server, Nginx, postfix, etc.

Para saber mais:
Wiki da Mozilla: https://wiki.mozilla.org/Security/Server_Side_TLS

Texto publicado originalmente na Revista Locaweb #60