A indicação de nome do servidor criptografada (ESNI) ajuda a manter a privacidade da navegação do usuário. Isso é feito criptografando-se uma parte não criptografada previamente do handshake TLS que pode revelar qual site o usuário está visitando.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
A indicação de nome do servidor criptografada (ESNI) é um recurso essencial para manter a privacidade dos dados de navegação do usuário. Ela garante que terceiros espiões não possam espionar o processo de handshake TLS para determinar quais sites os usuários estão visitando. A ESNI, como o nome indica, faz isso criptografando a Indicação de Nome do Servidor (SNI)
A SNI diz a um servidor web qual certificado TLS mostrar no início de uma conexão entre o cliente e o servidor. A SNI é um acréscimo ao protocolo TLS que permite a um servidor hospedar vários certificados TLS no mesmo endereço de IP.
Pense na SNI como sendo o número do apartamento de um endereço de correspondência: existem vários apartamentos em um prédio e, portanto, cada apartamento precisa de um número diferente para distingui-lo dos outros. Da mesma forma, enquanto o servidor é indicado pelo endereço de IP, um dispositivo cliente precisa incluir a SNI em sua primeira mensagem ao servidor para indicar qual site (qual apartamento) está tentando encontrar.
O Transport Layer Security, ou TLS, é um protocolo de criptografia que mantém as comunicações privadas e protegidas na internet. O TLS é usado principalmente para criptografar a comunicação entre aplicativos e servidores web, como acontece quando os navegadores da web carregam um site. Todos os sites que utilizam TLS devem ter um certificado TLS. Às vezes o TLS é chamado de SSL, embora SSL seja um nome desatualizado do protocolo.
Todas as conexões TLS começam com algo chamado "handshake". Assim como na vida real, em que duas pessoas usam o aperto de mãos ao se apresentarem, o handshake TLS é uma série de comunicações introdutórias entre um dispositivo cliente (como um smartphone do usuário) e um aplicativo web ou um site. Durante o handshake TLS, os dois dispositivos de comunicação concordam com relação a quais chaves de criptografia devem ser usadas, entre outras etapas. Apesar do número de etapas envolvidas, um handshake TLS demora apenas alguns milissegundos.
A SNI é uma parte pequena, mas crucial, da primeira etapa do handshake TLS. A primeira mensagem em um handshake TLS é chamada de "olá cliente". Como parte dessa mensagem, o cliente pede para ver o certificado TLS do servidor web. O servidor deve enviar o certificado como parte de sua resposta.
O problema é que muitos servidores web hospedam mais de um site, e cada site pode ter seu próprio certificado TLS. Se o servidor mostrar o certificado errado ao cliente, então o cliente não poderá se conectar com segurança ao site desejado, resultando em um erro do tipo "Sua conexão não é privada"
A SNI resolve esse problema indicando qual site o cliente está tentando encontrar. Paradoxalmente, nenhuma criptografia pode ser realizada até que o handshake TLS seja concluído com sucesso usando a SNI. Como resultado, a SNI normal não é criptografada porque a mensagem "alô cliente" é enviada no início do handshake TLS. Qualquer invasor que estiver monitorando a conexão entre o cliente e o servidor poderia determinar a qual site o cliente estava se conectando lendo a parte da SNI do handshake, mesmo que todas as outras comunicações não possam ser decifradas pelo invasor. (Os invasores podem usar essa informação de várias maneiras, como para criar um site de phishing a fim de enganar o usuário, por exemplo).
A ESNI mantém a SNI em segredo ao criptografar a parte SNI da mensagem "olá cliente" (e somente essa parte). A criptografia só funciona se os dois lados de uma comunicação, neste caso o cliente e o servidor, tiverem a chave para criptografar e descriptografar as informações, da mesma forma que duas pessoas só podem usar o mesmo armário se ambos tiverem uma chave para esse armário. Como a mensagem "alô cliente" é enviada antes que o cliente e o servidor tenham negociado as chaves de criptografia TLS, a chave de criptografia ESNI deve ser comunicada de outra forma.
A solução: Criptografia de Chave Pública. O servidor web adiciona uma chave pública ao seu registro de DNS, de modo que o cliente, ao procurar onde encontrar o servidor certo, também encontrará a chave pública do servidor. É como deixar a chave de casa em um cofre do lado de fora da casa para que um visitante possa entrar nela com segurança. O cliente pode então usar a chave pública para criptografar seu registro SNI de tal forma que somente aquele servidor específico possa descriptografá-lo. (Esta é uma explicação um pouco simplificada; para obter uma explicação técnica mais minuciosa, veja essa postagem no blog.)
Imagine que Alice quer visitar o site do Bob, www.bobisawesome.example.com. Como todo proprietário de site responsável, Bob usa o TLS para seu site de modo que todo o tráfego enviado ou recebido pelo seu site seja criptografado. Bob também implementou a ESNI para proteger ainda mais os visitantes do site, como a Alice.
Quando Alice digita https://www.bobisawesome.example.com no navegador do seu laptop, este realiza o seguinte processo para carregar o site:
*Esta última afirmação só é verdadeira se a parte DNS do processo utilizou DNSSEC e DNS sobre HTTPS ou DNS sobre TLS — saiba mais abaixo.
A ESNI é um passo importante para a privacidade e segurança na web, mas outros novos protocolos e funcionalidades também são. A internet não foi desenvolvida tendo a segurança e a privacidade em mente e, consequentemente, há várias etapas no processo de visita a um site que não são privadas. No entanto, vários novos protocolos estão ajudando a criptografar e proteger cada etapa contra invasores maliciosos.
O Domain Name System, ou DNS, compara endereços de sites legíveis por seres humanos, como www.bobisawesome.example.com, com endereços de IP alfanuméricos. É como procurar o endereço de alguém em uma agenda de endereços, dessas que todos usam. Entretanto, o DNS normal não é criptografado, o que significa que qualquer um poderia ver qual endereço uma pessoa está procurando e fingir que é a agenda de endereços. Mesmo com a ESNI implantada, um invasor poderia ver quais registros de DNS os usuários estão consultando e descobrir que sites eles estão visitando.
Três protocolos adicionais visam eliminar essas lacunas: DNS sobre TLS, DNS sobre HTTPS e DNSSEC.
Tanto o DNS sobre TLS como o DNS sobre HTTPS fazem a mesma coisa: criptografam consultas DNS usando criptografia TLS. As principais diferenças entre eles se referem a que camada da rede e que porta de rede eles utilizam. O DNSSEC verifica se os registros de DNS são reais e se vêm de um servidor de DNS legítimo, e não de um invasor que se faz passar por um servidor de DNS (como em um ataque de envenenamento de cache DNS ).
O Encrypted Client Hello (ECH) é outra extensão do protocolo TLS que protege a parte SNI do "Client Hello" através da criptografia. Entretanto, ao contrário do ESNI, o ECH criptografa todo o "Client Hello". Saiba mais sobre o ECH nesta postagem do blog.
A rede da Cloudflare vem apoiando a ESNI desde setembro de 2018. A Cloudflare não foi apenas a primeira grande rede a apoiar a ESNI, como também foi essencial para seu desenvolvimento. A ESNI ainda não foi publicada como um RFC oficial, ou padrão da internet, mas um projeto do RFC está em andamento.
Verifique a segurança, a privacidade e o uso de ESNI no seu navegador com esta ferramenta de verificação de ESNI gratuita. Saiba mais sobre por que a SNI foi criada ou como funciona um handshake TLS.