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.
-
João Pedro V. C. Sepulvida
Disciplina: EEL878 - Redes de Computadores I - 2023.1
Professor: Luís Henrique Maciel Kosmalski Costa
Termo de Responsabilidade
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 |
- Aplicação: realiza a interface entre a aplicação e a rede, controla os serviços e protocolos utilizados pelas aplicações dos dispositivos finais e permite a comunicação entre eles. Alguns dos principais protocolos são: HTTP (HyperText Transfer Protocol), FTP (File Transfer Protocol), DNS (Domain Name System) e SMTP (Simple Mail Transfer Protocol).
- Transporte: responsável por realizar efetivamente os serviços de comunicação de dados e entrega confiável dos pacotes entre a origem e o destino (fim a fim). Os dois principais protocolos são: TCP (Transmission Control Protocol) e UDP (User Datagram Protocol).
- Rede: faz o roteamento dos pacotes de dados e realiza a comunicação entre os hosts conectados à rede, independentemente de sua localização física. Alguns dos principais protocolos são: IP (Internet Protocol) e ICMP (Internet Control Message Protocol).
- Enlace: camada responsável por realizar a conexão física entre os dispositivos de rede e permitir a transferência de dados entre dispositivos adjacentes (comunicação salto a salto). Alguns dos principais protocolos são: Ethernet e Wi-Fi.
- Físico: lida diretamente com a transmissão física dos bits “no fio”.
- HTTP para HTTPS (HyperText Transfer Protocol Secure) quando se trata da proteção dos dados trafegados pela web;
- SMTP para SMTPS (Simple Mail Transfer Protocol Secure) quando é preciso estabelecer uma conexão segura entre servidores de e-mail;
- FTP para SFTP (Secure File Transfer Protocol) quando é preciso realizar criptografia dos dados transmitidos durante a transferência de arquivos.
HTTP, SMTP, FTP, DNS ... |
SSL/TLS |
TCP, UDP... |
IP, ICMP... |
Ethernet, Wi-Fi... |
Para realizar a proteção e criptografia, o protocolo SSL pode encapsular vários protocolos da camada de aplicação e da camada de transporte. Algumas transformações realizadas para a camada de aplicação são:
Já na camada de transporte, o SSL encapsula o conteúdo transmitido pelos segmentos TCP, garantindo a entrega confiável dos dados. Vale ressaltar que o SSL também pode ser utilizado sobre o UDP, entretanto, é preciso lembrar que não haverá a certeza de que a comunicação será confiável e sem perdas.
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](images/img3.png)
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](images/img4.png)
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:
- O cliente inicia a comunicação com o servidor estabelecendo uma conexão TCP ao enviar um pacote TCP de solicitação de conexão (SYN) para o servidor;
- O servidor recebe o pacote SYN e responde com um pacote SYN-ACK contendo informações sobre portas de origem e destino, e indicando que está disposto a estabelecer a conexão.
- Por fim, o cliente recebe o pacote SYN-ACK do servidor e responde com um pacote ACK, confirmando o estabelecimento da conexão TCP.
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:
- Client Hello: O cliente envia uma mensagem ao servidor, na qual inclui informações sobre as versões SSL/TLS suportadas pelo cliente, algoritmos criptográficos e outras informações relevantes.
- Server Hello: o servidor responde com outra mensagem, selecionando a versão SSL/TLS a ser usada e negociando os parâmetros criptográficos, como o algoritmo de criptografia e o algoritmo de troca de chaves. Além disso, o servidor envia seu certificado digital.
- Certificado Digital: o servidor envia seu certificado digital contendo informações sobre sua identidade e a chave pública associada. O certificado é assinado por uma autoridade de certificação confiável, que garante a autenticidade do certificado.
- Server Hello Done: o servidor envia uma mensagem para indicar que a etapa de negociação de parâmetros está concluída.
- Client Key Exchange: o cliente gera uma chave de sessão aleatória e criptografa-a usando a chave pública do servidor. A chave de sessão será usada para criptografar os dados da comunicação.
- Change Cipher Spec: o cliente envia uma mensagem para notificar o servidor de que as mensagens subsequentes serão criptografadas com a chave de sessão acordada. O servidor também envia outra mensagem Change Cipher Spec em resposta.
- Por fim, o cliente e o servidor trocam mensagens Finished, que contêm um resumo criptografado de todas as etapas do Handshake SSL. Essas mensagens são usadas para garantir a integridade das etapas anteriores e verificar se a comunicação foi estabelecida de forma correta.
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](images/img5.png)
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.
![](images/CBC_encryption.png)
![](images/CBC_decryption.png)
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
- Qual a principal característica que diferencia o SSL do TLS em termos de segurança?
- Explique brevemente a diferença entre criptografia simétrica e criptografia assimétrica.
- Qual o tipo de criptografia utilizada pelo SSL? Explique.
- O que são certificados digitais e qual é o papel das Autoridades Certificadoras no processo de certificação?
- Quais informações podem ser obtidas por um atacante que explora a vulnerabilidade POODLE do protocolo SSL 3.0?
o SSL e o TLS são dois protocolos independentes, entretanto, o SSL foi considerado insuficientemente seguro devido às diversas vulnerabilidades encontradas que permitem a interceptação e leitura do tráfego que deveria ser protegido. Para corrigir as vulnerabilidades do SSL, o TLS foi projetado como uma evolução do SSL pelo IETF (Internet Engineering Task Force).
A criptografia simétrica consiste em manter uma única chave secreta, compartilhada entre o cliente e o servidor, sendo usada tanto para criptografia quanto descriptografia de uma mensagem. Já a criptografia assimétrica consiste na utilização de uma chave pública e uma chave privada. Quando um cliente deseja enviar informações para o servidor, ele pode utilizar a chave pública do servidor para criptografar a mensagem. Quando a mensagem chega ao servidor, é possível usar a chave privada do servidor para descriptografar o conteúdo da mensagem.
Tanto a criptografia simétrica quanto a criptografia assimétrica são utilizadas, mas em momentos diferentes. Inicialmente, a criptografia assimétrica é utilizada para estabelecer uma conexão segura entre o cliente e o servidor, gerando uma chave privada e uma chave pública. Em seguida, utiliza-se a criptografia simétrica, em que tanto o cliente quanto o servidor possuem a mesma chave de sessão compartilhada.
Os certificados digitais são componentes que servem para autenticar servidores e garantir a criptografia da comunicação. Já as Autoridades Certificadoras são entidades confiáveis responsáveis por verificar a identidade de quem solicita um certificado digital e assiná-lo digitalmente.
Um agente mal-intencionado pode descriptografar partes da comunicação para roubar cookies de autenticação em conexões HTTPS. Esses cookies podem ser usados para obter acesso não autorizado à conta do usuário, assumindo sua identidade.
8. Bibliografia
- CANTIERI, ALVARO ROGÉRIO. ANÁLISE DE SEGURANÇA DO PROTOCOLO SSL-SECURE SOCKET LAYER. Diss. Universidade Federal do Paraná, 2002.
- Chou, Wesley. Inside SSL: the secure sockets layer protocol. IT professional 4.4 (2002): 47-52.
- COSTA, R. "Segurança Computacional: Modos de Cifras". Disponível em: https://docente.ifsc.edu.br/robson.costa/ensino/seg_cc/Modos_de_Cifras.pdf.
- eG Innovations, Inc. "What is a POODLE Attack and What to Do About It". Disponível em: https://www.eginnovations.com/blog/poodle-attack-vulerability/.
- Eldewahi, Abeer EW, et al. SSL/TLS Attacks: Analysis and Evaluation. 2015 International Conference on Computing, Control, Networking, Electronics and Embedded Systems Engineering (ICCNEEE). IEEE, 2015.
- KUROSE, J.F. Redes de Computadores e a Internet: uma abordagem top-down. 6ª edição. São Paulo: Pearson, 2014.
- M. Husák, M. Cermák, T. Jirsík and P. Celeda, "Network-Based HTTPS Client Identification Using SSL/TLS Fingerprinting," 2015 10th International Conference on Availability, Reliability and Security, Toulouse, France, 2015, pp. 389-396, doi: 10.1109/ARES.2015.35.
- The SSL Store, "Taking a Closer Look at the SSL/TLS Handshake". Disponível em: https://www.thesslstore.com/blog/explaining-ssl-handshake/.