TLS: como funciona a encriptação na Internet
O TLS (Transport Layer Security) é um protocolo de encriptação que garante a transmissão segura de dados na Internet. É o sucessor do já obsoleto SSL e, atualmente, é utilizado quase exclusivamente na sua versão TLS 1.3.
O que é o TLS?
Nos primeiros anos da Internet, a segurança dos dados não era uma prioridade como é hoje. Todas as comunicações eram transmitidas de forma aberta e sem encriptação entre computadores, algo semelhante a enviar um postal: qualquer pessoa que o transportasse podia ler o seu conteúdo.
Com a chegada do protocolo TLS, também conhecido como SSL/TLS, foi introduzida a encriptação dos dados transmitidos. Continuando com o mesmo exemplo, esta encriptação seria como colocar o postal num envelope selado que só o destinatário legítimo pode abrir.
TLS é a sigla de Transport Layer Security, que se traduz para o português como «segurança da camada de transporte». Esta designação refere-se à camada de transporte do modelo TCP/IP. O TLS é um processo que encripta os fluxos de dados da Internet para que apenas os seus destinatários legítimos possam lê-los.
O antigo nome do protocolo de encriptação era SSL (Secure Socket Layer). Uma vez que esta abreviatura continua a ser mais popular do que TLS, é comum referirmos-nos ao TLS utilizando a dupla denominação SSL/TLS.
Como funciona o TLS?
O TLS encripta, através de encriptação simétrica, todo o tráfego de dados que passa pelo TCP.
Embora pareça fácil na teoria, na prática a situação é mais complicada. O principal problema é que o servidor tem de comunicar a chave ao cliente e, além disso, tem de o fazer antes de a comunicação ser protegida por TLS. Se costuma enviar ficheiros encriptados por e-mail, já deve conhecer este problema: encripta um ficheiro e depois tem de partilhar a palavra-passe com o destinatário, por exemplo, por telefone.
O protocolo TLS, cuja versão atual é a 1.3 desde 2018, utiliza o seguinte procedimento para garantir uma ligação segura:
- ClientHello: o cliente (por exemplo, um navegador) inicia a ligação enviando uma mensagem chamada ClientHello, que contém informações sobre os métodos de encriptação que suporta. Estes dados incluem conjuntos de encriptação, versões do protocolo, um valor aleatório e o seu próprio valor de troca de chaves Diffie-Hellman (valor ECDHE). Opcionalmente, pode já incluir um primeiro bloco de dados encriptados.
- ServerHello: o servidor responde com uma mensagem chamada ServerHello, na qual seleciona os parâmetros adequados e responde com as suas próprias informações, que incluem o seu valor ECDHE e o seu certificado digital. Este certificado SSL confirma que o servidor é autêntico e não está a usurpar uma identidade. Ao mesmo tempo, inicia-se o cálculo da chave de sessão.
- Cálculo de chaves: ambas as partes calculam de forma independente a mesma chave de sessão (session key) a partir da chave previamente acordada.
- O servidor conclui a troca inicial e inicia a comunicação encriptada. O cliente faz o mesmo e, a partir desse momento, a ligação fica totalmente segura.
Em comparação com versões anteriores, a troca inicial (conhecida coloquialmente como «handshake») do TLS 1.3 é muito mais ágil e segura. Todo o processo descrito requer apenas uma única ida e volta (1 RTT), o que acelera significativamente a ligação.
A razão pela qual a criptografia assimétrica com Diffie-Hellman é utilizada apenas para a transmissão da chave de sessão (mas não para a encriptação do próprio fluxo de dados) deve-se à desvantagem que representa em termos de velocidade: a criptografia assimétrica é relativamente lenta e atrasaria a comunicação de dados.
Prós e contras do TLS
O TLS é uma solução simples para tornar o tráfego de dados na Web mais seguro, uma vez que não exige que as partes encriptem elas próprias o conteúdo, como, por exemplo, os dados de um formulário. Em vez disso, basta que o tráfego seja realizado através do protocolo TLS, independentemente do sistema operativo e das aplicações informáticas utilizadas pelas partes envolvidas. Durante a transmissão, todos os fluxos de dados são encriptados automaticamente.
O preço a pagar por esta segurança é uma ligação ligeiramente mais lenta, uma vez que as etapas do processo que acabámos de descrever —certificado, número aleatório e troca de chaves— são muito exigentes em termos computacionais.
Áreas de aplicação do TLS
Tal como já explicámos, o TLS pode ser utilizado de forma universal, independentemente da aplicação ou do sistema operativo. Consequentemente, existem muitos protocolos de aplicação que dispõem de uma versão segura do TLS. O esquema de nomenclatura é, em muitos casos, muito simples: quando um protocolo utiliza o TLS, basta adicionar um «S» ao final do seu nome.
O principal âmbito de aplicação do TLS é a World Wide Web ou, mais concretamente, o protocolo HTTP. A sua variante encriptada é designada por HTTPS.
Outras aplicações comuns são:
- POP3S: os e-mails do servidor são recebidos através do protocolo POP3.
- IMAPS: a caixa de entrada é sincronizada com o servidor utilizando o protocolo IMAP.
- SMTPS: envio de e-mails.
- FTPS: transferência de ficheiros através do protocolo FTP.
- SIPS: telefonia de voz sobre IP utilizando o protocolo SIP.
- IRCS: conversas encriptadas.
- QUIC: protocolo de transporte desenvolvido pela Google que integra diretamente o TLS 1.3; apresenta-se como uma alternativa ao TCP para obter ligações web mais rápidas e seguras (por exemplo, em HTTP/3)
O OpenVPN, um software livre para criar uma rede privada virtual (VPN), também utiliza o protocolo TLS.
Aplicações do TLS
Algumas aplicações importantes do TLS são:
- OpenSSL: de longe, a sua aplicação mais comum, uma vez que a maioria dos sites utiliza HTTPS.
- GnuTLS: desenvolvido pela Free Software Foundation*.*
- LibreSSL: desenvolvida pela OpenBSD.
- NSS: desenvolvida pela Network Security Services*.*
- BoringSSL: desenvolvida pela Google.
- Rustls: desenvolvida por Joe Birr-Pixton, Dirkjan Ochtman, Daniel McCarney, Josh Aas e a comunidade de código aberto.
- Botan: licença BSD, desenvolvida por Jack Lloyd.
- JSSE: desenvolvida pela Java Secure Socket Extension e pela Oracle.
- S2n: desenvolvida pela Amazon.
Esta lista não é exaustiva. Encontrará mais informações sobre as utilizações do TLS no artigo da Wikipédia «Comparação de implementações TLS».
Ataques conhecidos ao TLS
O TLS não está totalmente imune a ataques e fugas de informação. Alguns pontos de ataque conhecidos são:
- Erros de programação: como a famosa falha de segurança Heartbleed, um grave erro de programação nas primeiras versões do OpenSSL, que foi corrigido em 2014.
- Criptografia fraca: em consequência das restrições norte-americanas à exportação de criptografia, foram desenvolvidas versões exportáveis mais fáceis de decifrar do que as originais.
- Ataques de compressão: utilizar a compressão HTTP em vez da compressão TLS torna mais fácil para os piratas informáticos adivinharem o conteúdo encriptado com TLS através de diferentes processos.
- O ataque BEAST afetou a versão 1.0 do TLS e já foi descrito em 2014. As versões atuais do TLS são mais seguras contra esse tipo de ataques.
- O**ataque Padding Oracle* foi descoberto em 2002 e só foi corrigido na versão 3.0 do SSL. A versão atual 1.3 do TLS não é afetada.
- O ataque ALPACA, descoberto em 2021, demonstra como é possível explorar certificados TLS em servidores mal configurados para redirecionar os utilizadores para outros serviços e, assim, interceptar ou manipular dados.
Além disso, procurou-se evitar a implementação de uma encriptação TLS totalmente segura, para que as autoridades pudessem inspecionar as comunicações encriptadas, por exemplo, caso estivessem relacionadas com transações financeiras ou atividades criminosas. Uma das organizações que mais se empenhou para que o TLS apresentasse um ponto fraco deste tipo foi o ETSI (Instituto Europeu de Normas de Telecomunicações).