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

40

Ceci est une plongée technique approfondie après que cette question d’ ensemble ait é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? (versus l'appeler "SSLv4" ou SSLv5 pour les nouvelles versions de TLS)

goodguys_activate
la source
3
Je pense que si vous voulez vraiment comprendre en profondeur, vous allez devoir commencer à lire les spécifications. Consultez la page du wiki . Il comprend des liens vers les RFC et les spécifications.
Zoredache
7
@Zoredache, n'utilisez pas "wiki" pour "Wikipedia".
Spiff

Réponses:

36

SSLv2 et SSLv3 sont complètement différents (et les deux sont maintenant 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 (c'est ce qui se produit dans les enregistrements échangés). Il est simplement plus facile de comparer TLSv1.0 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 d’être en mesure de les énumérer toutes:

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

Je recommanderais vivement le livre d'Eric Rescorla - SSL et TLS: Conception et construction de systèmes sécurisés , Addison-Wesley, 2001 ISBN 0-201-61598-3 , si vous voulez vraiment plus de détails. J'ai appris certains des points mentionnés ci-dessus dans ce livre. L’auteur mentionne parfois les différences entre SSLv3 et TLS (v1.0 uniquement au moment de la rédaction du livre) lorsqu’il explique certains des messages SSL / TLS, mais vous avez besoin des explications d’arrière-plan sur ces messages pour avoir la chance de comprendre ( et il n'est pas approprié de copier / coller de ce livre ici).

Bruno
la source
Il semble que les extensions TLS s'appliquent uniquement à TLS et pas à SSL, n'est-ce pas? Ainsi, par exemple, les clients TLS peuvent envoyer un ' ClientHello' enregistrement étendu , alors que les clients uniquement SSL3 n'enverront jamais que l'original ' ClientHello'.
culix
@culix, de manière générale, c'est effectivement correct (principalement parce que les extensions TLS sont définies dans le cadre de l'IETF). SSLv3 pouvait également avoir des données supplémentaires dans son enregistrement ClientHello (identique à TLS 1.0 et 1.1). (Recherchez draft302.txtet " Dans l'intérêt de la compatibilité ascendante ... ", comparez-le avec les sections 7.4.1.2 des spécifications TLS). Pour faire face aux piles ne prenant pas cela en charge, il existe également des solutions de contournement telles que la suite pseudo-chiffrée SCSV dans l'extension de renégociation.
Bruno
@Bruno, lien de livre en bas .....
Pacerier
4

Je vais juste faire écho aux autres réponses mais peut-être avec une emphase légèrement différente.

Il existait un protocole de sockets sécurisés "appartenant à" Netscape, appelé SSL version 2. Une nouvelle version avec une structure d'enregistrement différente et des améliorations en matière de sécurité, également "possédée" par Netscape, a été publiée et appelée SSL version 3. Plusieurs versions du protocole places est un champ de numéro de version binaire. Pour SSL version 3, ce champ a pour valeur 0x03 0x00, c'est-à-dire la version 3.0. Ensuite, l'IETF a décidé de créer son propre standard. Peut-être en raison de certaines incertitudes concernant la propriété intellectuelle concernant SSL, notamment si "SSL" était une marque commerciale de Netscape, lorsque l'IETF a publié la version suivante de ce protocole, il lui a donné son propre nom: protocole Transport Layer Security ou TLS version 1.0. Le format d'enregistrement et la structure générale sont identiques et cohérents avec SSL v3. Le numéro de version binaire a été revu à 0x03 0x01 et, comme d'autres l'ont noté, quelques modifications mineures de cryptage ont été apportées. Depuis, il existe des versions 1.1 et 1.2 de TLS pour lesquelles les numéros de protocole internes sont 0x03 0x02 et 0x03 0x03.

En ignorant SSLv2, il ne s’agissait en fait que d’un changement de nom et d’un réglage précis du protocole, qui se produit à mesure que les gens deviennent plus intelligents en matière de sécurité et de performances.

James réintègre Monica Polk
la source
3

Fondamentalement, il s’agit d’un simple changement de nom pour une version plus récente du protocole. Je pense que la raison principale était de le différencier de l’ancien standard informel, conçu principalement par Netscape après que ce soit devenu 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 le RFC 2246:

les différences entre ce protocole et SSL 3.0 ne sont pas dramatiques, mais elles sont suffisamment significatives 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 entre les protocoles, vous devez lire les normes et vous comparer.

Projet de protocole SSLv3 de Netscape TLSv1.0 RFC 2246

Sven
la source
@SvenW Je comparerais moi-même mais c'est un gros défi que je ne suis pas sûr de vouloir entreprendre. Cette norme existe depuis 10 ans maintenant. Sûrement quelqu'un a déjà fait la comparaison, avec de jolis graphismes pour que des gars comme moi puissent le comprendre.
goodguys_activate
@ MakerOfThings7 Malheureusement, cette question ne se résume pas à un diagramme à secteurs. Les seuls éléments pouvant figurer sur un graphique sont les débits binaires de chiffrement ou (et j'étire ici) le niveau de sécurité accordé (où SSLv3 est "-" et TLS est "=" ...). être gagné peut être obtenu en lisant les spécifications, ou au moins la page Wikipedia (que je vous ai fournie à la question précédente.)
gWaldo le
@SvenW Avez-vous lu et compris les deux spécifications vous-même?
goodguys_activate
Non pourquoi devrais-je? Je ne suis pas un développeur qui écrit un logiciel contre cette spécification, ce qui est à peu près la seule raison pour laquelle je puisse penser. Si j'ai besoin d'utiliser SSL / TLS, je lis la documentation pour OpenSSL, etc., qui est suffisante pour les utilisateurs et les administrateurs.
Sven
@SvenW Aucune infraction, mais je vais garder cela ouvert jusqu'à ce que je reçoive une réponse de quelqu'un qui a lu et compris les spécifications ... ce qui est raisonnable compte tenu de ma question.
goodguys_activate
0

Le protocole de cryptage SSL s'appelle maintenant 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, en revanche, doivent choisir entre le terme SSL plus reconnaissable et la désignation officielle TLS.

SSL est le prédécesseur de TLS.

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

aleroot
la source
C'est donc un changement de nom? C'est ça?
goodguys_activate
oui TLS est la version la plus récente, TLS peut se transformer en SSL3 si nécessaire.
Aleroot
3
Non, ce n'est pas vraiment un changement de nom. TLSv1 est interopérable avec SSLv3 (et se repliera), mais ce n'est pas nécessairement vrai dans l'autre sens. TLSv1 est comme SSLv4. Remarque: il existe également plusieurs versions de TLS.
Philip Reynolds
-2

Différences:

  • TLS fonctionne assez bien sur un protocole standard. Une connexion TLS commence comme une session non chiffrée d'un service standard, mais à un moment donné, ils commencent à négocier le chiffrement. Cela nécessite d'étendre le protocole standard pour cette négociation.
  • Les protocoles standard s'exécutent sur SSL. Une connexion SSL négocie d'abord le chiffrement, puis exécute le protocole de base par dessus.
LatinSuD
la source
Ce n'est pas correct, vous parlez de la différence entre commencer avec SSL / TLS et passer à TLS dans le protocole via des commandes telles que STARTTLS: stackoverflow.com/questions/3660798/…
Bruno