quinta-feira, 14 de novembro de 2013

Qual a diferença entre HTTP e HTTPS?

Quando acessamos sites de banco ou lojas virtuais para realizar transações financeiras, recebemos inúmeros avisos para verificar o cadeado de segurança ou observar a sigla HTTPS na barra de endereços do navegador. Nesse artigo, explicarei a importância do HTTPS na Internet e quais as principais vantagens e desvantagens de usar o HTTPS, tanto para o usuário quanto para o servidor do serviço na Web.

Exemplo de sites com HTTPS e certificado (Foto: Reprodução / Cert.br)

O protocolo de transferência de hipertexto (HTTP – HyperText Transfer Protocol) é o protocolo padrão para a Web. Através dele, os navegadores requisitam as páginas da Web e as recebem. Dessa forma, o HTTP define, entre outras formalidades, como são requisitadas as páginas da Web, como são enviados os dados que o usuário insere em formulários e como o servidor envia mensagens de erro para o navegador do usuário. No entanto, como o HTTP é um protocolo baseado em texto, ou seja, toda a informação transmitida está em texto, os dados do usuário e do servidor podem ser interceptados ou alterados no meio do caminho.
Nesse contexto, um usuário na rede pode interceptar os seus dados e lê-los ou, pior, alterar a página que você recebe ou a informação que envia para o servidor. De fato, problemas mais graves e imediatos podem acontecer com transações financeiras, como é o caso de uma transferência bancária. Se o site do banco fosse com HTTP e um usuário mal-intencionado desejasse alterar uma ordem de transferência para depositar o dinheiro na conta dele, esse usuário poderia fazer tranquilamente, pois não há nenhum mecanismo de segurança no protocolo HTTP. Veja essa tirinha abaixo.
Tirinha ilustrando um usuário sendo enganado por um usuário malicioso (Foto: Reprodução / Eilicito.wordpress.com)
Com o uso do HTTPS, que é o HTTP seguro, adiciona-se alguns princípios de segurança, como confidencialidade, integridade e autenticação. Por confidencialidade, entende-se que a mensagem só é lida pelo destinatário real da mensagem, exemplo o banco só ele irá ver sua conta. A integridade representa que a mensagem não foi alterada e o princípio da autenticação prova que o servidor é realmente quem diz ser. Nesse artigo, apresenta-se, portanto, os mecanismos utilizados pelo HTTPS para atingir esses três princípios básicos.
A maioria das explicações resume o HTTPS como um HTTP com o SSL (Secure Sockets Layer) ou, seu sucessor, o TLS (Transport Layer Security). TLS ou SSL são camadas de segurança que fornecem confidencialidade e integridade. No entanto, a autenticação dos sites da Web é feita pelos certificados e pela infraestrutura de chaves públicas da Internet. No entanto, neste artigo, abordaremos as questões mais conceituais. A base do TLS/SSL e dos certificados da Internet é a criptografia.
Para a construção de um Website com HTTPS, o administrador do site precisa criar um par de chaves, uma pública e uma privada. Assim, quando um usuário solicita uma conexão com esse site, o servidor envia a sua chave pública para o usuário. De posse da chave pública, o usuário pode se comunicar com o servidor, garantindo que todas as mensagens enviadas para o servidor somente serão lidas pelo servidor, pois apenas o servidor possui a chave privada. Basta, para isso, que o navegador do usuário encripte todas as requisições e decripte as respostas recebidas com a chave pública do servidor.
Dessa forma, garante-se a confidencialidade, pois o usuário tem certeza que apenas o servidor vai receber suas mensagens e que foi o servidor quem enviou aquela mensagem. De fato, o procedimento na prática é mais complexo, pois utilizar o par de chaves assimétricas para a troca de dados demanda muito processamento. Então, no início da conexão, o servidor e o usuário combinam uma chave simétrica única e aleatória para a conexão. Na prática, é a mesma segurança, pois só os dois conhecem a chave simétrica.
Para garantir a integridade, o TLS/SSL adiciona a cada mensagem, seja ela requisição ou resposta, um código. Esse código é denominado MAC (Message Authentication Code) e busca permitir ao destinatário detectar se a mensagem foi alterada. Seu funcionamento é simples. Calcula-se um resumo (Hash) de cada mensagem e envia-se esse resumo junto com a mensagem. Assim, quando o destinatário receber a mensagem, deve calcular o mesmo resumo e verificar se o resumo calculado é igual ao recebido. Se for igual, a mensagem não foi alterada, mas se for diferente, o destinatário deve descartar a mensagem e pedir uma nova.
Assim, com o TLS/SSL adicionado ao HTTP, o HTTPS garante tanto a confidencialidade quanto a integridade das requisições e respostas do protocolo. No entanto, apenas com o TLS/SSL não é possível garantir que o servidor é realmente quem ele diz ser. Isso ocorre, pois a chave pública é enviada para o navegador pelo próprio servidor Web. Dessa forma, se o usuário malicioso falar com o usuário como se fosse o servidor, o usuário envia os dados para o usuário malicioso pensando que está conversando com o servidor legítimo. Para evitar esse problema, na Internet, criou-se uma infraestrutura de chaves públicas.

Assim, após criar o seu par de chaves, o administrador do Website deve registrar esse par de chaves em uma autoridade certificadora da Internet. A autoridade certificadora funciona como um cartório do mundo real e emite um certificado confirmando que aquela chave pública é realmente do site. Esse processo, nos certificados mais fortes, envolve, inclusive, o sócio do site indo pessoalmente até a sede da autoridade certificadora portando os documentos legais da empresa. Dessa forma, quando um site possui um certificado, o navegador o exibe com todas as informações da empresa que o emitiu.
O funcionamento é simples, quando o servidor envia a chave pública para o usuário, ele também envia o certificado que atesta a validade da chave pública. Assim, o usuário consulta a autoridade certificadora para verificar o certificado, que pode inclusive ter sido revogado. Caso a autoridade certificadora ateste a validade do certificado, o navegador confia na chave pública recebida e se comunica com o servidor tendo a certeza de que é o servidor legítimo.
Exemplo de certificado de servidor legítimo do banco do brasil (Foto: Reprodução / Pedro Pisa)
Para o usuário, o site com HTTPS oferece a vantagem da segurança. No entanto, podemos nos perguntar por que todos os sites não utilizam HTTPS. A resposta é custo e desempenho. Primeiramente, a validação do certificado pela autoridade certificadora é cobrada, custando, em algumas modalidades, mais de R$ 3.000,00 (três mil reais) por ano. Nem todos os serviços na Web desejam ou podem pagar quantias como essas.

Além disso, utilizar HTTPS nos serviços web reduz drasticamente o desempenho da comunicação. Por esses motivos, os sites evitam utilizar o HTTPS, reservando-o apenas para as transações mais sensíveis, como as financeiras. No entanto, não esqueça de observar o uso correto do HTTPS também em redes sociais, serviços de e-mail, discos virtuais e outras aplicações que exijam senhas ou o envio de dados pessoais. Essas informações também são sensíveis e requerem cuidado ao serem enviadas na Internet.
Finalizamos este artigo deixando o espaço de comentários para nossos leitores. Utilize esse espaço para deixar comentários, dúvidas ou mesmo contar experiências com serviços na Internet que não utilizam ou utilizam erradamente o HTTPS. Esse espaço é seu e até a próxima. Espero ter sido útil.

Nenhum comentário:

Postar um comentário