HTTPS - HTTPS

Hypertext Transfer Protocol Secure ( HTTPS ) é uma extensão do Hypertext Transfer Protocol (HTTP). Ele é usado para comunicação segura em uma rede de computadores e é amplamente usado na Internet. Em HTTPS, o protocolo de comunicação é criptografado usando Transport Layer Security (TLS) ou, anteriormente, Secure Sockets Layer (SSL). O protocolo é, portanto, também conhecido como HTTP sobre TLS ou HTTP sobre SSL .

As principais motivações para HTTPS são a autenticação do site acessado e a proteção da privacidade e integridade dos dados trocados durante o trânsito. Ele protege contra ataques man-in-the-middle , e a criptografia bidirecional das comunicações entre um cliente e servidor protege as comunicações contra espionagem e violação . O aspecto de autenticação do HTTPS requer um terceiro confiável para assinar certificados digitais do lado do servidor . Essa era uma operação historicamente cara, o que significava que conexões HTTPS totalmente autenticadas geralmente eram encontradas apenas em serviços de transação de pagamento protegidos e outros sistemas de informações corporativos protegidos na World Wide Web . Em 2016, uma campanha da Electronic Frontier Foundation com o apoio de desenvolvedores de navegadores da web fez com que o protocolo se tornasse mais prevalente. HTTPS agora é usado com mais frequência por usuários da web do que o HTTP não seguro original, principalmente para proteger a autenticidade da página em todos os tipos de sites; contas seguras; e para manter as comunicações do usuário, a identidade e a navegação na web privadas.

Visão geral

URL começando com o esquema HTTPS e o rótulo do nome de domínio WWW

O esquema de Uniform Resource Identifier (URI) HTTPS tem uma sintaxe de uso idêntica ao esquema HTTP. No entanto, HTTPS sinaliza ao navegador para usar uma camada de criptografia adicional de SSL / TLS para proteger o tráfego. SSL / TLS é especialmente adequado para HTTP, pois pode fornecer alguma proteção, mesmo se apenas um lado da comunicação for autenticado . Esse é o caso com transações HTTP na Internet, onde normalmente apenas o servidor é autenticado (pelo cliente examinando o certificado do servidor ).

HTTPS cria um canal seguro em uma rede insegura. Isso garante proteção razoável contra bisbilhoteiros e ataques man-in-the-middle , desde que sejam usados conjuntos de criptografia adequados e que o certificado do servidor seja verificado e confiável.

Como o HTTPS carrega o HTTP inteiramente sobre o TLS, todo o protocolo HTTP subjacente pode ser criptografado. Isso inclui o URL de solicitação (qual página da web específica foi solicitada), parâmetros de consulta, cabeçalhos e cookies (que geralmente contêm informações de identificação sobre o usuário). No entanto, como os endereços de sites e números de portas são necessariamente parte dos protocolos TCP / IP subjacentes , o HTTPS não pode proteger sua divulgação. Na prática, isso significa que mesmo em um servidor da web configurado corretamente, os bisbilhoteiros podem inferir o endereço IP e o número da porta do servidor da web e, às vezes, até mesmo o nome do domínio (por exemplo, www.example.org, mas não o resto do URL) que um usuário está se comunicando, junto com a quantidade de dados transferidos e a duração da comunicação, embora não com o conteúdo da comunicação.

Os navegadores da Web sabem como confiar em sites HTTPS com base em autoridades de certificação que vêm pré-instaladas em seus softwares. As autoridades de certificação são, desta forma, confiadas pelos criadores de navegadores da Web para fornecer certificados válidos. Portanto, um usuário deve confiar em uma conexão HTTPS para um site se e somente se todas as seguintes condições forem verdadeiras:

  • O usuário confia que o software do navegador implementa corretamente o HTTPS com autoridades de certificação pré-instaladas corretamente.
  • O usuário confia na autoridade de certificação para garantir apenas os sites legítimos.
  • O site fornece um certificado válido, o que significa que foi assinado por uma autoridade confiável.
  • O certificado identifica corretamente o site (por exemplo, quando o navegador visita " https://example.com ", o certificado recebido é apropriado para "example.com" e não para alguma outra entidade).
  • O usuário confia que a camada de criptografia do protocolo (SSL / TLS) é suficientemente segura contra intrusos.

HTTPS é especialmente importante em redes inseguras e redes que podem estar sujeitas a adulteração. Redes inseguras, como pontos de acesso Wi-Fi públicos , permitem que qualquer pessoa na mesma rede local fareje pacotes e descubra informações confidenciais não protegidas por HTTPS. Além disso, algumas redes WLAN gratuitas e pagas foram observadas adulterando páginas da web por meio da injeção de pacotes para veicular seus próprios anúncios em outros sites. Essa prática pode ser explorada de várias maneiras maliciosas, como por meio da injeção de malware em páginas da web e do roubo de informações privadas dos usuários.

HTTPS também é importante para conexões na rede Tor , já que nós maliciosos do Tor podem danificar ou alterar o conteúdo que passa por eles de forma insegura e injetar malware na conexão. Este é um dos motivos pelos quais a Electronic Frontier Foundation e o Tor Project iniciaram o desenvolvimento do HTTPS Everywhere , que está incluído no Tor Browser.

À medida que mais informações são reveladas sobre vigilância em massa global e criminosos roubando informações pessoais, o uso de segurança HTTPS em todos os sites está se tornando cada vez mais importante, independentemente do tipo de conexão à Internet que está sendo usada. Mesmo que metadados sobre páginas individuais que um usuário visita possam não ser considerados confidenciais, quando agregados podem revelar muito sobre o usuário e comprometer sua privacidade.

A implantação de HTTPS também permite o uso de HTTP / 2 (ou seu predecessor, o protocolo SPDY , agora obsoleto ), que é uma nova geração de HTTP projetada para reduzir o tempo, o tamanho e a latência de carregamento da página.

É recomendado usar HTTP Strict Transport Security (HSTS) com HTTPS para proteger os usuários de ataques man-in-the-middle, especialmente SSL stripping .

O HTTPS não deve ser confundido com o HTTP Seguro (S-HTTP) raramente usado, especificado no RFC 2660.

Uso em sites

Em abril de 2018, 33,2% dos principais 1.000.000 sites Alexa usam HTTPS como padrão, 57,1% dos 137.971 sites mais populares da Internet têm uma implementação segura de HTTPS e 70% dos carregamentos de página (medidos pela telemetria do Firefox) usam HTTPS.

Integração do navegador

A maioria dos navegadores exibe um aviso se receber um certificado inválido. Os navegadores mais antigos, ao se conectar a um site com um certificado inválido, apresentavam ao usuário uma caixa de diálogo perguntando se ele queria continuar. Os navegadores mais recentes exibem um aviso em toda a janela. Os navegadores mais recentes também exibem com destaque as informações de segurança do site na barra de endereço . Os certificados de validação estendida mostram a entidade legal nas informações do certificado. A maioria dos navegadores também exibe um aviso ao usuário ao visitar um site que contém uma mistura de conteúdo criptografado e não criptografado. Além disso, muitos filtros da web retornam um aviso de segurança ao visitar sites proibidos.

A Electronic Frontier Foundation , opinando que "Em um mundo ideal, cada solicitação da web poderia ser padronizada para HTTPS", forneceu um add-on chamado HTTPS Everywhere para Mozilla Firefox , Google Chrome , Chromium e Android , que habilita HTTPS por padrão para centenas de sites usados ​​com frequência.

Segurança

A segurança do HTTPS é a do TLS subjacente, que normalmente usa chaves públicas e privadas de longo prazo para gerar uma chave de sessão de curto prazo , que é então usada para criptografar o fluxo de dados entre o cliente e o servidor. Os certificados X.509 são usados ​​para autenticar o servidor (e às vezes o cliente também). Como consequência, as autoridades de certificação e os certificados de chave pública são necessários para verificar a relação entre o certificado e seu proprietário, bem como para gerar, assinar e administrar a validade dos certificados. Embora isso possa ser mais benéfico do que verificar as identidades por meio de uma rede de confiança , as divulgações de vigilância em massa de 2013 chamaram a atenção das autoridades de certificação como um ponto fraco em potencial que permite ataques man-in-the-middle . Uma propriedade importante neste contexto é o sigilo de encaminhamento , que garante que as comunicações criptografadas gravadas no passado não possam ser recuperadas e descriptografadas caso as chaves secretas ou senhas de longo prazo sejam comprometidas no futuro. Nem todos os servidores da web fornecem sigilo de encaminhamento.

Para que o HTTPS seja eficaz, um site deve ser completamente hospedado por HTTPS. Se algum conteúdo do site for carregado por HTTP (scripts ou imagens, por exemplo), ou se apenas uma determinada página que contém informações confidenciais, como uma página de login, for carregada por HTTPS enquanto o restante do site é carregado pelo HTTP simples, o usuário ficará vulnerável a ataques e vigilância. Além disso, os cookies em um site servido por meio de HTTPS devem ter o atributo seguro habilitado. Em um site que contém informações confidenciais, o usuário e a sessão serão expostos sempre que o site for acessado com HTTP em vez de HTTPS.

Técnico

Diferença de HTTP

URLs HTTPS começam com "https: //" e usam a porta 443 por padrão, enquanto URLs HTTP começam com "http: //" e usam a porta 80 por padrão.

O HTTP não é criptografado e, portanto, é vulnerável a ataques man-in-the-middle e de espionagem , que podem permitir que invasores obtenham acesso a contas de sites e informações confidenciais, além de modificar páginas da web para injetar malware ou anúncios. HTTPS é projetado para resistir a tais ataques e é considerado seguro contra eles (com exceção de implementações HTTPS que usam versões obsoletas de SSL).

Camadas de rede

O HTTP opera na camada mais alta do modelo TCP / IP - a camada de aplicativo ; assim como o protocolo de segurança TLS (operando como uma subcamada inferior da mesma camada), que criptografa uma mensagem HTTP antes da transmissão e descriptografa uma mensagem na chegada. A rigor, HTTPS não é um protocolo separado, mas se refere ao uso de HTTP comum em uma conexão SSL / TLS criptografada .

HTTPS criptografa todo o conteúdo da mensagem, incluindo os cabeçalhos HTTP e os dados de solicitação / resposta. Com exceção do possível ataque criptográfico CCA descrito na seção de limitações abaixo, um invasor deve no máximo ser capaz de descobrir que uma conexão está ocorrendo entre duas partes, junto com seus nomes de domínio e endereços IP.

Configuração do servidor

Para preparar um servidor da web para aceitar conexões HTTPS, o administrador deve criar um certificado de chave pública para o servidor da web. Este certificado deve ser assinado por uma autoridade de certificação confiável para que o navegador da web o aceite sem aviso prévio. A autoridade certifica que o detentor do certificado é o operador do servidor web que o apresenta. Os navegadores da Web geralmente são distribuídos com uma lista de certificados de assinatura das principais autoridades de certificação para que possam verificar os certificados assinados por elas.

Aquisição de certificados

Existem várias autoridades de certificação comerciais , oferecendo certificados SSL / TLS pagos de vários tipos, incluindo certificados de validação estendida .

Let's Encrypt , lançado em abril de 2016, oferece um serviço gratuito e automatizado que entrega certificados SSL / TLS básicos para sites. De acordo com a Electronic Frontier Foundation , Let's Encrypt tornará a mudança de HTTP para HTTPS "tão fácil quanto emitir um comando ou clicar em um botão". A maioria dos hosts da Web e provedores de nuvem agora usa o Let's Encrypt, fornecendo certificados gratuitos para seus clientes.

Use como controle de acesso

O sistema também pode ser usado para autenticação de cliente , a fim de limitar o acesso a um servidor web para usuários autorizados. Para fazer isso, o administrador do site normalmente cria um certificado para cada usuário, que o usuário carrega em seu navegador. Normalmente, o certificado contém o nome e o endereço de e-mail do usuário autorizado e é verificado automaticamente pelo servidor em cada conexão para verificar a identidade do usuário, potencialmente sem nem mesmo exigir uma senha.

Em caso de chave secreta (privada) comprometida

Uma propriedade importante neste contexto é o sigilo direto perfeito (PFS). Possuir uma das chaves secretas assimétricas de longo prazo usadas para estabelecer uma sessão HTTPS não deve facilitar a derivação da chave de sessão de curto prazo para descriptografar a conversa, mesmo em um momento posterior. A troca de chaves Diffie – Hellman (DHE) e a troca de chaves Diffie – Hellman (ECDHE) da curva elíptica são, em 2013, os únicos esquemas conhecidos com essa propriedade. Em 2013, apenas 30% das sessões do Firefox, Opera e Chromium Browser o usavam, e quase 0% das sessões do Safari da Apple e do Microsoft Internet Explorer . O TLS 1.3, publicado em agosto de 2018, abandonou o suporte para cifras sem sigilo de encaminhamento. Em fevereiro de 2020, 96,6% dos servidores da web pesquisados ​​oferecem suporte a alguma forma de sigilo de encaminhamento e 52,1% usarão o sigilo de encaminhamento com a maioria dos navegadores.

Um certificado pode ser revogado antes de expirar, por exemplo, porque o sigilo da chave privada foi comprometido. As versões mais recentes de navegadores populares como Firefox , Opera e Internet Explorer no Windows Vista implementam o Protocolo de Status de Certificados Online (OCSP) para verificar se esse não é o caso. O navegador envia o número de série do certificado para a autoridade de certificação ou seu delegado via OCSP (Online Certificate Status Protocol) e a autoridade responde, informando ao navegador se o certificado ainda é válido ou não. A CA também pode emitir uma CRL para informar às pessoas que esses certificados são revogados.

Limitações

A criptografia SSL (Secure Sockets Layer) e TLS (Transport Layer Security) pode ser configurada em dois modos: simples e mútuo . No modo simples, a autenticação é realizada apenas pelo servidor. A versão mútua requer que o usuário instale um certificado de cliente pessoal no navegador da web para autenticação do usuário. Em ambos os casos, o nível de proteção depende da correção da implementação do software e dos algoritmos criptográficos em uso.

SSL / TLS não impede a indexação do site por um rastreador da web e, em alguns casos, o URI do recurso criptografado pode ser inferido sabendo-se apenas o tamanho da solicitação / resposta interceptada. Isso permite que um invasor tenha acesso ao texto simples (o conteúdo estático disponível publicamente) e ao texto criptografado (a versão criptografada do conteúdo estático), permitindo um ataque criptográfico .

Como o TLS opera em um nível de protocolo abaixo do HTTP e não tem conhecimento dos protocolos de nível superior, os servidores TLS só podem apresentar estritamente um certificado para um determinado endereço e combinação de porta. No passado, isso significava que não era viável usar hospedagem virtual baseada em nome com HTTPS. Existe uma solução chamada Server Name Indication (SNI), que envia o nome do host para o servidor antes de criptografar a conexão, embora muitos navegadores antigos não suportem esta extensão. O suporte para SNI está disponível desde Firefox 2, Opera 8, Apple Safari 2.1, Google Chrome 6 e Internet Explorer 7 no Windows Vista .

Do ponto de vista arquitetônico:

  • Uma conexão SSL / TLS é gerenciada pela primeira máquina frontal que inicia a conexão TLS. Se, por qualquer motivo (roteamento, otimização de tráfego, etc.), esta máquina frontal não é o servidor de aplicativos e tem que decifrar os dados, soluções devem ser encontradas para propagar as informações de autenticação do usuário ou certificado para o servidor de aplicativos, que precisa saber quem será conectado.
  • Para SSL / TLS com autenticação mútua, a sessão SSL / TLS é gerenciada pelo primeiro servidor que inicia a conexão. Em situações em que a criptografia precisa ser propagada ao longo de servidores encadeados, o gerenciamento de tempo de saída da sessão torna-se extremamente difícil de implementar.
  • A segurança é máxima com SSL / TLS mútuo, mas no lado do cliente não há maneira de encerrar adequadamente a conexão SSL / TLS e desconectar o usuário, exceto aguardando a expiração da sessão do servidor ou fechando todos os aplicativos clientes relacionados.

Um tipo sofisticado de ataque man-in-the-middle chamado SSL stripping foi apresentado na Conferência Blackhat de 2009 . Esse tipo de ataque anula a segurança fornecida pelo HTTPS ao transformar o https:link em um http:link, aproveitando o fato de que poucos usuários da Internet realmente digitam "https" na interface do navegador: eles chegam a um site seguro clicando em um link e portanto, são enganados ao pensar que estão usando HTTPS, quando na verdade estão usando HTTP. O invasor então se comunica claramente com o cliente. Isso levou ao desenvolvimento de uma contramedida em HTTP chamada HTTP Strict Transport Security .

HTTPS demonstrou ser vulnerável a uma série de ataques de análise de tráfego . Ataques de análise de tráfego são um tipo de ataque de canal lateral que depende de variações no tempo e no tamanho do tráfego para inferir propriedades sobre o próprio tráfego criptografado. A análise de tráfego é possível porque a criptografia SSL / TLS altera o conteúdo do tráfego, mas tem impacto mínimo no tamanho e no tempo do tráfego. Em maio de 2010, um artigo de pesquisa de pesquisadores da Microsoft Research e da Universidade de Indiana descobriu que dados confidenciais detalhados do usuário podem ser inferidos de canais secundários, como tamanhos de pacotes. Os pesquisadores descobriram que, apesar da proteção HTTPS em vários aplicativos da web top de linha de alto perfil em saúde, tributação, investimento e pesquisa na web, um intruso poderia inferir as doenças / medicamentos / cirurgias do usuário, seu / sua renda familiar e segredos de investimento. Embora este trabalho tenha demonstrado a vulnerabilidade do HTTPS à análise de tráfego, a abordagem apresentada pelos autores exigia uma análise manual e se concentrava especificamente em aplicativos da web protegidos por HTTPS.

O fato de a maioria dos sites modernos, incluindo Google, Yahoo! E Amazon, usarem HTTPS causa problemas para muitos usuários que tentam acessar pontos de acesso Wi-Fi públicos, porque uma página de login de ponto de acesso Wi-Fi falha ao carregar se o usuário tentar abra um recurso HTTPS. Vários sites, como neverssl.com e nonhttps.com , garantem que permanecerão sempre acessíveis por HTTP.

História

A Netscape Communications criou o HTTPS em 1994 para seu navegador Netscape Navigator . Originalmente, HTTPS era usado com o protocolo SSL . Conforme o SSL evoluiu para Transport Layer Security (TLS), o HTTPS foi formalmente especificado pela RFC 2818 em maio de 2000. O Google anunciou em fevereiro de 2018 que seu navegador Chrome marcaria sites HTTP como "Não seguros" após julho de 2018. Essa mudança foi para encorajar o site proprietários para implementar HTTPS, como um esforço para tornar a World Wide Web mais segura.

Veja também

Referências

links externos