Padrão SNI criptografado implementado no Firefox Nightly

O Firefox foi o primeiro navegador a implementar a criptografia TLS Server Name Indication (SNI) . O suporte ESNI foi introduzido na versão mais recente do Firefox Nightly, na qual todas as inovações são lançadas antes de serem adicionadas à ramificação principal.

A importância desse padrão foi discutidaum mês pelo provedor CloudFare CDN. Em resumo, a ESNI criptografa informações sobre para qual domínio você está enviando a solicitação. No HTTPS padrão, os cabeçalhos com nomes de domínio não são criptografados e estão disponíveis para visualização pelo provedor ou outra "pessoa no meio". Agora ele vê apenas o endereço IP. Como centenas de domínios podem estar localizados no mesmo endereço IP na Internet moderna, a ESNI oculta efetivamente as informações sobre em qual domínio o usuário faz login.

Assim, o bloqueio por nome deixa de funcionar, e a censura na Internet se torna muito complicada. Os censores terão que bloquear endereços IP, o que é uma prática duvidosa. Esse bloqueio pode afetar sites não relacionados, e um serviço bloqueado pode alternar (automaticamente) facilmente para outro endereço IP.

Por que os nomes de host brilham em um TLS SNI comum? O fato é que, antes de iniciar a criptografia, o servidor precisa saber qual domínio o cliente está acessando para apresentar o certificado necessário. Por esse motivo, o nome do host é transmitido em texto sem formatação (abaixo da ilustração do blog Cloudflare ).



No SNI criptografado (ESNI), esse problema é resolvido da seguinte maneira: o cliente pega a chave pública do servidor do DNS e criptografa todos os dados com ele até que a sessão TLS seja estabelecida.


O suporte do navegador ao Firefox Nightly significa que o ESNI funcionará com todos os sites / provedores que o suportam.

Os desenvolvedores da Mozilla explicam que existem quatro maneiras principais de vazar seu histórico de navegação:

  1. Mensagem de certificado TLS
  2. Resolução de nomes DNS
  3. Endereço IP do servidor
  4. Indicação de nome do servidor TLS.

Até o momento, eles fizeram um bom progresso no fechamento dos dois primeiros canais de vazamento: o novo padrão TLS 1.3 criptografa o certificado do servidor padrão (canal 1) e, nos últimos meses, a Mozilla estudou o uso do DNS sobre HTTPS para proteger o tráfego DNS (canal 2). Os resultados dos testes não são ruins e, nos próximos meses, a função será lançada para todos os usuários do Firefox. O endereço IP continua sendo um problema, mas em muitos casos vários sites compartilham o mesmo endereço IP, portanto, o principal canal de vazamento é o SNI.

Ao mesmo tempo, a tecnologia SNI (Server Name Indication) começou a ser usada precisamente porque vários hosts estão localizados no mesmo endereço IP. Nesse caso, o campo SNI informa ao servidor a qual host você está tentando se conectar, permitindo que ele selecione o certificado correto. Em outras palavras, o SNI ajuda a garantir a operação de hospedagem TLS em larga escala. Ou seja, essa função foi introduzida por questões de segurança e agora temos que lidar com ela como um canal de vazamento de dados.

O problema do SNI era conhecido há muito tempo, escrevem os desenvolvedores da Mozilla, e ficou claro que esse campo precisava ser criptografado. Mas todo design que eles tentaram incluía um comprometimento no desempenho. Havia outra desvantagem importante: o fato de um site específico estar mudando para a ESNI era um sinal de que "tinha algo a esconder", ou seja, os censores tiveram a oportunidade de filtrar trivialmente o tráfego da ESNI. No final, decidiu-se lançar o padrão TLS 1.3 sem ESNI.

Somente no início de 2018, os desenvolvedores perceberam que havia uma boa opção: grandes redes de distribuição de conteúdo (CDNs) hospedam muitos sites nos mesmos servidores físicos. Se eles concordarem em transferir todos os clientes para a ESNI de umavez , subitamente a ESNI deixará de ser um sinal útil para um invasor. Assim, tornou-se possível implementar o ESNI no TLS 1.3, personalizando em massa muitos sites em um conjunto existente de servidores.

ESNI é uma tecnologia completamente nova e o Firefox é o primeiro navegador a implementá-lo. Para ativá-lo no Firefox Nightly, você deve concluir as seguintes etapas:

  1. Verifique se você ativou o DNS sobre HTTPS (DoH):
    • about:config
    • defina network.trr.mode como 2

    • configure network.trr.uri para o servidor DoH (por exemplo, https://mozilla.cloudflare-dns.com/dns-query ).

    • about:config
    • configure network.security.esni.enabled como true


Isso deve ativar automaticamente o ESNI para qualquer site que o suporte. No momento, dos grandes hosters e CDNs, esse é apenas o Cloudflare, mas os desenvolvedores do Firefox esperam que outros provedores se conectem em breve. Você pode verificar a criptografia por este link .



Nos próximos meses, a Mozilla testará como a ESNI interage com diferentes tipos de firewalls e outros dispositivos de rede. Se você ativou a criptografia e algo quebrou - informe os desenvolvedores através do rastreador de erros.





Source: https://habr.com/ru/post/pt427563/


All Articles