SSLv2 e SSLv3 são completamente diferentes (e ambos agora são considerados inseguros). O SSLv3 e o TLSv1.0 são muito semelhantes, mas têm algumas diferenças.
Você poderia considerar o TLSv1.0 como SSLv3.1 (na verdade, é o que acontece nos registros trocados). É mais fácil comparar o TLSv1.0 com TLSv1.1 e TLSv1.2 porque todos foram editados no IETF e seguem mais ou menos a mesma estrutura. SSLv3 sendo editado por uma instituição diferente (Netscape), torna um pouco mais difícil identificar as diferenças.
Aqui estão algumas diferenças, mas duvido que eu possa listar todas elas:
- Na mensagem
ClientHello(primeira mensagem enviada pelo cliente, para iniciar o handshake), a versão é{3,0}para SSLv3,{3,1}para TLSv1.0 e{3,2}para TLSv1.1. - O
ClientKeyExchangedifere. - O MAC / HMAC é diferente (o TLS usa o HMAC, enquanto o SSL usa uma versão anterior do HMAC).
- A derivação da chave é diferente.
- Os dados do aplicativo cliente podem ser enviados diretamente após o envio da mensagem SSL / TLS
Finishedem SSLv3. No TLSv1, ele deve aguardar a mensagemFinisheddo servidor. - A lista de conjuntos de criptografia é diferente (e alguns deles foram renomeados de
SSL_*paraTLS_*, mantendo o mesmo número de ID). - Há também diferenças em relação à nova extensão de renegociação .
Eu recomendo strongmente o livro de Eric Rescorla - SSL e TLS: Projetando e Construindo Sistemas Seguros , Addison-Wesley , 2001 ISBN 0-201-61598-3 , se você realmente quiser mais detalhes. Eu aprendi sobre alguns dos pontos mencionados acima deste livro. O autor ocasionalmente menciona as diferenças entre SSLv3 e TLS (v1.0 apenas no momento em que o livro foi escrito) ao explicar algumas mensagens SSL / TLS, mas você precisa da explicação básica sobre essas mensagens para ter uma chance de entender ( e não é apropriado copiar / colar deste livro aqui).