Diferença entre HTTP e HTTPS
Quando você abre um site, o navegador e o servidor trocam dados.
O mecanismo básico usado nessa troca da Web é o HTTP. E o mecanismo para realizar a comunicação HTTP com segurança é o HTTPS.
HTTPS não é simplesmente "um mecanismo que criptografa o conteúdo da comunicação". O ponto importante é dificultar espionagem, adulteração e falsificação por terceiros que estejam no meio da comunicação.
Por isso, no HTTPS, três pontos são especialmente importantes.
- Dificultar que o conteúdo da comunicação seja lido no caminho
- Dificultar que o conteúdo da comunicação seja alterado no caminho
- Facilitar a confirmação de que a outra parte da comunicação é a parte pretendida
Ou seja, HTTPS é um mecanismo muito importante como proteção contra ataques de intermediário.
No entanto, HTTPS não é tecnologia de anonimização. Mesmo usando HTTPS, o acesso chega ao site de destino. Além disso, endereço IP de origem, , estado de login e logs de acesso permanecem como problemas separados.
Este artigo organiza e explica a diferença entre HTTP e HTTPS, o que HTTPS protege e o que ainda pode ficar visível mesmo com HTTPS.
O que é HTTP
HTTP é a regra de comunicação usada para trocar dados na Web.
Quando você abre um site no navegador, o navegador envia uma requisição ao servidor. Por exemplo, pedidos como "envie o HTML desta página" ou "quero obter esta imagem".
O servidor devolve dados como HTML, imagens, CSS e JavaScript em resposta a essa requisição.
O mecanismo usado nessa troca de requisições e respostas entre navegador e servidor é o HTTP.
HTTP em si é a base da comunicação Web. Mas apenas HTTP não tem um mecanismo para proteger o conteúdo da comunicação.
No HTTP, o conteúdo da comunicação não é criptografado. Por isso, há o risco de um terceiro no caminho da comunicação ler o conteúdo, alterá-lo ou agir como uma falsa contraparte.
| Fraqueza do HTTP | Explicação |
|---|---|
| Fraco contra espionagem | Como o conteúdo da comunicação não é criptografado, há risco de ser lido no caminho |
| Fraco contra adulteração | Há risco de conteúdo de páginas ou dados enviados serem alterados durante a comunicação |
| Fraco contra falsificação | É difícil confirmar se a outra parte da comunicação é realmente o servidor pretendido |
Por exemplo, se você envia uma senha em um formulário de login por HTTP, essa senha pode ser vista no caminho da comunicação. Também há o risco de o conteúdo de uma página carregada por HTTP ser alterado no caminho, com inserção de um formulário falso ou de um script malicioso.
HTTP é a base da comunicação Web, mas, usado como está, tem grandes problemas de segurança.
O que é HTTPS
HTTPS é um mecanismo para realizar a comunicação HTTP dentro de um canal seguro.
Mais precisamente, HTTPS usa HTTP sobre uma camada segura chamada TLS. Não trataremos aqui dos detalhes finos do TLS, mas, para entender HTTPS, é útil pensar que "o conteúdo da comunicação HTTP é protegido por TLS".
No HTTPS, estes três pontos são importantes.
| Elemento | Papel | Explicação |
|---|---|---|
| Criptografia | Dificultar a leitura do conteúdo da comunicação | Fazer com que terceiros no caminho não consigam ler diretamente senhas e conteúdo de formulários |
| Detecção de adulteração | Permitir perceber alterações no conteúdo da comunicação | Se os dados forem modificados no caminho, dificultar que sejam aceitos como comunicação correta |
| Confirmação da contraparte | Confirmar se a comunicação é com a parte pretendida | Usar certificados e mecanismos semelhantes para confirmar se o servidor de destino é legítimo |
A força do HTTPS está na combinação desses três elementos.
Criptografia sozinha não basta. Por exemplo, mesmo que o conteúdo da comunicação esteja criptografado, se um atacante puder agir como servidor falso e fazer o usuário se conectar a esse servidor falso, não se pode dizer que a comunicação é segura.
Por isso, HTTPS usa não só mecanismos para proteger o conteúdo da comunicação, mas também mecanismos para confirmar se a outra parte é o site pretendido.
Diferença entre HTTP e HTTPS
A diferença entre HTTP e HTTPS não é apenas a aparência da URL começar com http[:]// ou https[:]//.
No HTTP, a comunicação entre navegador e servidor não é protegida. No HTTPS, cria-se um canal seguro entre navegador e servidor, e a troca HTTP ocorre dentro dele.
| Item | HTTP | HTTPS |
|---|---|---|
| Início da URL | http[:]// | https[:]// |
| Criptografia do conteúdo da comunicação | Não é feita | É feita |
| Proteção contra espionagem do conteúdo | Fraca | Forte |
| Proteção contra adulteração do conteúdo | Fraca | Facilita detectar adulteração |
| Confirmação da contraparte | Basicamente fraca | Confirma usando certificados e mecanismos semelhantes |
| Resistência a ataques de intermediário | Baixa | Alta |
| Anonimização | Não é feita | Não é feita |
Entender HTTPS como "HTTP com criptografia adicionada" é um pouco insuficiente. Mais precisamente, HTTPS envolve a comunicação HTTP em um canal seguro e dificulta espionagem, adulteração e falsificação.
O que é ataque de intermediário
Ataque de intermediário é um ataque em que um terceiro se coloca entre o navegador e o servidor para espionar a comunicação, alterá-la ou agir como uma falsa contraparte.
Mesmo que o usuário pense estar acessando o site real, um atacante no meio da comunicação pode estar vendo o conteúdo. Também é possível que o atacante altere o conteúdo da comunicação e insira um formulário de login falso ou código malicioso.
HTTP é fraco contra esse tipo de ataque.
No HTTPS, o conteúdo da comunicação é criptografado, adulterações são detectadas e a contraparte é confirmada. Por isso, fica mais difícil fazer um ataque de intermediário funcionar.
| O que o atacante quer fazer | No caso de HTTP | No caso de HTTPS |
|---|---|---|
| Ler o conteúdo da comunicação | Há risco de ser lido | É difícil ler como texto claro |
| Espionar uma senha | O risco é alto | É difícil espionar no caminho da comunicação |
| Alterar o conteúdo da página | Há risco de alteração | Adulterações tendem a ser detectadas |
| Fazer conectar a um servidor falso | O usuário dificilmente percebe | A verificação de certificado facilita impedir |
| Fingir ser a contraparte | É relativamente fácil | É difícil sem um certificado legítimo |
A essência do HTTPS está aqui.
Não basta "o conteúdo da comunicação ser criptografado". É importante poder verificar "se o conteúdo não foi alterado no caminho" e "se a outra parte da comunicação é a parte pretendida".
O que HTTPS protege
O que HTTPS protege principalmente é o conteúdo da comunicação HTTP que flui entre o navegador e o servidor.
Por exemplo, as informações seguintes ficam mais difíceis de ler no caminho da comunicação graças ao HTTPS.
| O que é protegido | Explicação |
|---|---|
| Senha | A senha digitada em um formulário de login fica mais difícil de ler no caminho da comunicação |
| Conteúdo preenchido em formulários | Nome, email, conteúdo de consulta e dados semelhantes ficam mais difíceis de ler no caminho da comunicação |
| Conteúdo da página | O conteúdo exibido na página fica mais difícil de ser lido ou alterado no caminho da comunicação |
| Conteúdo da requisição | O conteúdo enviado pelo navegador ao servidor tende a ser protegido |
| Conteúdo da resposta | O conteúdo devolvido pelo servidor ao navegador tende a ser protegido |
| Cookie | Cookies enviados e recebidos durante a comunicação ficam mais difíceis de espionar no caminho |
Senhas e Cookies são especialmente importantes.
Cookies podem ser usados para manter estado de login ou identificar usuários. Se um Cookie for roubado no caminho da comunicação, dependendo do caso pode haver risco de acesso como se fosse a própria pessoa.
No HTTPS, Cookies também são enviados dentro do canal criptografado, por isso ficam mais difíceis de espionar no caminho da comunicação.
No entanto, usar HTTPS não resolve todos os problemas relacionados a Cookies. A forma de armazenamento de Cookies, as configurações do site, o ambiente do navegador e a segurança do dispositivo permanecem como questões separadas.
Mesmo com HTTPS, o conteúdo chega ao servidor de destino
HTTPS é um mecanismo para proteger o conteúdo contra terceiros no caminho da comunicação. Não é um mecanismo para esconder o conteúdo do site de destino.
Por exemplo, se você digita uma senha em um formulário de login HTTPS, a senha fica mais difícil de ler no caminho da comunicação. Mas essa informação chega ao servidor do site que realiza o login.
Isso é natural. Para o servidor executar o login, ele precisa receber as informações enviadas.
O alcance da proteção do HTTPS fica principalmente no caminho da comunicação.
| Alvo | Papel do HTTPS | Explicação |
|---|---|---|
| Terceiros no caminho da comunicação | Alvo que ele protege fortemente | Facilita impedir espionagem, adulteração e falsificação |
| Servidor de destino | Contraparte da comunicação | O conteúdo da requisição chega ao servidor |
| Endereço IP do usuário | Não esconde diretamente | HTTPS sozinho não esconde o endereço IP de origem |
| Conta logada | Não esconde diretamente | Ações feitas com login ficam vinculadas à conta |
Ou seja, HTTPS é "um mecanismo para impedir espionagem e adulteração no caminho". Não é "um mecanismo para esconder suas informações do destino".
O que ainda pode ficar visível mesmo com HTTPS
Mesmo usando HTTPS, nem todas as informações ficam escondidas.
O conteúdo da comunicação é protegido. Mas informações sobre a origem do acesso, informações sobre o destino e informações que o site recebe são questões separadas.
| Informação | Quem pode ver | Explicação |
|---|---|---|
| Endereço IP de origem | Servidor de destino etc. | O lado do site pode saber de qual endereço IP houve acesso |
| Horário de acesso | Servidor de destino etc. | O momento do acesso pode ser registrado como log |
| Conteúdo da requisição | Servidor de destino | Mesmo com HTTPS, o conteúdo chega ao servidor para o qual foi enviado |
| Cookie | Site de destino | Pode ser usado para identificar o mesmo usuário ou navegador |
| Estado de login | Site de destino | Se houver login, a ação fica vinculada à conta |
| Logs de acesso | Site de destino | Quais páginas foram vistas e quais operações foram feitas podem ser registrados |
| Informações do navegador | Site de destino | Informações como User-Agent podem ser enviadas |
| Informações relacionadas ao destino | Depende do ambiente de comunicação | Mesmo com conteúdo criptografado, pode ser possível inferir a qual site se está conectando |
O ponto importante aqui é separar "conteúdo da comunicação" de "fato da comunicação".
HTTPS protege o conteúdo da comunicação. Mas ele não esconde automaticamente informações como de qual endereço IP veio o acesso, quando ocorreu o acesso ou com qual conta se está logado.
Além disso, no HTTPS, a URL inteira não fica sempre totalmente visível para terceiros. O caminho da página e o conteúdo de formulários são protegidos como conteúdo da comunicação. Por outro lado, informações relacionadas ao nome de domínio de destino podem ficar visíveis dependendo do ambiente de comunicação.
Por isso, usar HTTPS não faz desaparecer rastros de acesso nem informações de identificação.
HTTPS não é tecnologia de anonimização
HTTPS não é tecnologia de anonimização.
O objetivo do HTTPS é principalmente estes três pontos.
- Dificultar que o conteúdo da comunicação seja lido no caminho
- Dificultar que o conteúdo da comunicação seja alterado no caminho
- Facilitar a confirmação de que a contraparte da comunicação é a parte pretendida
Isso é diferente de anonimização.
Ao pensar em anonimato, é preciso separar "se o conteúdo da comunicação está protegido" de "se quem acessou está oculto".
HTTPS tem forte relação com o primeiro ponto. Mas não resolve diretamente o segundo.
| Ponto de vista | HTTPS resolve? | Explicação |
|---|---|---|
| Proteção contra espionagem do conteúdo da comunicação | Forte no caminho da comunicação | Dificulta que o conteúdo seja lido no caminho |
| Proteção contra adulteração do conteúdo da comunicação | Forte no caminho da comunicação | Dificulta que o conteúdo seja alterado no caminho |
| Confirmação da contraparte | Sim | Confirma o destino usando certificados e mecanismos semelhantes |
| Sigilo do endereço IP | Não | HTTPS sozinho não esconde o endereço IP de origem |
| Identificação por Cookie | Não | A identificação pelo lado do site permanece como outro problema |
| Sigilo do estado de login | Não | Ações feitas com login ficam vinculadas à conta |
| Exclusão de logs de acesso | Não | A retenção de logs pelo site é uma questão separada do HTTPS |
A compreensão de que "HTTPS significa anonimato" está errada.
HTTPS é uma tecnologia para tornar a comunicação segura. Não é uma tecnologia para criar anonimato.
Perspectiva para entender HTTPS corretamente
Para entender HTTPS corretamente, é preciso separar "de quem e o que ele protege".
O principal alvo protegido pelo HTTPS são terceiros no caminho da comunicação.
Por exemplo, ele facilita impedir que terceiros no mesmo Wi-Fi, equipamentos no caminho da comunicação ou intermediários maliciosos espionem o conteúdo, alterem dados ou ajam como uma falsa contraparte.
Por outro lado, o site de destino é a contraparte final da comunicação. Por isso, o conteúdo enviado chega ao lado do site.
| Contraparte | O que HTTPS tende a impedir | O que HTTPS não impede |
|---|---|---|
| Terceiro no caminho da comunicação | Espionagem, adulteração, falsificação | Comprometimento do próprio dispositivo |
| Site de destino | Vazamento durante a comunicação | Registro de logs pelo site e identificação por conta |
| Usuário do mesmo Wi-Fi | Espionagem do conteúdo da comunicação | A inferência do destino de acesso não desaparece completamente |
| Servidor falso | Tende a ser detectado sem certificado legítimo | Risco quando o usuário ignora avisos |
HTTPS é um mecanismo muito forte, mas não é onipotente.
Por exemplo, se o navegador exibe um aviso sobre certificado e o usuário ignora esse aviso e prossegue, a segurança fornecida por HTTPS cai bastante. Além disso, se o próprio dispositivo estiver infectado por malware, mesmo usando HTTPS, o conteúdo digitado pode ser roubado no lado do dispositivo.
HTTPS oferece forte defesa contra espionagem, adulteração e falsificação na rede. Mas segurança do dispositivo, gestão do lado do site, tratamento de contas, Cookies e logs precisam ser considerados separadamente.
Resumo
HTTP é o mecanismo básico para trocar dados na Web. Mas apenas HTTP não criptografa o conteúdo da comunicação e há risco de espionagem ou adulteração no caminho.
HTTPS é um mecanismo para realizar a comunicação HTTP dentro de um canal seguro.
Os papéis importantes do HTTPS são estes três.
- Dificultar que o conteúdo da comunicação seja lido no caminho
- Dificultar que o conteúdo da comunicação seja alterado no caminho
- Facilitar a confirmação de que a outra parte da comunicação é a parte pretendida
Por isso, HTTPS é muito importante como proteção contra ataques de intermediário.
No entanto, HTTPS não é tecnologia de anonimização. Mesmo usando HTTPS, a requisição chega ao site de destino. Além disso, endereço IP de origem, Cookie, estado de login e logs de acesso permanecem como problemas separados.
HTTPS é uma tecnologia para tornar a comunicação segura. Ela é especialmente importante para impedir espionagem, adulteração e falsificação no caminho da comunicação.
Mas não é uma tecnologia para esconder quem acessou.
Ao pensar em anonimato, é preciso separar o alcance protegido pelo HTTPS do alcance que HTTPS não protege. HTTPS é uma premissa importante, mas HTTPS sozinho não estabelece anonimato.