Qual'é a diferença entre SSL, TLS, e HTTPS?

Fico confuso com os termos nesta área. O que é SSL, TLS, e HTTPS? Quais são as diferenças entre eles?

Solução

TLS é o novo nome para SSL. Nomeadamente, o protocolo SSL chegou à versão 3.0; TLS 1.0 é "SSL 3.1". As versões do TLS actualmente definidas incluem o TLS 1.1 e 1.2. Cada nova versão adiciona algumas características e modifica alguns detalhes internos. Por vezes dizemos "SSL/TLS".

HTTPS é HTTP-within-SSL/TLS. SSL (TLS) estabelece um túnel seguro e bidirecional para dados binários arbitrários entre dois hosts. HTTP é um protocolo para enviar pedidos e receber respostas, cada pedido e resposta consiste em cabeçalhos detalhados e (possivelmente) algum conteúdo. HTTP é destinado a correr sobre um túnel bidireccional para dados binários arbitrários; quando esse túnel é uma ligação SSL/TLS, então o todo é chamado "HTTPS".

Para explicar os acrônimos:

  • "SSL" meios "Secure Sockets Layer". Isto foi cunhado pelos inventores das primeiras versões do protocolo, Netscape (a empresa foi mais tarde comprada pela AOL).
  • "TLS" means " Transport Layer Security". O nome foi alterado para evitar qualquer problema legal com o Netscape para que o protocolo pudesse ser " aberto e livre" (e publicado como RFC). Ele também sugere que o protocolo funciona sobre qualquer fluxo bidirecional de bytes, não apenas sobre soquetes baseados na Internet.
  • "HTTPS" é suposto significar " HyperText Transfer Protocol Secure" que é gramaticalmente insensato. Ninguém, a não ser o pedante terminalmente entediado, usa a tradução; "HTTPS" é melhor pensar em "HTTP com um S que significa SSL". Outras siglas de protocolo foram construídas da mesma forma, por exemplo, SMTPS, IMAPS, FTPS... sendo todos eles um protocolo nu que "ficou protegido" executando-o dentro de algum SSL/TLS.
Comentários (8)

SSL e TLS são protocolos que visam fornecer privacidade e integridade de dados entre duas partes (ver RFC 2246), projetados para funcionar sobre um protocolo de comunicação confiável (tipicamente TCP). Embora a especificação TLS não'não fale de sockets, o design do SSL/TLS foi feito para que as aplicações pudessem utilizá-los quase como sockets TCP tradicionais, por exemplo SSLSocket em Java estende Socket (há pequenas diferenças em termos de usabilidade, no entanto). HTTPS é HTTP sobre SSL/TLS, onde a conexão SSL/TLS é estabelecida primeiro, e depois os dados HTTP normais são trocados sobre esta conexão SSL/TLS. Se você usa SSL ou TLS para isso depende da configuração do seu navegador e do servidor (geralmente há uma opção para permitir SSLv2, SSLv3 ou TLS 1.x). Os detalhes de como HTTP e SSL/TLS formam HTTPS estão em RFC 2818. Quanto à diferença entre SSL e TLS, você pode estar interessado nestas duas respostas que escrevi para estas duas perguntas similares sobre StackOverflow e ServerFault:

  • Diferença entre SSL & TLS [StackOverflow]
  • Quais são as diferenças exatas de nível de protocolo entre SSL e TLS? [Falha do servidor]

    Você poderia considerar TLSv1.0 como SSLv3.1 (na verdade isso's o que acontece dentro dos registros trocados). It's apenas mais fácil de comparar o TLSv1.0 com o TLSv1.1 e TLSv1.2 porque eles'foram todos editados dentro do IETF e seguir mais ou menos a mesma estrutura. SSLv3 sendo editado por um instituição diferente (Netscape), o que o torna um pouco mais difícil detectar as diferenças.

    Aqui estão algumas diferenças, mas duvido que as consiga listar todas:

    • Na mensagem ClientHello (primeira mensagem enviada pelo cliente, para iniciar o aperto de mão), a versão é {3,0} para SSLv3, {3,1} para TLSv1.0 e {3,2} para TLSv1.1.
    • O ClientKeyExchange é diferente.
    • O MAC/HMAC difere (o TLS usa HMAC enquanto o SSL usa uma versão anterior do HMAC).
    • A derivação da chave é diferente.
    • O cliente pode enviar dados da aplicação pode ser enviado logo após o envio da mensagem SSL/TLS Finalizado em SSLv3. No TLSv1, deve esperar para o servidor's Mensagem terminada.
    • A lista de suítes de cifras é diferente (e algumas delas foram renomeadas de SSL* para TLS*, mantendo o mesmo número de identificação).
    • Há também diferenças em relação à nova extensão de renegociação. Geralmente, quanto maior a versão ou SSL/TLS, mais segura é, desde que você escolha suas suítes de cifras corretamente também (versões superiores de TLS também oferecem usando suítes de cifras que são consideradas melhores). (SSLv2 é considerado inseguro.) Além disso, o SSL não't se enquadra no escopo da IETF. Por exemplo, a TLS renegociation fix fix teve de ser adaptada para SSLv3 (embora as pilhas SSL/TLS tivessem de ser actualizadas de qualquer forma). Você também pode estar interessado nesta resposta:
  • O que acontece no fio quando uma conexão TLS / LDAP ou TLS / HTTP é configurada?[Stackoverflow] Note que algumas pessoas se opõem ao SSL e ao TLS como sendo a diferença entre "SSL/TLS após a conexão" e "upgrade para TLS" (após alguma conversa usando o protocolo da aplicação). Apesar de algumas destas respostas serem relativamente muito evocadas, isto é incorrecto. Este erro é propagado pelo fato de que certas aplicações, como o Microsoft Outlook, oferecem duas opções de configuração chamadas "SSL" e "TLS" para configuração SMTP/IMAP quando elas realmente significam "SSL/TLS após a conexão" e "atualizar para TLS". (O mesmo vale para a biblioteca JavaMail, eu acho). As RFCs que falam sobre STARTTLS foram escritas quando TLS já era uma RFC oficial, que's por isso elas só falam em atualizar a conexão para TLS. Na prática, se você ajustar a configuração do seu cliente de e-mail para forçá-lo a usar SSLv3 em vez de TLS (não é algo que eu geralmente recomendaria), é provável que ele's ainda seja capaz de atualizar para SSL/TLS usando STARTTLS com uma conexão SSLv3, simplesmente porque ele's é mais sobre o modo de operação do que a versão do SSL/TLS e/ou as suítes de cifras. Há também uma variante do HTTP onde a atualização para SSL/TLS é feita dentro do protocolo HTTP (similar ao STARTTLS em LDAP/SMTP). Isto é descrito em RFC 2817. Até onde eu sei, isto quase nunca é utilizado (e não é o que's o que's utilizado por https:// nos navegadores). A principal parte relevante desta RFC é a seção sobre CONNECT para servidores proxy HTTP (isto é utilizado por servidores proxy HTTP para retransmitir conexões HTTPS).
Comentários (4)

SSL VS TLS

Os termos SSL e TLS são frequentemente utilizados de forma intercambiável ou em conjunto (TLS/SSL), mas um é de facto o predecessor do outro - o SSL 3.0 serviu de base ao TLS 1.0 que, como resultado, é por vezes referido como SSL 3.1.

O que é mais seguro SSL ou TLS

Em termos de segurança, ambos são considerados igualmente seguros.

A principal diferença é que, enquanto as conexões SSL começam com segurança e seguem diretamente para comunicações seguras, as conexões TLS começam com um "olá" inseguro para o servidor e só mudam para comunicações seguras após o aperto de mão entre o cliente e o servidor ser bem sucedido. Se o aperto de mão TLS falhar por qualquer motivo, a conexão nunca é criada.

(SSL e TLS vs HTTP)

O protocolo HTTP é usado para solicitar e receber os dados e https em que o 's' é nada mais que SSL seguro que faz o pedido do protocolo http e recebe a atividade criptografada para que nenhum atacante do meio possa obter os dados facilmente.

Se nem o SSL nem o TLS forem usados com HTTP

então sua conexão com o servidor web é descriptografada, todos os dados serão enviados em texto simples que qualquer atacante do meio possa obter e visualizar esses dados.

portanto, deve ir com SSL ou TLS

Bem, ambos são iguais, mas o TLS é mais extensível e espera obter mais apoio no futuro. e o TLS é compatível com versões anteriores.

Comentários (3)