Como funciona o SSL

O funcionamento do SSL é relativamente simples, a quantidade de passos necessárias até se atingir a conexão segura é bem pouca, mas é necessário o entendimento de alguns conceitos por trás desse funcionamento, como a PKI (Public Key Infrastructure) e criptografia assimétrica.

Criptografia Assimétrica

Também conhecido como criptografia de chave pública, do inglês Public-key Criptography, esse paradigma consiste em um par de chaves, sendo uma pública e a outra privada, onde a pública, como o nome já sugere, é de acesso de todos, e a privada é uma chave que apenas a entidade detentora do par de chaves possui.

O funcionamento desse paradigma é simples. A chave pública é de acesso de todos, ou seja, qualquer um pode usar essa chave para criptografar a sua mensagem, porém a mensagem não é descriptografada pela mesma chave, isso só pode ser feito com a chave privada. Basicamente a chave pública encriptografa algo que só a chave privada é capaz de descriptografar.

PKI

Pode-se dizer que a PKI é a implementação das autoridades de certificado. Ela é a responsável pela distribuição e autenticação de chaves publicas, possibilitando a troca de dados segura pela internet. Para que essa infraestrutura funcione são necessários softwares, políticas e métodos para administrar, distribuir e revogar chaves e certificados digitais. O certificado digital em particular é o âmago dessa estrutura, pois ele é a afirmação da identidade do proprietário e vincula sua identidade à chave publica contida no certificado. A PKI se resume nos seguintes elementos:

  • Certificate Authority: São a as entidades de maior confiança possível, elas fornecem serviços de autenticação de entidades, como servidores, usuários, etc.
  • Registration Authority: Pode-se dizer que são subordinadas as CAs e tem a função de conter a sobrecarga nas CA’s e emitem certificados para alguns usos específicos que ainda assim precisam ser permitido pelas CA’s.
  • Banco de dados de certificados: Armazenam requisições de certificados, emitem e revogam certificados.
  • Web-Browsers: Principalmente no lado dos usuários, estes contém uma lista de várias CAs de confiança, assim, quando um certificado digital é recebido eles são capazes de decidir se confiam ou não em sua procedência.

A CA emite certificados digitais para entidades após verificar sua identidade. Ele assina estes certificados usando sua chave privada. Sua chave pública é disponibilizada a todas as partes interessadas em um certificado CA auto-assinado. CAs utilizam estes certificados raiz confiáveis para criar uma cadeia de confiança. Muitos certificados de raiz são incorporados em navegadores da Web para que eles tenham embutido confiança nessas CAs. Junto com a chave pública do indivíduo, certificados digitais contêm informações como:

  • O algoritmo usado para criar a assinatura
  • A entidade identificada
  • A assinatura digital do CA que verificou os dados da entidade e emitiu o certificado, a finalidade da criptografia da chave pública
  • Assinatura de certificado
  • Período de validade do certificado.
Fluxo de Funcionamento do SSL

Ao iniciar uma conexão, o primeiro passo é o chamado handshake, onde o cliente envia para o servidor um apanhado de especificações para a conexão, como por exemplo a versão de SSL que esta rodando, conjunto de criptografias possíveis para a conexão, etc. O servidor então recebe essa mensagem e toma decisões baseado no que recebeu. Por exemplo, o servidor escolhe a maior versão possível de SSL para utilizar por motivos de segurança e escolhe o algoritmo de criptografia baseado em algum critério. Feito isso, o servidor envia para o cliente seu certificado digital. Este, contém sua chave pública, contida no certificado digital, que será usada pelo cliente para dar início a uma conexão segura e verificar a autenticidade da chave com a Certification Authority. De posse da chave pública do servidor, o cliente responde enviando uma chave criada com o método de criptografia combinado previamente, que poderia ser por exemplo um método de chave simétrica, criptografando esta mensagem usando a chave pública recebida. O servidor, único detentor da chave privada capaz de descriptografar a mensagem enviada pelo cliente, lê a mensagem e partir dali dá início a uma conexão baseada no método de criptografia escolhido. Com ambos de posse da chave simétrica a ser utilizada, o processo de handshake esta terminado e a partir de agora cliente e servidor trocarão mensagens seguramente nesta sessão SSL. Após concluída as tarefas a serem feitas nesta comunicação, a sessão SSL é destruída.

Detalhes Adicionais

Era de se esperar que para segurança ser a melhor possível a conexão se mantivesse no esquema de chaves assimétricas. Entretanto, as chaves públicas, por serem enviadas pela rede sem proteção, precisam ter um número muito grande de bits que são em geral quatro vezes maior do que uma chave gerada por uma criptografia simétrica. Assim, usar o esquema de chaves publicas e privadas durante todo o processo causaria um overhead excessivo. Portanto só são utilizados para negociação de qual criptografia simétrica utilizarão.