Secure Sockets Layer

 

Sessões

 

O SSL fornece um serviço de segurança sem que seja necessária a manipulação de chaves criptográficas por parte do usuário. Como já foi mencionado, seu uso mais comum é em servidores web e web browsers, que são geralmente utilizados por leigos.

Quando uma URL (Uniform Resource Locator) iniciada por "https://" e indicando uma porta diferente de 80 (o default é 443) é fornecida ao browser, este automaticamente aciona o SSL. A utilização de uma sessão segura é indicada ao usuário geralmente por meio de um aviso e de um indicador específico na janela do browser (em geral o desenho de uma chave, que se ilumina).

 

Estabelecimento de uma sessão

 

Uma sessão SSL é estabelecida por uma seqüência de handshake entre o cliente e o servidor. Esta sequência utiliza três protocolos:

  • SSL Handshake Protocol - Promove o estabelecimento da sessão entre cliente e servidor;
  • SSL Change Cipher Spec Protocol - Estabelece o mecanismo de criptografia a ser utilizado na sessão;
  • SSL Alert Protocol - Composto por eventuais mensagens de erro entre cliente e servidor.

Estes protocolos, assim como os dados da aplicação, são encapsulados em um SSL Record Protocol.

A seqüência de handshake pode variar, dependendo de se o servidor está configurado para fornecer um certificado ao cliente, ou exigir um certificado deste. Há também casos onde etapas adicionais são necessárias para o gerenciamento de informações criptográficas. Em situações gerais, os procedimentos para estabelecimento de uma conexão SSL são:

  1. Cliente e servidor trocam mensagens de saudação (Hello) que contém dados randômicos;
  2. O servidor envia ao cliente sua chave pública, junto a um certificado assinado;
  3. O cliente gera dados randômicos para usar como um "segredo compartilhado", enviando em seguida estes dados ao servidor, criptografados com a chave pública dele, em uma mensagem denominada Client Key Exchange;
  4. Cliente e servidor utilizam uma combinação dos dados randômicos trocados e dos dados secretos gerados pelo cliente para gerar as chaves criptográficas que serão utilizadas;
  5. O cliente envia uma mensagem denominada Change Cypher Spec para determinar o serviço de criptografia a ser utilizado, e uma mensagem de fim de estabelecimento de conexão (Finished);
  6. O servidor responde com o envio de ambos o Change Cypher Spec e a mensagem Finished.

Ambas as mensagens de fim de estabelecimento de conexão são protegidas pelos parâmetros de criptografia adotados. Deste modo, cliente e servidor podem garantir que estão aptos a se comunicar de forma segura.

Estabelecida a conexão, cliente e servidor podem trocar dados de forma segura. Cada registro de dados é individualmente encapsulado em um SSL Record Protocol e um valor hash é calculado, de modo a garantir a integridade dos dados. Caso os dados sejam alterados por terceiros, um valor hash inválido será gerado, possibilitando a identificação do fato. Não há a preocupação com erros de transmissão, pois o TCP fornece um serviço confiável de entrega de dados.

Para encerrar a conexão, uma das partes envia uma mensagem comunicando este fato (Close Notify).

 

Reestabelecimento de uma sessão

 

Caso o cliente queira estabelecer outra sessão com o servidor, ele pode dar continuidade a uma sessão estabelecida anteriormente fornecendo seu identificador de sessão em sua mensagem Hello.

Isto aciona uma versão resumida do protocolo de handshake, de modo que os parâmetros de segurança e a chave de sessão pré-estebelecidos sejam utilizados.

Este método evita overhead com o estabelecimento de sessões, visto que o tráfego de dados via web browser é tipicamente caracterizado por várias sessões, simultâneas ou consecutivas, entre um cliente e um servidor.

 


[ Índice | Introdução | História ]
[ Funcionamento | Sessões | Referências ]