Diferença entre SSL e TLS

Respostas:

59

Resumindo, TLSv1.0 é mais ou menos SSLv3.1. Você pode encontrar mais detalhes nesta pergunta em ServerFault .

A maioria dos sites suporta SSLv3 e TLSv1.0, pelo menos, como este estudo indica (artigo de Lee, Malkin e Nahum: Força criptográfica de servidores SSL / TLS: práticas atuais e recentes , IMC 2007) (link obtido na lista de TLS da IETF ) Mais de 98% são compatíveis com TLSv1 +.

Acho que o motivo pelo qual o SSLv3 ainda está em uso é para suporte legado (embora a maioria dos navegadores suporte TLSv1 e alguns TLSv1.1 ou mesmo TLSv1.2 atualmente). Até pouco tempo atrás, algumas distribuições ainda tinham SSLv2 (considerado inseguro) ativado por padrão junto com as outras.

(Você também pode achar esta pergunta interessante, embora seja sobre o padrão de uso de TLS em vez de SSL vs. TLS (você poderia na verdade ter o mesmo padrão com SSL). Isso não se aplica a HTTPS de qualquer maneira, já que HTTPS usa SSL / TLS desde o início da conexão.)

Bruno
fonte
23

De http://www.thoughtcrime.org/blog/ssl-and-the-future-of-authenticity/

No início dos anos 90, no início da World Wide Web, alguns engenheiros da Netscape desenvolveram um protocolo para fazer solicitações HTTP seguras, e o que eles criaram foi chamado de SSL. Dado o relativamente escasso conhecimento sobre protocolos seguros na época, bem como a intensa pressão sob a qual todos na Netscape estavam trabalhando, seus esforços só podem ser vistos como incrivelmente heróicos. É incrível que o SSL tenha durado tanto tempo, em contraste com vários outros protocolos da mesma safra. Definitivamente, aprendemos muito desde então, mas a questão sobre protocolos e APIs é que há muito pouco para voltar.

Houve duas atualizações importantes no protocolo SSL, SSL 2 (1995) e SSL 3 (1996). Eles foram feitos cuidadosamente para serem compatíveis com as versões anteriores, para facilitar a adoção. No entanto, a compatibilidade com versões anteriores é uma restrição para um protocolo de segurança para o qual pode significar vulnerabilidade anterior.

Assim, foi decidido quebrar a compatibilidade com versões anteriores, e o novo protocolo denominado TLS 1.0 (1999). (Em retrospectiva, poderia ter sido mais claro chamá-lo de TLS 4)

As diferenças entre este protocolo e SSL 3.0 não são dramáticas, mas são significativas o suficiente para que o TLS 1.0 e o SSL 3.0 não interoperem.

O TLS foi revisado duas vezes, TLS 1.1 (2006) e TLS 1.2 (2008).

A partir de 2015, todas as versões SSL estão quebradas e inseguras (o ataque POODLE) e os navegadores estão removendo o suporte. O TLS 1.0 é onipresente, mas apenas 60% dos sites oferecem suporte ao TLS 1.1 e 1.2 , um triste estado de coisas.


Se você estiver interessado nessas coisas, recomendo a palestra inteligente e engraçada de Moxie Marlinspike em https://www.youtube.com/watch?v=Z7Wl2FW2TcA

Coronel Panic
fonte
Lembro-me de uma notícia da Usenet: postagem de comp.sources.unix chamada Secure Sockets Layer no final dos anos 1980. Duvido que tenha alguma relação com o que a Netscape fez além do nome.
Marquês de Lorne
10

tls1.0 significa sslv3.1

tls1.1 significa sslv3.2

tls1.2 significa sslv3.3

o rfc acabou de mudar o nome, você pode encontrar o código hexadecimal de tls1.0 é 0x0301, que significa sslv3.1

zhenyu li
fonte
2

O TLS mantém compatibilidade retroativa com SSL e, portanto, o protocolo de comunicação é quase idêntico em qualquer uma das versões aqui mencionadas. As duas diferenças importantes entre SSL v.3, TLS 1.0 e TLS 1.2 são a função pseudo-aleatória (PRF) e a função de hashing HMAC (SHA, MD5, handshake), que é usada para construir um bloco de chaves simétricas para Criptografia de dados do aplicativo (chaves do servidor + chaves do cliente + IV). A principal diferença entre o TLS 1.1 e o TLS 1.2 é que o 1.2 requer o uso de IV "explícito" para proteger contra ataques CBC, embora não haja mudanças no PRF ou no protocolo necessário para isso. O TLS 1.2 PRF é específico para o conjunto de criptografia, o que significa que o PRF pode ser negociado durante o handshake. SSL foi originalmente desenvolvido pela Netscape Communications (histórico) e mais tarde mantido pela Internet Engineering Task Force (IETF, atual). O TLS é mantido pelo Grupo de Trabalho de Rede. Aqui estão as diferenças entre as funções PRF HMAC em TLS:

TLS 1.0 e 1.1

PRF (segredo, rótulo, semente) = P_MD5 (S1, rótulo + semente) XOR P_SHA-1 (S2, rótulo + semente);

TLS 1.2

PRF (segredo, rótulo, semente) = P_hash (segredo, rótulo + semente)

SensorVista
fonte
0

"Se não está quebrado, não toque". SSL3 funciona bem na maioria dos cenários (houve uma falha fundamental encontrada no protocolo SSL / TLS em outubro, mas esta é uma falha de aplicativos mais do que de um procol em si), então os desenvolvedores não se apressam em atualizar seus módulos SSL. O TLS traz uma série de extensões úteis e algoritmos de segurança, mas são uma adição útil e não obrigatória. Portanto, o TLS na maioria dos servidores continua sendo uma opção. Se o servidor e o cliente suportarem, ele será usado.

Atualização: em 2016, SSL 3 e até mesmo TLS até 1.2 são considerados vulneráveis ​​a vários ataques e a migração para TLS 1.2 é recomendada. Também existem ataques a implementações de TLS 1.2, embora sejam dependentes do servidor. O TLS 1.3 está atualmente em desenvolvimento. E agora o TLS 1.2 é obrigatório.

Retorno de chamada de Eugene Mayevski
fonte
2
Não, esta é uma falha de protocolo e os desenvolvedores devem atualizar suas pilhas SSL. Dito isso, existem diretrizes para o uso da extensão de renegociação na RFC 5746 para SSLv3, além das para TLS.
Bruno
Se você mata alguém com a faca, esse não é o defeito da faca, mas do seu cérebro. O mesmo aqui. Se o protocolo foi usado da maneira para a qual não foi projetado, não é uma falha do protocolo.
Chamada de Eugene Mayevski em
1
O protocolo foi projetado de forma que o aplicativo em cima dele deve tratá-lo como um soquete normal tanto quanto possível. O problema de renegociação, sem a nova extensão, força a conscientização da camada de aplicativo (por exemplo, HTTP). Há um tópico interessado neste tópico na lista de e-mails da IETF TLS: ietf.org/mail-archive/web/tls/current/msg04000.html
Bruno
1
Concordo que parte disso deve ser feito no nível do aplicativo, mas não tenho conhecimento de nenhuma implementação e o protocolo leva isso em consideração. As pilhas geralmente podem lidar com a renegociação que iniciam legitimamente, mas não tanto se um MITM a iniciar (que é o problema). É por isso que o grupo IETF TLS escolheu consertá-lo no nível TLS, e é também por isso que as pessoas realmente deveriam ativar essa extensão ou desativar a renegociação por completo.
Bruno
1
Existem questões mais fundamentais no SSL 3.0 do que aquela que você mencionou. Ex: oráculo de preenchimento CBC, bem como a reutilização do IV ou do registro anterior. O primeiro ainda prejudica o TLS, mas pode ser contornado, enquanto o último é fixo no TLS 1.1.
Nikos
0

https://hpbn.co/transport-layer-security-tls/ é uma boa introdução

O protocolo SSL foi originalmente desenvolvido na Netscape para permitir a segurança das transações de comércio eletrônico na Web, que exigia criptografia para proteger os dados pessoais dos clientes, bem como garantias de autenticação e integridade para garantir uma transação segura. Para conseguir isso, o protocolo SSL foi implementado na camada de aplicativo, diretamente em cima do TCP (Figura 4-1), permitindo que os protocolos acima dele (HTTP, e-mail, mensagens instantâneas e muitos outros) operem inalterados enquanto fornecem segurança de comunicação quando comunicação através da rede.

Quando SSL é usado corretamente, um observador de terceiros pode apenas inferir os pontos de extremidade da conexão, tipo de criptografia, bem como a frequência e uma quantidade aproximada de dados enviados, mas não pode ler ou modificar nenhum dos dados reais.

SSL 2.0 foi a primeira versão do protocolo lançada publicamente, mas foi rapidamente substituído por SSL 3.0 devido a uma série de falhas de segurança descobertas. Como o protocolo SSL era propriedade da Netscape, a IETF fez um esforço para padronizar o protocolo, resultando na RFC 2246, que foi publicada em janeiro de 1999 e ficou conhecida como TLS 1.0. Desde então, o IETF continuou iterando no protocolo para resolver falhas de segurança, bem como para estender seus recursos: TLS 1.1 (RFC 2246) foi publicado em abril de 2006, TLS 1.2 (RFC 5246) em agosto de 2008 e o trabalho está agora em andamento para definir o TLS 1.3.

Coronel Panic
fonte