Article image
Thamyrs Machado
Thamyrs Machado08/09/2023 18:34
Compartilhe

Cibersegurança: Por que um site HTTP é considerado inseguro e HTTPS seguro?

  • #Segurança da informação

Muito provavelmente você já passou por essa situação: está navegando inocentemente pela internet, vai acessar algum site, e o navegador te avisa que aquela página que você está tentando acessar possui uma conexão insegura e que invasores podem roubar seus dados.

image

Ou então, você acessa um site como o dio.me que, assim com a maioria dos web sites de hoje, possuem um ícone de cadeado ao lado da barra de pesquisa e te prometem que a conexão é segura.

image

No primeiro caso, o navegador está alertando sobre a conexão do site, que é feita através de um protocolo chamado HTTP, não ser segura. Mas por que ela é considerada insegura? Seus dados realmente podem ser roubados por invasores, como o navegador diz? E o segundo caso, onde a conexão é feita com HTTPS, será que o site é seguro mesmo? São essas as questões que abordaremos logo abaixo.

O que você vai ver neste artigo:

  • O que é HTTP
  • Como seus dados podem ser comprometidos em uma conexão HTTP
  • Exemplo prático de como seus dados podem ser roubados
  • O que é HTTPS e os protocolos TLS/SSL
  • HTTPS é realmente mais seguro?
  • Certificados TLS gratuitos são confiáveis?

Afinal, o que é HTTP?

HTTP (Hypertext Transfer Protocol) é um protocolo de transferência de documentos hipermídia (como o HTML) que foi desenvolvido para a comunicação entre navegadores e servidores web. Esse protocolo existe desde o começo dos anos 1990 e é a base essencial de toda a web. Podemos resumir seu funcionamento da seguinte forma:

  1. Pedido (Request): o cliente inicia uma solicitação ao servidor web ao digitar a URL na barra de pesquisa do navegador
  2. Processamento no servidor e resposta: O servidor recebe a solicitação, a processa (através de ações como acessar um banco de dados, executar um aplicativo, recuperar recursos, etc) e a responde inicialmente com um código de 3 dígitos, referente ao status da solicitação (se foi bem sucedida ou não). Sabe quando você acessa um site que não existe ou está indisponível e aparece o erro 404? É um exemplo de código de status! image
  3. Renderização: Se a solicitação for bem sucedida, o navegador recebe os dados da página que você está acessando e os renderiza para que você possa acessá-los.

image

Como seus dados podem ser comprometidos em uma conexão HTTP?

O HTTP é um protocolo que por padrão não é seguro, uma vez que os dados transmitidos por esse tipo de conexão não estão criptografados. Isso significa que se alguma pessoa conseguir interceptar o pacote com dados enviados entre o seu navegador e o servidor onde o site está hospedado, ela será capaz de ler as informações contidas nele.

Se estivermos falando de sites estáticos, onde não há tráfego de informações em formulários (como um site de fotos de gatinho em HTML, CSS e JS), talvez isso não seja um problema. Se você for o proprietário da aplicação, pode ser que você tenha implicações por SEO (Search Engine Optimization) e o usuário será incomodado pelo navegador com um aviso de segurança, além de dar um aspecto amador no seu site, mas como não há dados para serem roubados, não é algo tão grave.

No entanto, se o site possui formulários para cadastro de informações pessoais, isso será um problema. Imagine a seguinte situação: você está conectado a uma rede de Wi-fi pública, onde qualquer pessoa consegue acessá-la; em seguida, acessa um site de compras com conexão HTTP e cria uma conta, informando seus dados pessoais, e-mail e senha; por fim, realiza uma compra informando dados de cartão de crédito. Se alguma pessoa mal-intencionada conseguir capturar o pacote contendo os dados do formulário que você inseriu, ela vai conseguir ler tudo em texto plano, e este é o motivo do protocolo ser considerado inseguro.  

Exemplo prático de como seus dados podem ser roubados

Vamos simular um ataque para mostrar na prática como os dados podem ser roubados em uma conexão com o protocolo HTTP. Para isso, vamos utilizar um software utilitário chamado Wireshark, que é uma ferramenta de análise de tráfego de rede (também chamado de sniffer de rede). 

Iremos acessar uma aplicação web e preencher um formulário com dados sensíveis, simulando a vítima. Em seguida, simulando o atacante, vamos capturar os pacotes no tráfego da rede e tentar ler as informações inseridas pelo usuário. 

É importante ressaltar que violar a privacidade de outras pessoas é crime, portanto, caso tenha interesse de replicar o laboratório a seguir, você deve fazê-lo em uma rede privada onde preferencialmente apenas você tenha acesso.

  1. Iniciaremos a captura dos pacotes no tráfego da rede usando um sniffer. Neste caso, estamos utilizando uma máquina virtual, onde o servidor web da aplicação, a máquina da vítima e a máquina do atacante estão dentro da mesma rede.image
  2. Agora que começamos a monitorar o tráfego da rede, vamos acessar o site com a conexão insegura através da máquina da vítima e preencher um formulário com login e senha.*image
  3. Voltando para a máquina do atacante, podemos filtrar todos os pacotes “HTTP” que foram capturados. Neste caso, existem 2 pacotes na lista, o que nos interessa no momento é o pacote do tipo “POST”.image
  4. Ao abrir o pacote, somos capazes de ler todas as informações inseridas pelo usuário no formulário em texto plano, incluindo sua senha (indicada pelo campo “password”).image

*A aplicação web apresentada acima é o OWASP Mutillidae II | OWASP Foundation

O que é HTTPS?

Falamos sobre os problemas, mas cadê a solução? Existe uma versão mais segura do HTTP chamada HTTPS (com um ‘S’ de “Secure”), que diferente de seu “irmão”, possui criptografia. Em conformidade com a Secretaria de Segurança da Informação e Cibernética, o principal motivo para a utilização do HTTPS é a autenticação do site acessado e a proteção da privacidade e integridade dos dados trocados durante o transporte de informações.

Para verificar se uma aplicação web é segura de acordo com a criptografia dos dados em trânsito, basta verificar se há o ícone de um cadeado antes da barra de endereços em seu navegador. Além disso, a URL será composta por “https://”, que antecede o domínio e as demais informações. A existência desses dois itens significa que o site possui um certificado SSL ou TLS válido.

image

Protocolos SSL/TLS - Como podem ser aliados da segurança de seus dados

O HTTPS utiliza os protocolos de segurança baseados em criptografia de informações SSL (Secure Sockets Layer) e TLS (Transport Layer Security). O SSL foi pioneiro na tecnologia de criptografia de dados em trânsito, no entanto, por possuir algumas limitações foi substituído pelo TLS. Mesmo que o SSL tenha sido substituído pelo TLS, a nomenclatura SSL ainda é amplamente utilizada como um sinônimo.

Uma conexão HTTPS entre um cliente e servidor é realizada através de um processo chamado “Handshake TLS” (em uma tradução livre, “aperto de mãos TLS”), e após bem-sucedida esta etapa, uma conexão segura é estabelecida entre os dois pontos. Esse processo consiste em alguns passos, listados abaixo:

  1. Client Hello - É um pacote que contém a primeira mensagem enviada por um cliente durante o Handshake. Esta mensagem possui algumas informações cruciais para a negociação da segurança da comunicação, como a versão do TLS e uma lista de algoritmos de criptografia suportados pelo cliente; 
  2. Server Hello - É um pacote que contém a segunda mensagem do handshake, enviada pelo servidor como uma resposta ao “client hello”. A mensagem conterá a versão do TLS com a qual o servidor deseja estabelecer a conexão, e a escolha da suíte de criptografia de acordo com a lista de algoritmos suportados informados pelo cliente. 
  3. Certificate - O servidor envia o certificado digital (SSL/TLS) que contém sua chave pública e outras informações relevantes. Esta mensagem é enviada após o "Server Hello" e antes de qualquer outra troca de mensagens.
  4. Key Exchange - Após o servidor enviar o certificado, é necessário realizar a troca de chaves de sessão. A troca de chaves de sessão envolve a geração de uma chave secreta compartilhada que será usada para criptografar e descriptografar as mensagens durante a sessão. 
  5. Autenticação do servidor - O cliente verifica a autenticidade do certificado digital do servidor. Ele verifica se o certificado foi emitido por uma autoridade de certificação confiável e se o nome de domínio no certificado corresponde ao nome de domínio do servidor. 
  6. Finished - Após a conclusão bem-sucedida das etapas anteriores, tanto o cliente quanto o servidor podem gerar um resumo criptográfico das mensagens de handshake até o momento e enviá-lo ao outro como parte da mensagem Finished.
  7. Comunicação segura - Após a conclusão do handshake, a comunicação entre o cliente e o servidor estará protegida por meio da chave de sessão compartilhada e dos algoritmos de criptografia negociados durante o handshake. Todas as mensagens subsequentes serão criptografadas.

image

Análise de tráfego HTTPS no Wireshark

Anteriormente demos uma olhada nos pacotes HTTP de uma rede dentro do wireshark, mas como é que visualizamos os pacotes HTTPS? Neste caso, ele aparece como “TLS” (o protocolo de segurança que acabamos de mencionar) no filtro de pesquisa. Através do sniffer conseguimos visualizar todo o processo de handshake do TLS.

image

  1. Client Hello (pacote No. 810): Esse é o pacote inicial do handshake TLS, por parte do cliente;
  2. ACK (pacote No. 817): Esse pacote TCP indica que o servidor recebeu com sucesso o “Client Hello” enviado pelo cliente e está reconhecendo isso. Ele não faz parte do TLS, mas trabalha em conjunto com ele;
  3. Server Hello (pacote No. 823): O servidor envia uma resposta ao cliente com informações sobre algoritmos e protocolos que serão usados para configurar a criptografia usada na comunicação;
  4. Client Key Exchange (pacote No. 824): aqui é o momento onde as chaves de sessão são compartilhadas entre o servidor e o cliente;
  5. Application Data (pacote No. 825): após concluído o handshake, os dados contidos na aplicação são transmitidos e recebidos entre o cliente e o servidor com criptografia estabelecida.

Durante toda a comunicação, os dados são criptografados e não seremos capazes de visualizar o conteúdo original a menos que tenhamos posse da chave de sessão. Os dados mostrados abaixo trata-se do conteúdo do primeiro pacote “Application Data” em texto criptografado em hexadecimal/ASCII.

image

HTTPS é realmente seguro?

Esta seria parte da resposta da nossa pergunta inicial: como o HTTPS possui criptografia em trânsito, teoricamente os dados não vão poder roubados por terceiros, mesmo que os pacotes com as mensagens sejam capturados, o atacante não será capaz de visualizar seu conteúdo original. Além disso, alguns certificados TLS conseguem provar a autenticidade do site para o navegador, e por isso ele considera a aplicação como "segura".

No entanto, deve-se atentar que segurança é algo relativo. Embora tenham sido resolvidos os problemas de criptografia existentes em uma conexão HTTP, sites com HTTPS não necessariamente são seguros, apenas significa que existe criptografia.

Sites fraudulentos modernos podem muito bem possuir conexão HTTPS para parecerem legítimos e roubar seus dados de outras formas. Além disso, se o certificado não for válido (expirado ou não reconhecido pelo navegador), o seu browser vai reclamar porque ele não será capaz de verificar a autenticidade do site (veja mais em: Is it safe to visit a webpage with an expired SSL certificate? - OpenTechTips).

image

Certificados TLS gratuitos: confiar ou temer?

Os certificados TLS podem ser tanto pagos quanto gratuitos. Geralmente as organizações optam por certificados de Autoridades de Certificação comerciais. Isso é comum em empresas e organizações que desejam um alto nível de confiabilidade e suporte, além de garantias adicionais, como garantias financeiras em caso de quebra da segurança.

Mas e os certificados gratuitos? Há algum problema com eles? A resposta é: depende. Existem certificados TLS gratuitos emitidos por autoridades certificadoras confiáveis, como é o caso da Let's Encrypt (letsencrypt.org). No entanto, é necessário verificar se a autoridade certificadora é realmente confiável, e ter em mente que por se tratar de uma ferramenta gratuita, pode ser que você não tenha um nível de segurança garantido, não terá apoio técnico na configuração e nem garantia financeira em caso de falha.

Conclusão

Finalmente conseguimos compreender o que é HTTP, quais as diferenças entre ele e o HTTPS (uma letra pode fazer muita diferença, certo?). Além disso, podemos entender brevemente como funcionam os protocolos de segurança SSL/TLS e verificar com demonstrações práticas como nossos dados poderiam ser acessados (ou não) através de uma ferramenta de análise de tráfego de rede.

Ao analisarmos todo o aprendizado até aqui, podemos concluir que sites HTTP são considerados inseguros pelo fato de não utilizarem os protocolos de segurança SSL e TLS, esses protocolos são relacionados ao uso da criptografia de dados em trânsito, portanto, ao acessar um site HTTP que possui formulário de cadastro ou login, estamos correndo o risco de comprometer nossos dados, tornando a conexão insegura.

Também aprendemos que segurança é algo relativo, e podemos afirmar que apesar de os sites HTTPS serem considerados seguros pelo nosso navegador, isso não significa que estamos livres de sermos vítimas de pessoas mal-intencionadas, o que o nosso navegador quer dizer é que, ao estabelecer uma conexão com o servidor do site, as informações trocadas serão criptografada em trânsito, pois o servidor utiliza os protocolos SSL e/ou TLS. Com ele pode ser ruim, mas sem é ainda pior, não é?

Se você for um programador e/ou aspirante a DevOps que pretende publicar um site no ar, lembre-se de configurar bem questões de criptografia e habilitar uma conexão em HTTPS na sua aplicação. Não faça gambiarra quando o assunto for segurança, e nesse caso em específico não tem desculpa, hein? Existem certificados gratuitos e confiáveis, como o da Let’s Encrypt, para caso você não possa investir em um certificado comercial, só tenha certeza de verificar que o certificado que você estiver utilizando é realmente confiável. 

Referências:

PONCE, Lucas M. et al. Caracterização Escalável de Vulnerabilidades de Segurança: um Estudo de Caso na Internet Brasileira. Disponível em: Anais do XL Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos. SBC, 2022. p. 433-446.

Glossário de Segurança da Informação — Gabinete de Segurança Institucional (www.gov.br)

O que acontece em um handshake TLS? | Handshake SSL | Cloudflare

HTTP: entenda o que é, para que serve e como funciona (rockcontent.com)

Protocolo HTTP: entenda o que é e para que serve! (hostgator.com.br)

Encryption in Transit and Rest - Push Build Test Deploy

TLS e SSL: saiba o que são estes certificados de segurança e suas diferenças (rockcontent.com)

O que é o 'Let's Encrypt'? Entenda como funciona a certificação digital na web | Blog do Altieres Rohr | G1 (globo.com)

Certificado SSL: Saiba o que é e porque utilizá-lo no seu site (certificadodigital.com.br)

https://serasa.certificadodigital.com.br/blog/mercado/o-que-e-o-certificado-digital-ssl-e-como-ele-pode-proteger-informacoes/

https://cve.mitre.org/

Imagem códigos de status HTTP: OC Merry | Online file conversion blog (online-convert.com)

Compartilhe
Comentários (14)
Amanda Fernandes
Amanda Fernandes - 08/09/2023 18:40

Excelente artigo! Essencial sabermos a diferença entre HTTP x HTTPS e sabermos a importância de usar os certificados TLS de agências confiáveis quando formos colocar um site no ar! Parabéns!

Marcos Oliveira
Marcos Oliveira - 19/09/2023 15:48

Pra mim o seu artigo foi o melhor, Thamyrs. Tá muito bonito e agradável de ler. Parabéns!

Gabriel Assis
Gabriel Assis - 18/09/2023 20:58

Artigo muito bem feito! Algo que utilizamos com frequência, mas dificilmente nos questionamos como funciona. O que mais me surpreendeu foram as referências usadas para construí-lo. Digo isso por conta de que, devido à facilidade de produção textual fornecida pelas AIs, textos autorais estão cada vez mais difíceis de se encontrar.

MM

Maria Machado - 08/09/2023 19:24

Artigo muito bem escrito! Mesmo eu que sou leiga no assunto, tive bastante facilidade em compreender.

Carla Vieira
Carla Vieira - 08/09/2023 20:17

Excelente artigo. Parabéns!!

Malcon Conceição
Malcon Conceição - 08/09/2023 21:08

Muito bom

Cleverton Junior
Cleverton Junior - 09/09/2023 03:58

Excelente artigo !!!

VS

Vitor Santos - 09/09/2023 11:48

Muito bom conseguir compreende muito bem a informações repassada por você.

CP

Camila Peres - 13/09/2023 09:53

Meus parabéns pelo artigo!

Karoline Ferreira
Karoline Ferreira - 13/09/2023 10:13

Ótimo artigo! Muito bem escrito, parabéns!

BO

Bianca Oliveira - 13/09/2023 10:17

Esse artigo esclareceu muitas coisas. Obrigada, me ajudou muito.

IB

Isabela Baséggio - 11/09/2023 19:07


Ótimo artigo! Ele oferece uma abordagem clara e informativa sobre a importância de proteger nossos dados online. Além de explicar de forma simples o que é HTTP e como nossos dados podem ser vulneráveis em conexões HTTP, ele também ilustra com um exemplo prático, tornando o conteúdo mais tangível. A introdução ao HTTPS e aos protocolos TLS/SSL é fundamental para compreender as soluções de segurança disponíveis, e a discussão sobre a confiabilidade dos certificados TLS gratuitos acrescenta uma perspectiva valiosa. 

Eduardo Porto
Eduardo Porto - 11/09/2023 18:16

Fenomenal o artigo, sou entusiasta da área e reafirmo a importância de artigos completos e bem estruturados como esse para a sociedade, a plataforma DIO tem como foco jovens que almejam alguma área de T.I, e ter um conhecimento no mínimo básico de defesa cibernética deveria ser mandatório para quem utiliza qualquer meio de comunicação digital, como citado no artigo acima mesmo sites com proteção do protocolo HTTPS um ataque pode ser iminente, inclusive ressalto a importância de analisarem muito bem os links que clicam e a procedência, um entusiasta com o mínimo de vontade consegue criar um link para um site de phishing (técnica para roubar informações pessoais) direto com protocolo HTTPS atualizado e que não marca como sendo potencialmente perigoso, essa técnica atrelada à um mínimo detalhamento da estrutura HTML e CSS do site podem criar uma aparência de um site conhecido, mas que no momento de adicionar seu usuário e senha, enviam o login para o hacker. Minha recomendação para todos que lerem o comentário é sempre se preocupar com sua segurança online, muitas vezes erros bobos podem acabar gerando problemas pra vida toda, lembre-se: se você guarda tudo digitalmente, essas informações estão sujeitas a serem roubadas.

AM

Alice Machado - 08/09/2023 18:53

Parabéns pelo artigo, muito interessante!