O Transport Layer Security ( TLS ) ou "Segurança da camada de transporte" e seu predecessor o Secure Sockets Layer ( SSL ) ou "Layer sockets secure" são protocolos de segurança comercial para redes de computadores , incluindo a Internet . O protocolo SSL foi originalmente desenvolvido pela Netscape Communications Corporation para seu navegador. O órgão de padrões IETF continuou a desenvolvê-lo, renomeando-o como Transport Layer Security (TLS) . Às vezes falamos de SSL / TLS para designar SSL ou TLS indiferentemente .
O TLS (ou SSL ) opera em um servidor cliente de moda . Atende aos seguintes objetivos de segurança:
O protocolo é amplamente utilizado e sua implementação é facilitada pelo fato de que os protocolos da camada de aplicativo, como HTTP , não precisam ser drasticamente modificados para usar uma conexão segura, mas apenas implementados em cima dela. O SSL / TLS , que por O HTTP forneceu HTTPS ao protocolo .
Um grupo de trabalho especial da IETF permitiu a criação de TLS e seu equivalente de modo não conectado UDP , DTLS . Desde que foi assumido pela IETF , o protocolo TLS passou por quatro versões: TLS v1.0 em 1999, TLS v1.1 em 2006, TLS v1.2 em 2008 e TLS v1.3 em 2018.
À medida que a Internet cresceu, mais e mais empresas comerciais começaram a oferecer compras online para pessoas físicas. A oferta cresceu de forma constante, mas a receita do e-commerce permaneceu modesta até que os clientes tivessem confiança suficiente para pagar com cartão de crédito. Uma das maneiras de garantir esse pagamento era usar protocolos de autenticação e criptografia, como SSL. A sessão criptografada é usada para evitar que terceiros interceptem dados confidenciais que passam pela rede: número do cartão ao pagar com cartão do banco , senha quando o usuário se identifica em um site, etc.
Com um sistema SSL, a segurança foi significativamente melhorada e o risco para o cliente muito reduzido, em comparação com os dias em que o pagamento pela Internet ainda era uma tecnologia emergente. Embora, como qualquer sistema de criptografia, SSL / TLS nunca possa ser completamente infalível, o grande número de bancos e sites de comércio eletrônico que o utilizam para proteger as transações de seus clientes pode ser visto como prova de sua resiliência.
Desde 2009, o TLS é usado pela maioria dos servidores da web . O usuário da Internet pode reconhecer que uma transação é criptografada com vários sinais:
A primeira versão do SSL lançada, SSL 2.0, apresentava uma série de falhas de segurança, incluindo a possibilidade de forçar o uso de algoritmos de criptografia mais fracos ou a falta de proteção para handshake e comunicação, possibilidade de um invasor realizar ataques de truncamento. Os protocolos PCT 1.0, depois SSL 3.0, foram desenvolvidos para resolver a maior parte desses problemas, o segundo se tornando rapidamente o protocolo mais popular para proteger as trocas na Internet.
O TLS não é estruturalmente diferente da versão 3 do SSL, mas as mudanças no uso de funções hash significam que os dois protocolos não são diretamente interoperáveis. No entanto, o TLS, como o SSLv3, incorpora um mecanismo de compatibilidade com versões anteriores, ou seja, no início da fase de negociação, o cliente e o servidor negociam a "melhor" versão do protocolo disponível para todos. Por razões de segurança, detalhadas na RFC 6176 publicada em 2011, a compatibilidade do TLS com a versão 2 do SSL foi abandonada.
A geração de chaves simétricas é um pouco mais segura em TLS do que em SSLv3, visto que nenhuma etapa do algoritmo depende exclusivamente do MD5, para o qual surgiram deficiências na criptoanálise .
A primeira versão profissional do TLS 1.3 é wolfSSL , lançada em maio de 2017.
As redes industriais modernas que operam em TCP / IP usam cada vez mais a segurança TLS. Assim, os protocolos para o comando de controle de redes elétricas como IEC-61850, IEC-60870 e DNP3 combinam TLS para proteção contra ataques cibernéticos.
A maioria dos navegadores também são clientes TLS. Os navegadores que oferecem suporte à versão mais recente do TLS 1.2 por padrão são:
Os principais desenvolvedores de navegadores da web anunciaram que encerrarão seu suporte para TLS 1.1 e versões anteriores na primavera de 2020.
HTTPS Everywhere é uma extensão para navegador da web que permite estender o uso de SSL / TLS em determinados sites. Ele ativa a criptografia em páginas onde normalmente está desativado. Obviamente, isso só pode funcionar se o site em questão já oferecer suporte a TLS. A extensão é mantida em conjunto pelo projeto Tor e pela EFF desde 2010.
Na maioria dos casos, o usuário autentica o servidor TLS ao qual se conecta. Essa autenticação é obtida por meio do uso de um certificado digital X.509 emitido por uma autoridade de certificação (CA). Os aplicativos da Web podem usar autenticação de estação de trabalho cliente usando TLS. Assim, é possível oferecer autenticação mútua entre o cliente e o servidor. O certificado do cliente pode ser armazenado em formato de software na estação de trabalho do cliente ou fornecido por um dispositivo de hardware ( smart card , token USB). Esta solução permite oferecer mecanismos de autenticação fortes .
Quando um usuário faz login em um site que usa TLSv1.2 (ou inferior), as seguintes etapas ocorrem:
Opcional: se o servidor também requerer a autenticação do cliente, o cliente envia seu próprio certificado junto com a chave de sessão. O servidor então procede conforme detalhado no ponto 3 para verificar se o certificado do cliente é válido.
Desde o TLSv1.3 , a troca da chave de sessão deve ser feita via Diffie-Hellman com curvas elípticas ( ECDHE ): o RSA não pode mais ser usado para isso.
Em 2001, Serge Vaudenay descobriu um ataque de canal auxiliar contra SSL. Como resultado da atualização padrão, este ataque agora está totalmente obsoleto e não pode mais ser usado. Este ataque tirou vantagem de uma implementação deficiente de preenchimento que era usado quando as entradas eram de tamanho variável. O modo de criptografia CBC ( cipher block chaining ) consiste em dividir os dados em vários blocos do mesmo tamanho e criptografar de forma concatenada (o resultado anterior é usado na criptografia subsequente). O ataque Vaudenay utilizou os tempos de resposta dos servidores em caso de erros durante o enchimento. Com sorte, foi possível descobrir os últimos dados enviados e recuperá-los. No entanto, o ataque foi ineficaz com a criptografia do tipo RC4 e só foi válido sob certas condições. Apesar de tudo, ele foi usado com sucesso contra certos "webmails" que enviaram os mesmos dados várias vezes .
Em março de 2014, uma vulnerabilidade de software foi descoberta na biblioteca OpenSSL: Heartbleed , introduzida por engano em uma atualização do OpenSSL feita dois anos antes. Essa falha foi amplamente divulgada, inclusive na mídia em geral, como o worm Eu te amo em particular em 2000.
Em 15 de outubro de 2014, uma equipe de pesquisa do Google identificou uma falha no design do SSLv3, permitindo que o conteúdo fosse descriptografado. Esse ataque foi denominado POODLE para Padding Oracle On Downgraded Legacy . Ele está presente apenas em SSLv3.
Em 2 de março de 2016, os pesquisadores detalham a falha chamada DROWN . Consiste em usar a versão antiga SSL v2 para descriptografar a tecnologia TLS v1.2.
O objetivo do protocolo DANE é corrigir certas deficiências no TLS, em particular para ataques do tipo MIMT .
7 - camada de aplicação | HTTP , SMTP , FTP , SSH , IRC , SNMP , SIP ... |
6 - camada de apresentação | |
5 - camada de sessão | TLS, SSL, usuário SSH , NetBIOS |
4 - camada de transporte | TCP , UDP , SCTP , RTP , DCCP ... |
3 - camada de rede | IPv4 , IPv6 , ARP , IPX ... |
2 - camada de amarração | Ethernet , 802.11 WiFi , Token ring , FDDI , ... |
1 - camada física | Cabo, fibra óptica , ondas de rádio ... |
Na pilha de protocolos TCP / IP , o SSL fica entre a camada de aplicativo (como HTTP , FTP , SMTP , etc.) e a camada de transporte TCP .
Seu uso mais comum, entretanto, permanece abaixo de HTTP. O SSL é implementado pela camada de sessão da pilha, o que tem duas consequências:
A autenticação de servidor e cliente pode ser feita por meio de certificados eletrônicos ou de segredos pré-compartilhados (ou chave pré-compartilhada) . A autenticação é opcional.
As mensagens trocadas por meio de TLS são chamadas de registros. Normalmente, essas mensagens são encapsuladas em datagramas TCP. Existe uma variante do UDP chamada DTLS . Existem quatro tipos de registros:
A segurança é alcançada por um lado por criptografia assimétrica , como a criptografia RSA , que permite, após a autenticação da chave pública do servidor, a constituição de um segredo compartilhado entre o cliente e o servidor, por outro lado por uma criptografia simétrica (muito mais rápido do que cifras assimétricas), como AES , que é usado na fase de troca de dados, com chaves de criptografia simétricas sendo calculadas a partir do segredo compartilhado. Uma função hash , como SHA-1 , também é usada, entre outras coisas, para garantir a integridade e autenticação dos dados (por exemplo, via HMAC ).
Mais precisamente, as mensagens de dados do aplicativo são criptografadas usando uma chave de criptografia e um algoritmo de criptografia de bloco simétrico, como AES 128, ou por fluxo, como CHACHA20 . Eles são autenticados por meio de uma função HMAC ou diretamente por meio do modo operacional de cifra de bloco simétrico.
As chaves de criptografia e as chaves HMAC são geradas a partir de um segredo trocado entre os dois pares ( segredo pré-mestre) , os dados aleatórios trocados durante a fase de handshake e o uso de uma função de derivação de chave baseada em HMAC. Essa troca secreta pode ser autenticada (ou não) por meio do uso de um algoritmo de assinatura digital , como DSA ou o algoritmo RSA.
No total, existem cinco tipos de chaves criptográficas usadas durante uma sessão TLS:
Os conjuntos criptográficos usados têm o seguinte formato:
onde KE indica um algoritmo de troca secreta, CIPHER um algoritmo de criptografia simétrico e HASH uma função hash . A função HMAC é derivada da função hash.
Por exemplo, o conjunto criptográfico TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 indica que o par pode usar o algoritmo de troca de chave Diffie-Hellman efêmero em curvas elípticas autenticadas pelo algoritmo de assinatura ECDSA , o algoritmo de criptografia simétrica AES 128 no modo GCM e a função hash SHA256.
Na versão 1.2, o algoritmo de troca secreta pode ser RSA ou uma variante do algoritmo Diffie-Hellman (autenticado ou não, efêmero ou não, em curvas elípticas ou não), enquanto para a versão 1.3 apenas o algoritmo The efêmero Diffie-Hellman é permitido e a função de assinatura digital é especificada em extensões para as mensagens ClientHello, ServerHello e HelloRetryRequest da fase de handshake .