Security Socket Layer e Transport Layer Security
Autores:
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.
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.
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:
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:
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.
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.