maio 21, 2018

[Segurança] Testando a qualidade da cifra SSL usada em seu site

Existem dezenas de combinações possíveis para as cifras de criptografia e troca de chave que podem ser utilizadas em uma comunicação SSL/TLS. Estão disponíveis desde as mais seguras até algumas com algoritmos de criptografia e assinatura digital mais fracos.

A nomenclatura adotada por padrão, para esses conjuntos de cifra, indicam o algoritmo de troca de chaves (ex: RSA, ECDHE), o algoritmo de assinatura, o de criptografia simétrica (utilizado para a comunicação de dados) e de autenticação de mensagem.


Isso acontece porque o protocolo SSL/TLS permite que o servidor e o cliente negociem que cifras vão utilizar para troca de chaves, assinatura, criptografia e autenticação da mensagem, dentro das várias suportadas por padrão. Sempre é escolhido o conjunto de cifras mais seguro entre as cifras suportadas por ambas as partes (cliente e servidor). Isso faz parte do "SSL Handshake" que acontece no início de uma conexão SSL.


Um navegador web, por exemplo, pode se conectar a um servidor usando qualquer uma das opções de cifras que o servidor fornece e que também sejam suportadas pelo navegador. Assim, se o site oferecer algumas opções seguras (por exemplo, troca de chave com ECDH), mas também algumas opções fracas (como a velha criptografia DES), os usuários podem se conectar com qualquer uma das opções disponíveis. Normalmente o browser e o servidor web negociam a cifra mais forte que seja comum entre os dois, mas um atacante, nesse caso, pode tentar forçar o uso de algoritmos fracos para explorar a conexão da vítima.

O tipo de cifra usada no SSL é algo que pode (e deve!) ser configurado nos servidores, seja ele um servidor Web Apache, a comunicação com um host com VMware, uma API, o pacote Schannel da Microsoft, etc.



A melhor forma que eu conheço para avaliar se a configuração SSL do seu site fornece opções seguras é através do site SSL Test, mantido pela Qualys (https://www.ssllabs.com/ssltest/). Ele avalia as cifras aceitas por padrão em seu site Web, simula os handshake desde vários browsers diferentes, verifica se estão sendo usadas cifras frágeis ou combinações associadas a vulnerabilidades conhecidas, e no final, gera uma pontuação para indicar se a configuração está boa ou ruim. O ideal, claro, é obter nota máxima, "A".


Entre outras informações interessantes, o SSL Test identifica quais são os conjuntos de cifras suportadas pelo servidor web e simula o handshake com diferentes versões de browser, para identificar que cifra cada browser irá adotar como padrão.



Nenhum comentário:

Creative Commons License
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of my employee.