Qual é a diferença entre HTTP e HTTPS?

rafael-nercessian
rafael-nercessian

Compartilhe

HTTP é o protocolo que transfere texto para um servidor web. HTTPS é a versão segura do HTTP, que criptografa as mensagens.


Você já deve ter visto websites que possuem em sua URL o símbolo de um cadeado e o nome HTTPS logo ao lado.

Mas, afinal de contas, você sabe a diferença entre HTTP e HTTPS?

Se não sabe, não tem problema. É justamente sobre isso que trataremos no artigo, com exemplos práticos. Vamos lá?

O que é HTTP?

HTTP (Hypertext Transfer Protocol) é um protocolo que serve para transferir texto para um servidor web.

Em princípio, o método era apenas o de "pegar" (get) o conteúdo de um servidor.

Mas, com o passar do tempo, surgiu a necessidade de também enviar informações.

É o que acontece, por exemplo, quando estamos fazendo uma compra na internet. Nesse caso, enviamos dados pessoais e senha do cartão de crédito.

O HTTP transforma todos os dados e senhas como um texto para o servidor, como no exemplo:

Tela que mostra textos legíveis dos dados e das senhas em HTTP

Isso significa que, alguém pode ter acesso aos dados pessoais e à senha do cartão de crédito.

Então, qualquer aplicação que usa protocolo HTTP e precisa de dados sensíveis, tem vulnerabilidade para o cliente final.

Conhecendo esse problema, todo site que opera no protocolo HTTP precisa encontrar uma forma de se proteger. É nesse cenário que entra o HTTPS.

Leia também:

Banner promocional da Imersão Cloud DevOps da Alura e Google Cloud com o texto "INSCRIÇÕES ABERTAS PARA A PRIMEIRA EDIÇÃO DA IMERSÃO CLOUD DEVOPS" e a informação de 3 aulas gratuitas com certificado. A imagem mostra um desenvolvedor focado usando fones de ouvido em um computador, com uma colega trabalhando ao fundo, e um botão chamativo com a frase "GARANTA A SUA VAGA".

O que é HTTPS?

HTTPS é a versão segura do protocolo HTTP, que criptografa as mensagens entre o navegador e o servidor.

Nesse nosso exemplo, consideraremos a página de login da Alura usando os mesmos dados que usamos na aplicação anterior em HTTP.

Olha só o resultado:

Perceba que a informação não faz sentido algum. O que aconteceu dessa vez?

O HTTPS transforma os dados, fazendo com que não seja mais possível descobri-los.

Isso é essencial para proteger dados confidenciais e garantir que as transações do site sejam seguras.

Como o HTTPS funciona?

O HTTPS funciona a partir de um processo de chaves simétricas e assimétricas.

O que é o processo de chaves simétricas

Vamos pensar no seguinte exemplo: Roberto quer enviar uma carta para Luísa. Para evitar que outra pessoa leia o conteúdo da carta, decide colocá-la em uma caixa com um cadeado.

A Luísa recebe a caixa e usa uma cópia da chave para abrir a caixa e ler o conteúdo da carta.

Para responder à mensagem recebida, Luísa coloca de volta o cadeado e usa a mesma chave para trancar a caixa.

Perceba que só temos uma chave nesse processo, a mesma que é usada para trancar (criptografar) e destrancar a caixa (descriptografar).

Quando temos a mesma chave utilizada para criptografar e descriptografar um dado, chamamos esse processo de criptografia de chave simétrica.

Confira a seguir, alguns exemplos de algoritmos que utilizam esse sistema de chave simétrica:

  • DES (Data Encryption Standard)
  • AES (Advanced Encryption Standard)

Como funciona o processo de chaves assimétricas?

Quando usamos a mesma chave para criptografar e descriptografar, é necessário encontrar uma forma de enviá-la para que a pessoa destinatária consiga destrancá-la e ler o conteúdo.

Mas o que acontece se alguém consegue interceptar essa carta? Essa pessoa conseguiria acessar todas as informações da mesma forma, certo?

Neste caso, só usar o processo de chaves simétricas pode não resolver completamente o problema.

Sendo assim, seguindo no exemplo das cartas, a ideia é que o Roberto utilize um cadeado especial que terá 3 posições:

  1. Trancado
  2. Destrancado
  3. Trancado

Além disso, o Roberto terá duas chaves: a primeira só serve para ordem crescente (posição 1,2 e 3) e a outra só para ordem decrescente (posição 3,2 e 1).

O Roberto decide trancar a caixa com a primeira chave, a que consegue operar o cadeado na ordem crescente.

Dessa forma, para poder trancar a caixa, vai estar na posição 3. Roberto não envia essa chave. É uma chave privada.

Ele enviará para Luísa a segunda chave, que opera na ordem decrescente (posição 3, 2 e 1). É a chave pública.

Quando a caixa chegar até a Luísa, ela vai estar trancada na posição 3.

Com a chave pública que recebeu, que consegue operar na ordem decrescente, Luísa consegue retomar para a posição 2 e abrir a caixa.

Ao responder a mensagem, trancará com a chave pública para a posição 1 (trancada novamente).

Ao receber a caixa, Roberto tem a chave que opera na ordem crescente e pode voltar a abrir o cadeado para a posição 2 e acessar o conteúdo da mensagem.

Existem, portanto, duas chaves. A chave privada é usada para trancar (criptografar) e a outra para destrancar (descriptografar).

Quando temos duas chaves, chamamos esse processo de criptografia de chave assimétrica.

Confira exemplos de alguns algoritmos que utilizam esse sistema de chave assimétrica:

  • RSA (sendo as iniciais dos sobrenomes de seus desenvolvedores: Ron Rivest, Adi Shamir, e Leonard Adleman);
  • DSA (Digital Signature Algorithm).

Como implementar o protocolo de segurança do HTTPS?

O protocolo HTTPS usa os princípios de chaves simétricas e assimétricas durante o processo de comunicação.

Dentro do HTTPS existe um protocolo responsável por inserir essa camada de criptografia, vamos conhecer algum deles:

SSL

O primeiro protocolo desenvolvido para esse fim foi de autoria da empresa Netscape e recebeu o nome de Secure Sockets Layer 1.0, ou mais popularmente conhecido como SSL v1.0.

O protocolo SSL sofreu modificações e melhorias até chegar na sua última versão, a SSL v3.0.

Porém, ao longo dos anos foram descobertas algumas vulnerabilidades nesse protocolo.

Uma dessas vulnerabilidades poderia expor informações criptografadas e acabou sendo chamada de Poodle (Padding Oracle on Downgraded Legacy Encryption) — para mais detalhes, segue o link do governo norte-americano alertando sobre o assunto vulnerabilidade descoberta no protocolo SSL.

TLS

Uma vez que o protocolo SSL v3.0 apresentou essas vulnerabilidades, foi necessário o desenvolvimento de um novo tipo de protocolo para atribuir essa camada de criptografia de uma maneira mais segura.

Esse novo protocolo recebeu o nome de Transport Layer Security, TLS 1.0 sofrendo adaptações e melhorias ao passar do tempo, chegando na versão mais atual até o momento de escrita desse post, a versão TLS 1.2

O princípio de utilização do TLS é unir as forças das chaves assimétricas e simétricas durante o processo de comunicação.

Uma vez que as chaves assimétricas possuem um processo de criptografia envolvendo duas chaves distintas, consequentemente há um maior tempo de processamento.

Por isso, o TLS utiliza esse processo na fase de autenticação entre o cliente e o servidor.

Em seguida, ele faz uso das chaves simétricas que possuem um processo de criptografia com apenas uma chave.

Logo, necessita de menos tempo para seu processamento.

Uma vez que podemos ter uma grande quantidade de dados sendo transmitidos, as chaves simétricas serão mais rápidas para processar toda essa informação e será utilizado na fase de transporte dos dados, também conhecido como bulk.

Caso tenha mais interesse nesse mundo de protocolos e segurança, não deixe de ver nossos cursos sobre:

Veja outros artigos sobre DevOps