Você está na página 1de 3

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.