O ClientHello criptografado (“ECH”) é uma nova proposta de padrão que visa proteger a privacidade dos usuários na Internet, impedindo que as redes espiem quais sites um usuário está visitando. O ECH é uma extensão do protocolo Transport Layer Security (TLS), que é usado para estabelecer conexões seguras entre clientes e servidores na web. O ECH mascara a Indicação de Nome do Servidor (SNI), que é um parâmetro que o cliente envia ao servidor para indicar qual site ele quer acessar. Sem o ECH, o SNI é enviado em texto claro, o que permite que observadores na rede identifiquem o site visitado pelo usuário.
O ECH é o sucessor do ESNI, que foi uma tentativa anterior de criptografar o SNI, mas que tinha algumas limitações e desafios de implantação. O ECH resolve esses problemas usando um novo design que aproveita os recursos do TLS 1.3 e do DNS-over-HTTPS (DoH). O ECH funciona da seguinte forma:
- O cliente obtém um registro DNS especial chamado ECHConfig, que contém uma chave pública e alguns parâmetros do servidor.
- O cliente usa a chave pública para criptografar todo o seu ClientHello, incluindo o SNI, e envia ao servidor junto com um ClientHello externo não criptografado, que contém um SNI falso ou genérico.
- O servidor recebe os dois ClientHellos e tenta descriptografar o interno usando sua chave privada correspondente. Se for bem-sucedido, ele usa o ClientHello interno para continuar o handshake TLS. Se não for bem-sucedido, ele usa o ClientHello externo para continuar o handshake TLS ou enviar uma mensagem de erro ao cliente.
O ECH oferece vários benefícios para a privacidade e a segurança dos usuários na Internet:
- Ele impede que terceiros na rede vejam ou manipulem o SNI, que pode revelar informações sensíveis sobre o comportamento ou as preferências do usuário.
- Ele permite que os servidores autentiquem-se com os clientes usando certificados que correspondem ao SNI real, em vez do falso ou genérico, o que aumenta a confiança e a integridade da conexão.
- Ele fornece uma base para futuras melhorias e funcionalidades do TLS, como negociação de protocolos de camada de aplicação e otimização de desempenho, sem comprometer a privacidade dos usuários.
O ECH ainda está em desenvolvimento e não está pronto para ser implantado em larga escala na Internet. No entanto, alguns provedores de serviços de Internet, como a Cloudflare, já oferecem suporte experimental ao ECH para seus clientes e parceiros. Para usar o ECH, os usuários precisam de um navegador compatível, como o Firefox Nightly, e um servidor que tenha habilitado o ECH em seu registro DNS.
Sobre TLS
TLS, ou Transport Layer Security, é um protocolo criptográfico que garante a segurança e a privacidade da comunicação entre duas partes na internet. O TLS é usado para proteger dados sensíveis, como senhas, cartões de crédito, informações pessoais e mensagens, de serem interceptados ou alterados por terceiros mal-intencionados.
O TLS funciona através de um processo chamado handshake, que é uma troca de mensagens entre o cliente (por exemplo, um navegador web) e o servidor (por exemplo, um site) para estabelecer uma conexão segura. Durante o handshake, o cliente e o servidor negociam os parâmetros da comunicação, como a versão do protocolo, os algoritmos de criptografia e as chaves secretas que serão usadas para cifrar e decifrar os dados.
O TLS também usa certificados digitais para verificar a identidade das partes envolvidas na comunicação. Um certificado digital é um documento eletrônico que contém informações sobre o dono do certificado, como o nome, a organização e o endereço de e-mail, e uma chave pública que corresponde a uma chave privada que só o dono do certificado possui. O certificado digital é emitido por uma autoridade certificadora (CA), que é uma entidade confiável que atesta a autenticidade do certificado.
Quando o cliente se conecta a um servidor que usa TLS, ele verifica se o certificado digital do servidor é válido e se foi emitido por uma CA reconhecida. Se o certificado for válido, o cliente confia que o servidor é quem ele diz ser e prossegue com o handshake. Se o certificado for inválido ou expirado, o cliente pode alertar o usuário sobre o risco de se comunicar com um servidor não confiável ou encerrar a conexão.
O TLS é um protocolo essencial para garantir a segurança e a privacidade na internet. Ele evita que os dados sejam espionados, modificados ou roubados por hackers, governos ou empresas. Ele também permite que os usuários tenham mais confiança nos sites e serviços que acessam, pois eles podem verificar se estão se comunicando com as entidades legítimas. O TLS é usado em diversos cenários, como navegação web, e-mail, mensagens instantâneas, chamadas de voz e vídeo, comércio eletrônico e transações bancárias.