web-dev-qa-db-fra.com

Quelles sont les différences de niveau de protocole exactes entre SSL et TLS?

Il s'agit d'une plongée technique approfondie après cet aperç question a été posée.

Quelles sont les différences de protocole entre SSL et TLS?
Y a-t-il vraiment assez de différence pour justifier un changement de nom? (par opposition à l'appeler "SSLv4" ou SSLv5 pour les nouvelles versions de TLS)

40
goodguys_activate

SSLv2 et SSLv3 sont complètement différents (et les deux sont désormais considérés comme non sécurisés). SSLv3 et TLSv1.0 sont très similaires, mais présentent quelques différences.

Vous pouvez considérer TLSv1.0 comme SSLv3.1 (en fait, c'est ce qui se passe dans les enregistrements échangés). Il est juste plus facile de comparer les TLSv1. avec TLSv1.1 et TLSv1.2 car ils ont tous été modifiés au sein de l'IETF et suivent plus ou moins la même structure. SSLv3 étant édité par une autre institution (Netscape), il est un peu plus difficile de repérer les différences.

Voici quelques différences, mais je doute que je puisse les énumérer toutes:

  • Dans le message ClientHello (premier message envoyé par le client, pour initier la prise de contact), la version est {3,0} pour SSLv3, {3,1} pour TLSv1.0 et {3,2} pour TLSv1.1.
  • Le ClientKeyExchange diffère.
  • Le MAC/HMAC diffère (TLS utilise HMAC tandis que SSL utilise une version antérieure de HMAC).
  • La dérivation clé diffère.
  • Les données de l'application client peuvent être envoyées immédiatement après l'envoi du message SSL/TLS Finished dans SSLv3. Dans TLSv1, il doit attendre le message Finished du serveur.
  • La liste des suites de chiffrement diffère (et certaines d'entre elles ont été renommées à partir de SSL_* à TLS_*, en gardant le même numéro d'identification).
  • Il existe également des différences concernant la nouvelle extension de renégociation .

Je recommanderais fortement Livre d'Eric Rescorla - SSL et TLS: Conception et construction de systèmes sécurisés , Addison-Wesley, 2001 ISBN 0-201- 61598- , si vous voulez vraiment plus de détails. J'ai appris certains des points mentionnés ci-dessus dans ce livre. L'auteur mentionne occasionnellement les différences entre SSLv3 et TLS (v1.0 uniquement au moment où le livre a été écrit) lors de l'explication d'une partie du message SSL/TLS, mais vous avez besoin des explications générales sur ces messages pour avoir une chance de comprendre ( et il n'est pas approprié de copier/coller de ce livre ici).

36
Bruno

Je vais simplement faire écho aux autres réponses, mais peut-être avec un accent légèrement différent.

Il y avait un protocole de sockets sécurisés qui était "détenu" par Netscape qui était appelé SSL version 2. Une nouvelle version avec une structure d'enregistrement différente et des améliorations de sécurité également "détenues" par Netscape a été publiée et appelée SSL version 3. A l'intérieur du protocole, plusieurs places est un champ de numéro de version binaire. Pour SSL version 3, ce champ est défini sur 0x03 0x00, c'est-à-dire la version 3.0. Ensuite, l'IETF a décidé de créer sa propre norme. Peut-être parce qu'il y avait des incertitudes sur la propriété intellectuelle concernant SSL, notamment si "SSL" était une marque Netscape, lorsque l'IETF a publié la prochaine version de ce protocole, il lui a donné son propre nom: Transport Layer Security protocol ou TLS version 1.0. Le format d'enregistrement et la structure globale sont identiques et cohérents avec SSL v3. Le numéro de version binaire est passé à 0x03 0x01, et comme d'autres l'ont noté, il y a eu quelques changements mineurs de crypto. Il existe depuis TLS version 1.1 et 1.2, pour lesquels les numéros de protocole internes sont 0x03 0x02 et 0x03 0x03.

Ignorant SSLv2, il s'agissait essentiellement d'un changement de nom et d'un réglage de protocole normal qui se produit lorsque les gens deviennent plus intelligents en matière de sécurité et de performances.

Fondamentalement, il ne s'agit que d'un changement de nom pour une version plus récente du protocole. Je crois que la raison principale était de le différencier de l'ancienne norme informelle principalement conçue par Netscape après qu'elle soit devenue un protocole officiel de suivi des normes IETF.

Comme cela a été dit dans les réponses à votre question précédente, cela ne signifie pas que SSLv3 et TLSv1.0 sont compatibles. Citant la RFC 2246:

les différences entre ce protocole et SSL 3.0 ne sont pas dramatiques, mais elles sont suffisamment importantes pour que TLS 1.0 et SSL 3.0 n'interagissent pas.

Je suppose que si vous voulez vraiment connaître les différences exactes dans les protocoles, vous devez lire les normes et vous comparer.

Brouillon de protocole SSLv3 de NetscapeTLSv1.0 RFC 2246

3
Sven

Le protocole de cryptage SSL est désormais nommé TLS, ce qui donne deux noms pour le même protocole. Le logiciel actuel négociera automatiquement TLS version 1 ou SSL version 3. Les humains, d'autre part, doivent décider entre l'utilisation du terme SSL plus reconnaissable par rapport à la désignation TLS officielle.

SSL est le prédécesseur de TLS.

TLS et SSL chiffrent les segments de connexions réseau au niveau de la couche application pour assurer un transit de bout en bout sécurisé au niveau de la couche transport.

0
aleroot