Fundamentos de TLS
O que é TLS
Na comunicação HTTPS, os dados HTTP não são enviados como estão; eles são protegidos por um mecanismo chamado TLS.
A diferença entre HTTP e HTTPS às vezes é explicada como "se é criptografado ou não". No entanto, o papel do TLS não é apenas criptografia. Também são papéis importantes dificultar que terceiros leiam o conteúdo da comunicação, dificultar adulterações no caminho e confirmar o servidor de destino.
Este artigo organiza o que TLS protege e o que ele não protege.
O que é TLS
TLS é a sigla de Transport Layer Security, um protocolo para proteger comunicações na rede.
Na Web, ele é usado para proteger a comunicação entre navegador e servidor Web. Ao abrir um site HTTPS no navegador, o conteúdo da comunicação HTTP é enviado e recebido em estado protegido por TLS.
As proteções principais oferecidas pelo TLS são estas três.
| Papel | Significado | Explicação |
|---|---|---|
| Confidencialidade | Dificultar a leitura do conteúdo da comunicação | Dificultar que terceiros no caminho entendam o conteúdo dos dados |
| Integridade | Facilitar a detecção de adulteração do conteúdo | Permitir detectar quando os dados foram alterados no caminho |
| Autenticação | Confirmar o destino da conexão | Confirmar, por meio do certificado do servidor, se o destino possui um certificado legítimo para aquele domínio |
Ou seja, em vez de lembrar TLS apenas como "um mecanismo que criptografa a comunicação", é mais preciso entendê-lo como um mecanismo que combina proteção do conteúdo da comunicação e confirmação do destino.
HTTPS é HTTP protegido por TLS
HTTPS é comunicação HTTP protegida por TLS.
HTTP é o mecanismo pelo qual navegador e servidor Web trocam conteúdo de páginas, dados de formulários e informações semelhantes. Porém, apenas HTTP não criptografa o conteúdo da comunicação. Por isso, há risco de terceiros no caminho da comunicação lerem o conteúdo ou adulterarem dados no caminho.
No HTTPS, a troca HTTP ocorre dentro do TLS. Com isso, o conteúdo de requisições e respostas enviadas por HTTP fica difícil de ler durante a comunicação.
| Item | HTTP | HTTPS |
|---|---|---|
| Conteúdo da comunicação | Enviado em texto claro | Protegido por TLS |
| Resistência à escuta | Baixa | Alta |
| Detecção de adulteração | Fraca | Facilitada por TLS |
| Confirmação do destino | Basicamente fraca | Confirmada por certificado de servidor |
| Estrutura principal | HTTP | HTTP over TLS |
HTTPS não é um mecanismo que trata conteúdo diferente de HTTP. É uma forma de enviar a comunicação HTTP protegida por TLS.
O que TLS protege
O centro do que TLS protege é o conteúdo da comunicação que flui entre navegador e servidor.
No caminho da comunicação existem roteadores Wi-Fi, provedores, equipamentos de rede de organizações, equipamentos intermediários na Internet e outros elementos. Se TLS não for usado, há risco de leitura ou alteração do conteúdo nesse caminho.
Quando TLS está ativo, o conteúdo da comunicação é criptografado. Por isso, mesmo que um terceiro no caminho obtenha os dados, torna-se difícil ler diretamente o conteúdo HTTP.
| Informação | Proteção por TLS | Explicação |
|---|---|---|
| Corpo da página | Protegido | HTML e conteúdo retornados pelo servidor ficam difíceis de ler no caminho |
| Conteúdo preenchido em formulários | Protegido | Informações de login, conteúdo de consulta e semelhantes são criptografados |
| Cabeçalhos HTTP | Protegidos | Cabeçalhos HTTP como e User-Agent são enviados dentro do TLS |
| Valor do Cookie | Protegido | O conteúdo do Cookie fica difícil de ler no caminho |
| Caminho e query da URL | Protegidos | A parte equivalente a /search?q=... em example.com/search?q=... é protegida como requisição HTTP |
No entanto, a proteção aqui é proteção contra terceiros no caminho da comunicação. O servidor de destino precisa processar a requisição, portanto descriptografa e lê o conteúdo da comunicação.
Confirmar o destino com certificado de servidor
No TLS, além de criptografar o conteúdo da comunicação, também se confirma o servidor de destino.
Ao acessar um site HTTPS, o servidor apresenta um certificado de servidor. O navegador verifica se esse certificado foi emitido por uma autoridade certificadora confiável, se ainda está dentro do prazo de validade, se corresponde ao nome de domínio acessado e outros pontos.
Com isso, é possível confirmar se a contraparte possui um certificado legítimo para o domínio pretendido.
No entanto, a existência de um certificado de servidor não garante que o operador do site seja seguro nem que as informações no site estejam corretas. O que o certificado confirma é principalmente "se há um certificado válido para aquele domínio".
Ou seja, o ícone de cadeado do HTTPS indica que "o caminho da comunicação está protegido por TLS", mas não garante que "o site oferece conteúdo confiável".
Alcance criptografado pelo TLS
O que é criptografado pelo TLS é principalmente o conteúdo do HTTP.
Por exemplo, corpo de páginas Web, conteúdo enviado por formulários, valores de Cookie, cabeçalhos HTTP, caminho da URL e string de consulta são enviados dentro do TLS.
Por outro lado, mesmo usando TLS, algumas informações necessárias à comunicação e informações fora da comunicação permanecem.
| Informação | TLS esconde? | Explicação |
|---|---|---|
| Corpo da página | Tende a esconder | Protegido por TLS como conteúdo da resposta HTTP |
| Conteúdo preenchido em formulários | Tende a esconder | Protegido por TLS como corpo da requisição HTTP |
| Valor do Cookie | Tende a esconder | Protegido por TLS como cabeçalho HTTP |
| Caminho e query da URL | Tendem a esconder | Protegidos por TLS como conteúdo da requisição HTTP |
| Endereço IP de destino | Não esconde | Necessário para entregar pacotes ao destino |
| Endereço IP de origem | Não esconde | Visível para o servidor ou para destinos intermediários |
| Algumas informações no momento da conexão TLS, como SNI | Podem ficar visíveis dependendo do ambiente | Em ambientes sem ECH e mecanismos semelhantes, podem virar pista do domínio de destino |
| Consulta DNS | Permanece como outro problema | Em DNS comum, o domínio consultado pode ficar visível |
| Volume de comunicação | Não esconde | A quantidade de dados enviados e recebidos pode ser observada |
| Momento da comunicação | Não esconde | O momento em que a comunicação ocorreu pode ser observado |
Essa diferença é importante. TLS protege o conteúdo HTTP, mas não elimina a existência da comunicação em si, o volume, o timing nem os endereços IP.
Atenção ao término do TLS
É necessário ter consciência de onde a comunicação protegida por TLS começa e termina.
Em explicações gerais, costuma-se dizer que "a comunicação entre navegador e servidor Web é criptografada". No entanto, em serviços Web reais, uma CDN, um balanceador de carga ou um proxy reverso pode ser o ponto de término do TLS.
O término do TLS é o ponto em que a comunicação criptografada é descriptografada.
Por exemplo, pode haver uma configuração em que a comunicação do navegador até a CDN é protegida por TLS, e da CDN até o servidor de origem é encaminhada por outra conexão. Nesse caso, do ponto de vista do navegador, o destino da conexão TLS é o lado da CDN, e a proteção da comunicação além disso depende das configurações do serviço.
Isso não significa que TLS seja fraco. TLS é um mecanismo que "protege a comunicação entre endpoints"; qual ponto se torna endpoint muda conforme a configuração do sistema.
TLS não é tecnologia de anonimização
TLS não é tecnologia de anonimização.
TLS é uma tecnologia para proteger o conteúdo da comunicação contra terceiros no caminho. Por outro lado, o conteúdo da comunicação chega ao servidor de destino. Como o servidor precisa processar a requisição, ele pode conhecer dados enviados, Cookie, informações de login, horário de acesso, endereço IP de origem e outros dados.
Ao acessar um site HTTPS, terceiros no caminho da comunicação têm mais dificuldade para ler o conteúdo da página. Porém, o próprio site de destino pode processar a página acessada, o conteúdo enviado em formulários, o estado de login, Cookies e informações semelhantes.
| Item | TLS resolve? | Motivo |
|---|---|---|
| Escuta no caminho da comunicação | Tende a resolver | Porque o conteúdo da comunicação é criptografado |
| Adulteração no caminho da comunicação | Tende a resolver | Porque há mecanismo de detecção de adulteração |
| Visualização pelo servidor de destino | Não resolve | Porque o servidor precisa processar o conteúdo da comunicação |
| Sigilo do endereço IP de origem | Não resolve | Porque o IP de origem pode ficar visível para o lado do servidor |
| Identificação por Cookie | Não resolve | Porque Cookies são usados para identificação de usuários no lado do servidor |
| Vinculação à pessoa por login | Não resolve | Porque ações ficam vinculadas à conta |
Criptografia e anonimização têm objetivos diferentes.
Criptografia é uma tecnologia para dificultar que terceiros leiam o conteúdo da comunicação. Anonimização é uma forma de pensar para dificultar saber quem está se comunicando, para onde se conecta e quais ações pertencem ao mesmo usuário.
TLS é uma tecnologia forte para a primeira finalidade, mas não realiza a segunda sozinho.
Por que entender TLS
Entender TLS permite avaliar corretamente a segurança do HTTPS sem superestimá-la.
HTTPS é muito importante como medida contra escuta e adulteração no caminho da comunicação. Em login, pagamento, envio de informações pessoais, acesso a telas administrativas e casos semelhantes, presume-se que HTTPS esteja sendo usado.
Por outro lado, mesmo com HTTPS, informações chegam ao servidor de destino. Logs do servidor, endereço IP de origem, Cookie, informações de conta, informações do navegador e outras questões permanecem separadas do TLS.
Por isso, ao entender TLS, é preciso separar da seguinte forma.
| Ponto de vista | Objetivo principal | Relação com TLS |
|---|---|---|
| Criptografia | Dificultar que terceiros leiam o conteúdo da comunicação | Papel central do TLS |
| Integridade | Detectar adulteração no caminho da comunicação | Papel importante do TLS |
| Autenticação do destino | Confirmar se o servidor possui um certificado legítimo | Papel importante do TLS |
| Anonimização | Dificultar a compreensão do usuário ou da relação de conexão | TLS sozinho não realiza |
| Prevenção de rastreamento | Reduzir identificação por Cookie ou conta | Exige medidas separadas do TLS |
TLS é uma tecnologia básica que sustenta a segurança da comunicação. Mas não é um mecanismo universal para resolver todos os problemas de privacidade e anonimato.
Resumo
TLS é o mecanismo central de proteção de comunicação usado no HTTPS.
TLS criptografa o conteúdo da comunicação entre navegador e servidor e dificulta que terceiros no caminho leiam esse conteúdo. Também facilita detectar adulterações no caminho da comunicação e confirma o destino por meio de certificados de servidor.
Por outro lado, TLS não é tecnologia de anonimização. O conteúdo da comunicação chega ao servidor de destino, e problemas como endereço IP de origem, logs do servidor, Cookie e informações de conta permanecem separadamente.
Para entender TLS corretamente, é preciso separar "o conteúdo da comunicação é criptografado" de "fica oculto quem acessa onde".
HTTPS é importante para tornar a comunicação segura, mas não realiza automaticamente anonimato nem prevenção de rastreamento.