menu

SSL: Secure Sockets Layer

Resumo

Neste trabalho, serão apresentados os conceitos e mecanismos utilizados pelos protocolos SSL e TLS para proteção e criptografia de conexões na Internet. Além disso, serão mostradas algumas vulnerabilidades das versões mais antigas do SSL.

Autores:

Disciplina: EEL878 - Redes de Computadores I - 2023.1

Professor: Luís Henrique Maciel Kosmalski Costa

Termo de Responsabilidade

Este trabalho foi totalmente produzido pelos autores que declaram não terem violado os direitos autorais de terceiros, sejam eles pessoas físicas ou jurídicas. Havendo textos, tabelas e figuras transcritos de obras de terceiros com direitos autorais protegidos ou de domínio público tal como idéias e conceitos de terceiros, mesmo que sejam encontrados na Internet, os mesmos estão com os devidos créditos aos autores originais e estão incluídas apenas com o intuito de deixar o trabalho autocontido. O(s) autor(es) tem(êm) ciência dos Artigos 297 a 299 do Código Penal Brasileiro e também que o uso do artifício de copiar/colar texto de outras fontes e outras formas de plágio é um ato ilícito, condenável e passível de punição severa. No contexto da Universidade a punição não precisa se restringir à reprovação na disciplina e pode gerar um processo disciplinar que pode levar o(s) aluno(s) à suspensão.

1. Introdução

Muito se discute sobre as formas de se manter conexões seguras na Internet, principalmente quando se trata de navegar em websites e compartilhar informações sensíveis. Tal dilema foi objeto de discussão na Netscape Communications Corporation (ou simplesmente "Netscape"), uma empresa de tecnologia fundada em 1994.

Durante a popularização da internet nos anos 90, a Netscape desenvolveu seu primeiro browser: o Netscape Navigator. Na época, não havia garantia de segurança na rede por onde o tráfego da web passava, e a melhor maneira de proteger os dados era fornecer criptografia e descriptografia nos sistemas finais (dispositivos onde a comunicação ocorre entre o cliente e o servidor).

Movida por essa necessidade, a empresa de tecnologia poderia ter incorporado diretamente uma criptografia em seu navegador web, mas essa abordagem não teria sido adequada para fornecer uma solução abrangente, uma vez que outros protocolos além do HTTP poderiam ser utilizados por futuras aplicações.

Como resultado, a Netscape optou por criar o SSL, um protocolo de segurança que foi projetado para ser implementado entre a camada de aplicação e a camada de transporte da pilha TCP/IP.

1.1 SSL ou TLS

Ao pesquisar sobre SSL, existem várias menções a SSL/TLS, como se remetesse a um par de protocolos que significam a mesma coisa. De acordo com a RFC 6101 , publicada em agosto de 2011, o SSL é um protocolo de segurança que fornece privacidade nas comunicações feitas pela Internet, garantindo confidencialidade, integridade e autenticidade dos dados transmitidos entre um cliente e um servidor. Já a RFC 8446, publicada em agosto de 2018, fala sobre o protocolo TLS (Transport Layer Security), que também fornece privacidade nas comunicações feitas pela Internet. Então qual seria a diferença?

Em suma, o SSL e o TLS são dois protocolos independentes. No entanto, o SSL foi considerado insuficientemente seguro pela RFC 7568 devido às diversas vulnerabilidades encontradas nesse protocolo, que permitem a interceptação e leitura do tráfego que deveria ser protegido. Tendo isso em vista, o TLS foi projetado para superar as vulnerabilidades do SSL, contendo aprimoramentos na criptografia e autenticação com o intuito de proporcionar um nível mais elevado de segurança para a proteção dos dados transmitidos.

Vale ressaltar que a maioria das aplicações da atualidade deixaram de suportar o SSL e agora adotam o TLS como protocolo padrão para garantir a segurança das comunicações na Internet.

1.2 Revisão do protocolo TCP/IP

Antes de entender o funcionamento do SSL, é interessante relembrar as cinco camadas que implementam o protocolo TCP/IP. O nome de cada camada, bem como a breve explicação de cada uma, será definido a seguir:

Aplicação
Transporte
Rede
Enlace
Física
Figura 1: Pilha de protocolos da Internet

2. Conceitos de criptografia

Um ponto importante a ser tratado neste estudo são os tipos de encriptação que podem ser utilizados pelo SSL/TLS, dependendo da versão do protocolo escolhida. A seguir, veremos a explicação de alguns algoritmos de criptografia.

2.1 Criptografia simétrica (ou criptografia de chave secreta)

A criptografia simétrica consiste em manter uma chave secreta, compartilhada entre os dois participantes da comunicação, de modo a ser usada tanto na criptografia quanto na descriptografia de uma mensagem.

Descrição da Imagem
Figura 3: Exemplo de criptografia simétrica
Fonte: Inside SSL: the secure sockets layer protocol.

2.2 Criptografia assimétrica (ou criptografia de chave pública)

A criptografia assimétrica consiste na utilização de um par de chaves: uma chave pública e uma chave privada. Quando um cliente deseja enviar informações para o servidor de forma segura, ele pode utilizar a chave pública do servidor para criptografar a mensagem. Dessa forma, quando a mensagem chega ao servidor, é possível usar a chave privada para descriptografar o conteúdo da mensagem.

Descrição da Imagem
Figura 4: Exemplo de criptografia assimétrica
Fonte: Inside SSL: the secure sockets layer protocol.

Esta configuração é mais segura que a criptografia de chave secreta, visto que possuir apenas a chave pública que foi usada na criptografia não é suficiente para descobrir o conteúdo da mensagem. Apenas o portador da respectiva chave privada pode acessar o conteúdo. Tal dinâmica será muito importante no estabelecimento de sessão (handshake) do SSL/TLS.

3. Estabelecimento de sessão

É preciso destacar também a importância do estabelecimento de sessão de forma segura e como isso pode ser feito utilizando o SSL/TLS. Nesse momento, diversas etapas fundamentais do SSL/TLS são realizadas. Pode-se citar algumas delas como a definição da versão do protocolo a ser usada, a seleção de algoritmos de criptografia, a autenticação da conexão e outras.

3.1 Handshake SSL

O Handshake SSL é um sistema de negociação utilizado para estabelecer uma conexão entre cliente e servidor de forma segura criptografando a sessão. Durante o handshake SSL o cliente e o servidor estabelecem chaves secretas importantes para a criptografia da sessão. Além disso, é nesse momento que são definidos parâmetros necessários para essa comunicação segura.

3.2 Etapas para iniciar a comunicação

Antes de iniciar o Handshake SSL, é preciso estabelecer uma conexão TCP, que ocorre da seguinte maneira:

Com a conexão TCP estabelecida, o Handshake SSL pode realizar a autenticação, a troca de chaves e os acordos criptográficos da seguinte maneira:

A imagem a seguir mostra, de forma resumida, as etapas para o estabelecimento de uma sessão SSL/TLS explicadas anteriormente.

Descrição da Imagem
Figura 5: Etapas do handshake TLS 1.2
Fonte: Taking a Closer Look at the SSL/TLS Handshake.

4. Certificados Digitais

Sabendo do funcionamento do Handshake SSL, nota-se a importância de entender o que são os certificados digitais e como funcionam. Os certificados SSL/TLS são componentes essenciais para a criação de conexões seguras na internet, já que servem para autenticar servidores e garantir a criptografia da comunicação.

4.1 Autoridades Certificadoras

As organizações responsáveis por emitir certificados digitais SSL são chamadas de Autoridades de Certificação. São elas as responsáveis por fazer a verificação de quem solicita o certificado e assinar tal certificado digitalmente garantindo assim a autenticidade. Dessa forma, percebe-se a posição de relevância que essas autoridades ocupam no processo de certificação.

4.2 Processo de emissão e validação de certificados

Para a geração de um certificado SSL, uma organização interessada deve enviar uma solicitação para uma Autoridade Certificadora com informações sobre a identidade da organização e sua chave pública. A autoridade verifica as informações e confirma a identidade do solicitante e gera o certificado SSL contendo informações como o nome do domínio, chave pública do servidor, data de validade do certificado e assinatura digital da Autoridade de Certificação. Então, o certificado é instalado no servidor e apresentado aos clientes que tentam acessá-lo para autenticar sua identidade. Os clientes por sua vez, possuem uma lista de Autoridades de Certificação confiáveis previamente armazenadas e assim validam a conexão.

5. Vulnerabilidades conhecidas

Por mais que o SSL 3.0 seja altamente inseguro, alguns websites podem ainda oferecer suporte a conexões que utilizam esse protocolo, juntamente com versões anteriores do TLS 1.3 . Tal atitude pode levar a sérios problemas de segurança, conforme veremos a seguir.

5.1 Exemplo de ataque e falha no SSL

Um ataque conhecido que explora uma falha do SSL 3.0 é o POODLE (Padding Oracle On Downgraded Legacy Encryption), que permite ao atacante roubar cookies de autenticação em conexões HTTPS e entrar em sites usando a identidade da vítima, se passando por ela.

O exploit ocorre da seguinte maneira: um agente mal intencionado se posiciona no meio da conexão entre um cliente e o servidor (man-in-the-middle) e tenta bloquear a primeira requisição TLS feita ao servidor pelo cliente, forçando a utilização do SSL 3.0 (um protocolo inseguro).

Resgatando o que foi discutido na introdução deste trabalho, vimos que o protocolo TLS substituiu amplamente o SSL para comunicações seguras na Internet. No entanto, alguns navegadores ainda podem reverter para o SSL 3.0 quando uma conexão TLS não está disponível. Assim, o atacante aproveita dessa situação para se infiltrar na sessão de comunicação e forçar o navegador a utilizar o SSL 3.0.

Caso tenha sucesso, o atacante pode descriptografar partes da comunicação utilizando o modo de operação CBC (Cipher Block Chaining) do SSL, uma técnica de criptografia simétrica utilizada em cifras de bloco.

Figura 6: Criptografia e descriptografia do modo de operação CBC
Fonte: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation.

Neste modo de operação, os dados a serem criptografados são divididos em blocos fixos, geralmente de 64 bits ou 128 bits, de forma que cada bloco é combinado com o bloco anterior por meio de uma operação de XOR antes de ser criptografado. O ponto principal é que o ataque POODLE em si não explora diretamente o modo de operação CBC, e sim da falta de autenticação do preenchimento (padding) nos blocos criptografados no SSL 3.0.

6. Conclusão

Neste trabalho, foi vista a importância da adoção do protocolo SSL/TLS na segurança cibernética, utilizado para proteger e criptografar conexões na Internet.

Também foram vistos os conceitos de criptografia simétrica e assimétrica, seguidos pelos procedimentos para o estabelecimento de sessões seguras.

Por fim, foi estudada a criação e aplicação dos certificados digitais, bem como uma das graves vulnerabilidades conhecidas envolvendo a dinâmica dos protocolos SSL e TLS.

7. Perguntas

8. Bibliografia