HTTPs

O que é HTTPs?

HTTPs é a combinação do protocolo HTTP com o SSL (Secure Sockets Layer). É a maneira mais comum atualmente de trafegar documentos via HTTP de maneira segura. Provê encriptação de dados, autenticação de servidor, integridade de mensagem e autenticação de cliente.

O que é SSL?

O gráfico abaixo ilustra muito bem o que é o SSL (Secure Sockets Layer). É uma camada que fica entre a camada de aplicação e a camada de transporte. Foi desenvolvido pela Netscape Communications e tem a função de prover comunicação segura na internet, através da autenticação e encriptação dos pacotes entre o servidor e o cliente.

Como funciona o SSL?

Um site seguro, que usa o HTTPs, deve possuir 3 compontentes essenciais para a comunicação segura: o servidor, o software seguro (faz o trabalho de criptografia) e o certificado de assinatura (assinatura digital).

Este software seguro é proprietário, e é vendido, por exemplo, pela Verisign (a mais conhecida atualmente), por US$ 349,00. O software pode ser instalado na própria máquina do servidor, junto à assinatura digital (uma chave de 512 bits), ou pode estar em um servidor compartilhado.

As páginas que utilizam https possuem uma sutil diferença no endereço, que em vez de ser escrito com o prefixo de protocolo http é apontado por https. Este endereço https geralmente não é divulgado, mas é redirecionado a partir do site principal.

É interessante evitar utilizar páginas seguras quando não for necessário, já que essa utilização implica em um processamento a mais, que é a encriptação e a desencriptação dos dados, além de não ficarem guardadas em cache, o que significa percorrer todo o caminho entre o servidor e o cliente a cada pedido.

O HandShake

Primeiramente, o cliente envia ao servidor sua versão do SSL, configurações de cipher, informação gerada randomicamente e outras informações que o servidor precisa saber.

O sevidor envia uma resposta ao cliente com as mesmas informações.

O servidor envia então o seu certificado e pede também que o cliente envie o seu. Mas não para por aí, continua enviando, e manda sua chave pública, que será usada mais tarde para que o cliente encripte a mensagem de resposta.

O cliente usa a informação enviada pelo servidor para autenticá-lo. Assim ele garante que estará trocando dados com o servidor correto, e não outro que tenha se interposto.

Caso o certificado do cliente tenha sido solicitado, este o envia, caso contrário, envia uma mensagem de "não certificado".

Usando a informação recebida, o cliente cria a chave premaster (premaster secret) para a sessão, encripta com a chave pública do servidor e envia a premaster encriptada para o servidor.

Estando o cliente autenticado (caso fosse requerido) o servidor usa a sua chave privada para desencriptar a chave premaster, então faz uma série de procedimentos para gerar a chave mestra (master secret). O cliente repete os mesmos procedimentos e gera também a chave mestra. Eles utilizam a chave mestra para gerar as chaves de sessão (session keys), que são chaves simétricas usadas para encriptar e desencriptar informação trocada durante a sessão SSL.

Clente e servidor então trocam mensagens encriptadas avisando um ao outro que o handshake terminou e que a partir de então as mensagens trocadas estarão encriptadas com a chave de sessão.


Última atualização em 15 de julho de 2003.
(c) Pablo Pastore, 2003.